0

作爲我們解決方案的一部分,我們在每個客戶站點部署FCM「應用服務器」。每個客戶網站都需要生成他們自己的發件人ID和服務器ID以供我們的應用使用。多個FCM發件人:以編程方式在移動應用上加載發件人ID和服務器密鑰

默認的FCM實現將發件人ID和服務器密鑰放入一個plist(iOS)/ json(Android),它在編譯時集成到應用程序代碼中。但是,由於我們有多個當前客戶並且會有新客戶,因此我們的移動應用程序需要能夠向客戶App Server發出服務呼叫,檢索發件人ID和服務器密鑰,並在運行時將其加載到FCM中。

我們已經看到了一些關於getToken的文檔,可以完成多個發件人的註冊,但我們只需要註冊一個發件人並完全繞過plist/json。

問題:我們如何以編程方式加載發件人ID和服務器密鑰,而不是使用GoogleService-Info.plist(iOS)/ google-services.json(Android)。

欲瞭解更多的上下文,這裏是我們最近的相關question about security爲相同的工作流程。

回答

3

地方這是在編譯時集成到應用程序代碼中的發件人ID和服務器密鑰在plist中(IOS)/ JSON(安卓)

有無處您包含服務器密鑰的客戶端應用程序。就像名稱所暗示的那樣,服務器密鑰保留在App Server端。您從Firebase控制檯獲取的json/plist文件中包含的唯一發件人ID是項目的發件人ID。 FCM不使用google-services.json文件中的任何類型的API密鑰(請參閱我的回答here)。

我們如何編程方式加載,而不是使用GoogleService-Info.plist中(IOS)/谷歌services.json(安卓)發件人ID和服務器密鑰。

註冊新服務器時,您只需要發件人ID。然後只需撥打getToken(authorizedEntity, scope)即可。通過實現一個功能,可以從App Server端獲取有效發件人列表,然後在客戶端獲得副本(如果包含新發件人),請將您的應用程序授權作爲有效發件人。

+0

那麼我們可以跳過將json/plist文件添加到移動應用程序項目嗎?看起來沒有必要......特別是因爲我們需要爲多個項目調用「getToken」。 – user1727021

+1

我還沒有嘗試過自己,但根據[這篇文章](http://stackoverflow.com/a/33083898/4625829),這是可能的,只要你能夠提供所需的ID應用程序(如默認的發件人ID)。 –

+1

哇,精彩的發現。謝謝@AL。 – user1727021

相關問題