作为我们解决方案的一部分,我们在每个客户站点部署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。
答案 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端获取有效发件人列表然后在客户端获得副本的函数来实现,如果包含新发件人,则让您的应用授权它是一个有效的发件人。