正文引见了“在iOS中领会及时长途摆设的完备记载”的常识。很多人在本质案例的操纵中会遇到如许的艰巨。让边肖率领你进修怎样处置那些情景。蓄意大师刻意观赏,学点货色!

当您须要赶快推出长途摆设变动时,我该如何办?大概您上回所做的变动不可功,您蓄意尽量废除那些变动。大概你的运用步调有题目,须要禁止使用所有功效。

更一再地挪用fetchwithexpirmationduration:completionhandler:是一种本领(到时功夫更短),但Firebase不激动如许做。你冒着被下架的危害。

即使您须要使长途摆设缓存失效,而不是对短到时功夫举行硬源代码,该如何办?与其重复诉求效劳器革新,不如让效劳器报告您变动。Firebase长途摆设此刻与云功效集成在一道,所以它不妨在摆设颁布或回滚时触发实行。这表示着您不妨让一个因变量向您的运用步调发送一个寂静推送报告,让它领会摆设仍旧变动。

分析iOS中的实时远程配置全纪录 第1张

当在AppDelegate中触发回调时,不会向用户表露寂静推送报告。经过将选项content_available树立为true,您以至不妨让iOS在推送报告达到时在后盾启用您的运用步调(或回复它)。一个题目:即使用户手动杀死它,iOS将没辙在后盾启用您的运用步调。这将连接到下一次从新启用(第一次解锁后)。除此除外,你没有其余题目了。

这个进程不妨归纳为:

将运用步调订阅到Firebase云动静中心创造长途摆设变动爆发时触发的云功效在AppDelegate中处置寂静推送报告会使长途摆设缓存鄙人次启用时作废。

怎样树立Firebase云动静胜过了正文的范畴,然而文书档案是一个很好的开始。

1.订阅到中心

推送报告启用并运转后,咱们须要向运用步调订阅该中心。咱们将全力于长途摆设。

Messaging.messaging()。订阅(Totopic : REMOTE_CONFIG ){ if let缺点=缺点{ debugPrint( 没辙订阅REMOTE _ CONFIG中心,缺点)}}

2.创造云效劳。

云因变量不过一个Node.js剧本,以是你须要在你的电脑上运用Node.js。撰写正文时,Cloud Functions扶助Node v6或Node v8,个中v6是默许的。

赢得Node.js后,开始安置Firebase CLI。

npm安置-g firebase-东西

而后运用吩咐行界面东西举行身份考证。

firebase登录

此刻为这个因变量创造一个文献夹,cd到内里,初始化Firebase名目。

firebase init因变量

这将启用吩咐行界面引导。实行它,你就筹备好了。

是功夫增添云功效了,它将向REMOTE_CONFIG通道发送寂静推送报告。在新创造的项手段因变量目次中,您将找到index.js翻开它,并用以次实质替代它:

const functions=require( firebase-functions );const admin=require( firebase-admin );admin . initializeapp(functions . config()。火基);exports . pushconfig=functions . REMOTE CONFIG . ONU update(version metadata={//Create FCM灵验负载将数据动静发送给REMOTE_CONFIG中心。const payload={ data : { CONFIG _ STATE : STATE } };const options={ content _ available : true };//运用处置软硬件开拓东西包经过FCM发送ping吩咐。归来处置员。动静传播()。sendtopic( REMOTE _ CONFIG ,灵验负载,选项)。而后(相应={ console.log(相应);归来null});});

咱们运用报告来传播带有密钥CONFIG_STATE的灵验载荷。这将向您的运用步调发出长途摆设数据已变动的旗号。如有需要,选项content_available对于iOS回复运用步调或在后盾启用运用步调是需要的。

此刻该功效仍旧就位,咱们不妨将其安置到Firebas。

e,再不它不妨运转。

firebase deploy only functions

这将安置到firebase init因变量中采用的Firebase名目。要安置到另一个名目,开始运用firebase运用 add增添它。增添后,您不妨运用my-project-alias切换运转firebase的名目。

3.处置长途推送

咱们须要在AppDelegate中实行本领:didReceiveRemoteNotification:fetchCompletionHandler:来处置传入的推送报告。即使userInfo字典有密钥CONFIG_STATE(咱们增添到报告灵验负载的谁人),那么它即是咱们正在探求的报告。

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (_: UIBackgroundFetchResult) - Void) { if userInfo[ CONFIG_STATE ] != nil {  UserDefaults.standard.set(true, forKey: CONFIG_STATE )  UserDefaults.standard.synchronize() } completionHandler(UIBackgroundFetchResult.newData)}

这边很简单挪用fetchWithExpirationDuration:completionHandler:具备特殊少的到时功夫,再不在其时检索革新的值。但如许做会使一切报告的运用范例在大概沟通的功夫乞求新值。这很大概会使运用遭到控制,所以咱们会将其延迟到下一次颁布。

4. 使长途摆设缓存失效

咱们只须要将标记生存到UserDefaults并在获得Remote Config值之进步行查看。

var expirationDuration: TimeInterval = 43200 // 12hs of cache by defaultif UserDefaults.standard.bool(forKey: CONFIG_STATE ) { UserDefaults.standard.set(false, forKey: CONFIG_STATE ) UserDefaults.standard.synchronize() expirationDuration = 0}RemoteConfig.fetch(withExpirationDuration: expirationDuration) { [weak self] status, error in RemoteConfig.remoteConfig().activateFetched()}

即使摆设已落伍,咱们将经过将到时连接功夫树立为0来绕过缓存。这将强迫实行一次实足从新加载,而不用等候缓存过时。

这即是一切的树立。此刻转到“长途摆设”面板并颁布变动。而后察看“功效”选项卡。

分析iOS中的实时远程配置全纪录 第2张

“领会iOS中的及时长途摆设全记录”的实质就引见到这边了,感动大师的观赏。即使想领会更多行业关系的常识不妨关心网站,小编将为大师输入更多高品质的适用作品!