我有一个Android应用程序,我希望它能够接收来自两个不同Firebase项目的推送通知。
我读过博客"在Android应用程序中处理多个Firebase项目"https://firebase.googleblog.com/2016/12/working-with-multiple-firebase-projects-in-an-android-app.html其中谈到"从两个不同的Firebase项目访问数据库">
但是,没有关于接收来自多个Firebase项目的通知的信息。
那么,如何将我的应用程序与多个Firebase项目集成,并从中接收推送通知呢?
文档中实际上有一部分是关于这个主题的:
接收来自多个发送者的消息
FCM允许多方向同一客户端应用程序发送消息。例如,假设客户端应用程序是一个有多个贡献者的文章聚合器,每个贡献者在发布新文章时都应该能够发送消息。此消息可能包含一个URL,以便客户端应用程序可以下载文章。FCM不必将所有发送活动集中在一个位置,而是让每个参与者发送自己的消息。
要做到这一点,请确保每个发件人都生成自己的发件人ID。有关如何获取FCM发件人ID的信息,请参阅您平台的客户端文档。在请求注册时,客户端应用程序会多次获取令牌,每次都在受众字段中使用不同的发件人ID。
最后,与相应的应用程序服务器共享注册令牌(以完成FCM注册客户端/服务器握手),他们将能够使用自己的身份验证密钥向客户端应用程序发送消息。
请注意,有100个多发件人的限制。
我认为这里令人困惑但重要的部分是:
在请求注册时,客户端应用程序多次获取令牌,每次都在访问群体字段中使用不同的发件人ID。
换句话说,您必须调用getToken()
,并传递Sender ID和简单的"FCM"
(例如getToken("2xxxxx3344", "FCM")
)作为参数。您必须确保为所需的每个发件人(项目)调用此项。
此外,请注意getToken()
文档:
这是一个阻塞函数,所以不要在主线程上调用它。
一些额外的好消息:
- 如果失败,它不会像默认的那样自动重试
- 失败时返回IOException
我在实现已接受的答案时遇到了一些问题,因此,当我找到一个强大的解决方案时,我继续尝试自己完成。我在这里详细分享了解决方案。