真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

分析iOS中的實(shí)時遠(yuǎn)程配置全紀(jì)錄

本篇內(nèi)容介紹了“分析iOS中的實(shí)時遠(yuǎn)程配置全紀(jì)錄”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比威信網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式威信網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋威信地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

前言

當(dāng)您需要快速推出遠(yuǎn)程配置更改時該怎么辦?也許你做的上次更改沒有成功,你想盡快撤消它們?;蛘吣膽?yīng)用中出現(xiàn)了問題,您需要禁用整個功能。

更頻繁地調(diào)用fetchWithExpirationDuration:completionHandler: (具有較少的到期時間)是一種方法,但Firebase不鼓勵這樣做。你冒著被下架的風(fēng)險。

如果您需要使遠(yuǎn)程配置緩存無效,而不必對短暫的到期時間進(jìn)行硬編碼,該怎么辦?而不是反復(fù)詢問服務(wù)器更新,讓服務(wù)器在有更改時通知您。 Firebase遠(yuǎn)程配置現(xiàn)在與云功能集成,因此可以在配置發(fā)布或回滾時觸發(fā)執(zhí)行。這意味著您可以讓一個函數(shù)向您的應(yīng)用發(fā)送靜默推送通知,讓它知道配置已更改。

在AppDelegate中觸發(fā)回調(diào)時,不會向用戶顯示靜默推送通知。通過將選項(xiàng)content_available設(shè)置為true,您甚至可以在推送通知到達(dá)時讓iOS在后臺啟動您的應(yīng)用程序(或恢復(fù)它)。一個問題:如果用戶手動殺死它,iOS將無法在后臺啟動您的應(yīng)用程序。這將持續(xù)到下次重新啟動(第一次解鎖后)。除此之外,你沒有其他問題了。

實(shí)現(xiàn)

這個過程歸結(jié)為:

將應(yīng)用程序訂閱到Firebase Cloud Messaging主題創(chuàng)建在遠(yuǎn)程配置更改時觸發(fā)的云功能處理AppDelegate中的靜音推送通知在下次啟動時使遠(yuǎn)程配置緩存無效

如何設(shè)置Firebase云消息傳遞超出了本文的范圍,但文檔是一個很好的起點(diǎn)。

1.訂閱到主題

推送通知啟動并運(yùn)行后,我們需要將應(yīng)用訂閱到主題。我們將專門用于遠(yuǎn)程配置。

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

2.創(chuàng)建一個云服務(wù)

Cloud Function只是一個Node.js腳本,因此您需要在您的計(jì)算機(jī)上使用Node.js.在撰寫本文時,Cloud Functions支持Node v6或Node v8,其中v6是默認(rèn)值。

獲得Node.js后,首先安裝Firebase CLI。

npm install -g firebase-tools

然后使用CLI工具進(jìn)行身份驗(yàn)證。

firebase login

現(xiàn)在為函數(shù)創(chuàng)建一個文件夾,cd進(jìn)入它并初始化Firebase項(xiàng)目。

firebase init functions

這將啟動CLI向?qū)?。完成它,你就?zhǔn)備好了。

是時候添加將向REMOTE_CONFIG通道發(fā)送靜默推送通知的云功能。在新創(chuàng)建的項(xiàng)目的函數(shù)目錄中,您將找到index.js。打開它并用以下內(nèi)容替換內(nèi)容:

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;  });});

我們使用通知來傳遞帶有密鑰CONFIG_STATE的有效負(fù)載。這將向您的應(yīng)用發(fā)出遠(yuǎn)程配置數(shù)據(jù)已更改的信號。如有必要,選項(xiàng)content_available是必要的,以使iOS恢復(fù)應(yīng)用程序或在后臺啟動它。

現(xiàn)在該功能已經(jīng)到位,我們可以將其部署到Firebase,以便它可以運(yùn)行。

firebase deploy --only functions

這將部署到firebase init函數(shù)中選擇的Firebase項(xiàng)目。要部署到另一個項(xiàng)目,首先使用firebase使用--add添加它。添加后,您可以使用my-project-alias切換運(yùn)行firebase的項(xiàng)目。

3.處理遠(yuǎn)程推送

我們需要在AppDelegate中實(shí)現(xiàn)方法:didReceiveRemoteNotification:fetchCompletionHandler:來處理傳入的推送通知。如果userInfo字典有密鑰CONFIG_STATE(我們添加到通知有效負(fù)載的那個),那么它就是我們正在尋找的通知。

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)}

這里很容易調(diào)用fetchWithExpirationDuration:completionHandler:具有非常少的到期時間,以便在那時檢索更新的值。但這樣做會使所有通知的應(yīng)用實(shí)例在大致相同的時間請求新值。這很可能會使應(yīng)用受到限制,因此我們會將其推遲到下一次發(fā)布。

4. 使遠(yuǎn)程配置緩存無效

我們只需要將標(biāo)志保存到UserDefaults并在獲取Remote Config值之前進(jìn)行檢查。

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()}

如果配置已過時,我們將通過將到期持續(xù)時間設(shè)置為0來繞過緩存。這將強(qiáng)制執(zhí)行一次完全重新加載,而不必等待緩存過期。

這就是所有的設(shè)置。現(xiàn)在轉(zhuǎn)到“遠(yuǎn)程配置”面板并發(fā)布更改。然后查看“功能”選項(xiàng)卡。

“分析iOS中的實(shí)時遠(yuǎn)程配置全紀(jì)錄”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


當(dāng)前題目:分析iOS中的實(shí)時遠(yuǎn)程配置全紀(jì)錄
文章分享:http://weahome.cn/article/ihisoe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部