在两个Firebase项目的一个android应用程序上接收推送通知



我有一个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

我在实现已接受的答案时遇到了一些问题,因此,当我找到一个强大的解决方案时,我继续尝试自己完成。我在这里详细分享了解决方案。

相关内容

最新更新