首页 > 系统 > iOS > 正文

iOS中的实时远程配置全纪录

2020-07-28 14:55:13
字体:
来源:转载
供稿:网友

前言

当您需要快速推出远程配置更改时该怎么办?也许你做的上次更改没有成功,你想尽快撤消它们。或者您的应用中出现了问题,您需要禁用整个功能。

更频繁地调用fetchWithExpirationDuration:completionHandler: (具有较少的到期时间)是一种方法,但Firebase不鼓励这样做。你冒着被下架的风险。

如果您需要使远程配置缓存无效,而不必对短暂的到期时间进行硬编码,该怎么办?而不是反复询问服务器更新,让服务器在有更改时通知您。 Firebase远程配置现在与云功能集成,因此可以在配置发布或回滚时触发执行。这意味着您可以让一个函数向您的应用发送静默推送通知,让它知道配置已更改。

在AppDelegate中触发回调时,不会向用户显示静默推送通知。通过将选项content_available设置为true,您甚至可以在推送通知到达时让iOS在后台启动您的应用程序(或恢复它)。一个问题:如果用户手动杀死它,iOS将无法在后台启动您的应用程序。这将持续到下次重新启动(第一次解锁后)。除此之外,你没有其他问题了。

实现

这个过程归结为:

将应用程序订阅到Firebase Cloud Messaging主题 创建在远程配置更改时触发的云功能 处理AppDelegate中的静音推送通知 在下次启动时使远程配置缓存无效

如何设置Firebase云消息传递超出了本文的范围,但文档是一个很好的起点。

1.订阅到主题

推送通知启动并运行后,我们需要将应用订阅到主题。我们将专门用于远程配置。

Messaging.messaging().subscribe(toTopic: "REMOTE_CONFIG") { error in if let error = error {  debugPrint("Could not subscribe to Remote Config topic", error) }}

2.创建一个云服务

Cloud Function只是一个Node.js脚本,因此您需要在您的计算机上使用Node.js.在撰写本文时,Cloud Functions支持Node v6或Node v8,其中v6是默认值。

获得Node.js后,首先安装Firebase CLI。

npm install -g firebase-tools

然后使用CLI工具进行身份验证。

firebase login

现在为函数创建一个文件夹,cd进入它并初始化Firebase项目。

firebase init functions

这将启动CLI向导。完成它,你就准备好了。

是时候添加将向REMOTE_CONFIG通道发送静默推送通知的云功能。在新创建的项目的函数目录中,您将找到index.js。打开它并用以下内容替换内容:

const functions = require('firebase-functions');const admin = require('firebase-admin');​admin.initializeApp(functions.config().firebase);​exports.pushConfig = functions.remoteConfig.onUpdate(versionMetadata => { // Create FCM payload to send data message to REMOTE_CONFIG topic. const payload = {  data: {   CONFIG_STATE: 'STALE'  } };​ const options = {  content_available: true };​ // Use the Admin SDK to send the ping via FCM. return admin  .messaging()  .sendToTopic('REMOTE_CONFIG', payload, options)  .then(response => {   console.log(response);     return null;  });});
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表