多个FCM发件人:以编程方式在移动应用程序上加载发件人ID和服务器密钥

时间:2017-04-25 15:52:18

标签: firebase google-cloud-messaging apple-push-notifications firebase-cloud-messaging google-play-services

作为我们解决方案的一部分,我们在每个客户站点部署FCM“app server”。每个客户站点都需要生成自己的发件人ID和服务器ID,以便与我们的应用程序一起使用。

默认的FCM实现将发件人ID和服务器密钥放在plist(iOS)/ json(Android)中,它在编译时集成到应用程序代码中。但是,由于我们有多个当前客户并且将拥有新客户,因此我们的移动应用程序需要能够向客户App Server发出服务调用,检索发件人ID和服务器密钥,并在运行时将这些内容加载到FCM中。

我们已经看到围绕getToken的一些文档来完成向多个发件人注册,但我们只需要注册1个发件人并完全绕过plist / json。

问题:我们如何以编程方式加载发件人ID和服务器密钥,而不是使用GoogleService-Info.plist(iOS)/ google-services.json(Android)。

有关更多背景信息,请参阅我们最近对相同工作流程的相关question about security

1 个答案:

答案 0 :(得分:3)

  

将发件人ID和服务器密钥放置在plist(iOS)/ json(Android)中,并在编译时集成到应用程序代码中

您的客户端应用程序中没有任何地方包含服务器密钥。顾名思义,服务器密钥保存在App Server端。您从Firebase控制台获取的json / plist文件中包含的唯一发件人ID是项目的发件人ID。 FCM不使用google-services.json文件中的任何类型的API密钥(请参阅我的回答here)。

  

我们如何以编程方式加载发件人ID和服务器密钥,而不是使用GoogleService-Info.plist(iOS)/ google-services.json(Android)。

注册新服务器时,您只需要发件人ID。然后只需致电getToken(authorizedEntity, scope)。这可以通过实现从App Server端获取有效发件人列表然后在客户端获得副本的函数来实现,如果包含新发件人,则让您的应用授权它是一个有效的发件人。