亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS中的實時遠程配置全紀錄

2020-07-26 02:22:03
字體:
來源:轉載
供稿:網友

前言

當您需要快速推出遠程配置更改時該怎么辦?也許你做的上次更改沒有成功,你想盡快撤消它們?;蛘吣膽弥谐霈F了問題,您需要禁用整個功能。

更頻繁地調用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;  });});

我們使用通知來傳遞帶有密鑰CONFIG_STATE的有效負載。這將向您的應用發出遠程配置數據已更改的信號。如有必要,選項content_available是必要的,以使iOS恢復應用程序或在后臺啟動它。

現在該功能已經到位,我們可以將其部署到Firebase,以便它可以運行。

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 default​if 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來繞過緩存。這將強制執行一次完全重新加載,而不必等待緩存過期。

這就是所有的設置?,F在轉到“遠程配置”面板并發布更改。然后查看“功能”選項卡。它應該如下所示:

日志應該注冊成功執行:

總結

避免輪詢Firebase服務器以進行遠程配置更新的一種方法是讓云功能在發布更改時向您的應用發送靜默推送通知。然后,應用程序可以使遠程配置緩存無效,并在下次啟動時請求新值。但要注意,手動關閉應用程序的用戶在重新啟動和解鎖手機之前不會收到這些推送通知。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品亚洲一区二区三区四区五区| 欧美成人精品三级在线观看| 2019中文字幕在线免费观看| 国产精品久久久久不卡| 蜜臀久久99精品久久久无需会员| 亚洲最大在线视频| 国产精品一区二区久久久| 国产不卡av在线| 欧美激情乱人伦| 精品久久国产精品| 久久中文字幕在线视频| 日韩一区二区av| 国产97人人超碰caoprom| 精品久久久久久久久久国产| 国产成人涩涩涩视频在线观看| 亚洲成人精品久久| 91精品国产综合久久久久久久久| 国产精品国产三级国产专播精品人| 成人免费福利视频| 97在线免费观看| 国产亚洲精品久久久久久牛牛| 91免费国产视频| 国产精品视频一| 成人免费在线视频网站| 综合激情国产一区| 久久中文字幕视频| 欧美又大又硬又粗bbbbb| 亚洲精品福利在线观看| 亲爱的老师9免费观看全集电视剧| 97精品国产97久久久久久免费| 亚洲午夜性刺激影院| 亚洲天堂成人在线视频| 久久精品91久久香蕉加勒比| 欧美黑人又粗大| 精品动漫一区二区| 亚洲黄色有码视频| 久久国产精品久久久久久| 精品久久久一区二区| 久久天天躁狠狠躁夜夜爽蜜月| 国产综合在线看| 欧美大码xxxx| 日韩一区av在线| 亚洲精品国产综合久久| 久久久av免费| 久久免费视频这里只有精品| 欧美电影免费观看网站| 久久久久久午夜| 久久免费精品视频| 欧美激情视频网站| 秋霞成人午夜鲁丝一区二区三区| 亚洲国产成人在线视频| 国产精品久久电影观看| 亚洲片在线观看| 久久韩国免费视频| 久久av红桃一区二区小说| 久久人91精品久久久久久不卡| 欧美性极品少妇精品网站| 成人免费视频a| 精品综合久久久久久97| 国产精品色午夜在线观看| xxxx欧美18另类的高清| 爱福利视频一区| 日韩欧美国产免费播放| 亚洲国产日韩欧美在线动漫| 久久久精品2019中文字幕神马| 欧美高清视频免费观看| 亚洲国产精久久久久久久| 日韩成人激情在线| 国内精品中文字幕| 欧美成年人视频网站欧美| 国产精品精品视频| 大量国产精品视频| 成人免费淫片视频软件| 亚洲精品99999| 狠狠爱在线视频一区| 欧美日韩日本国产| 欧美日韩国产999| 97超级碰在线看视频免费在线看| 亚洲国产天堂网精品网站| 日韩电视剧在线观看免费网站| 国产精品精品一区二区三区午夜版| 国产精品白嫩美女在线观看| 亚洲区在线播放| 精品国产一区二区三区久久狼黑人| 成人午夜黄色影院| 高清日韩电视剧大全免费播放在线观看| 日韩国产欧美精品一区二区三区| 亚洲jizzjizz日本少妇| 亚洲日韩第一页| 国内揄拍国内精品| 欧美日韩在线另类| 亚洲人成在线免费观看| 国产成人在线亚洲欧美| 日韩欧美在线中文字幕| 国产精品丝袜久久久久久不卡| 91高清免费视频| 在线日韩欧美视频| 久99久在线视频| 亚洲欧洲黄色网| 色综合色综合网色综合| 日韩中文字幕在线看| 欧美夫妻性生活视频| 欧美性猛交xxxx| 成人激情免费在线| 国产精品96久久久久久又黄又硬| 一区二区欧美在线| 日韩av电影中文字幕| 日本免费一区二区三区视频观看| 亚洲自拍av在线| 久久久久久成人精品| 国内成人精品视频| 国内精品国产三级国产在线专| 亚洲xxxxx电影| 国产精品成人在线| 午夜美女久久久久爽久久| 欧美贵妇videos办公室| 久久国产天堂福利天堂| 55夜色66夜色国产精品视频| 成人欧美在线观看| 精品国产户外野外| 欧美日韩国内自拍| 久久夜色精品亚洲噜噜国产mv| 欧美日韩国产一区在线| 亚洲va欧美va国产综合剧情| 日韩av手机在线| 午夜剧场成人观在线视频免费观看| 国产精品久久久久国产a级| 亚洲美女性生活视频| 伊人久久大香线蕉av一区二区| 日韩中文字幕在线视频播放| 91精品视频在线播放| 欧美贵妇videos办公室| 国产z一区二区三区| 精品香蕉一区二区三区| 成人激情春色网| 日韩一中文字幕| 国产精品电影在线观看| 亚洲国产成人精品久久久国产成人一区| 欧美理论电影在线播放| 国产精品久久久久久一区二区| 亚洲黄色免费三级| 欧美视频在线看| 97视频国产在线| 国产成人欧美在线观看| 日韩色av导航| 精品久久久av| 日韩人在线观看| 亚洲a级在线播放观看| 欧美影院在线播放| 亚洲人精品午夜在线观看| 亚洲va久久久噜噜噜久久天堂| 91久久在线观看| 亚洲激情中文字幕| 国产精品日韩在线观看| 欧美成人网在线| 国产日韩在线播放| 91九色在线视频| 国产性猛交xxxx免费看久久| 91成人性视频| 欧美日韩第一页| www国产亚洲精品久久网站| 久久久亚洲欧洲日产国码aⅴ| 91久久久在线| 国产欧美日韩专区发布|