前言
當您需要快速推出遠程配置更改時該怎么辦?也許你做的上次更改沒有成功,你想盡快撤消它們。或者您的應用中出現了問題,您需要禁用整個功能。
更頻繁地調用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; });});
新聞熱點
疑難解答