【问题标题】:Receive push notifications on one android app from two Firebase projects接收来自两个 Firebase 项目的一个 Android 应用的推送通知
【发布时间】:2017-06-26 08:02:07
【问题描述】:

我有一个 Android 应用,我希望它能够接收来自两个不同 Firebase 项目的推送通知。

我阅读了博客“在 Android 应用程序中处理多个 Firebase 项目”https://firebase.googleblog.com/2016/12/working-with-multiple-firebase-projects-in-an-android-app.html,其中谈到了“从两个不同的 Firebase 项目访问数据库”。
但是,没有关于从多个 Firebase 项目接收通知的信息。

那么,如何将我的应用与多个 Firebase 项目集成并接收来自它们的推送通知?

【问题讨论】:

标签: android firebase push-notification firebase-cloud-messaging


【解决方案1】:

documentation中其实有一部分关于这个话题:

接收来自多个发件人的消息

FCM 允许多方向同一个客户端应用发送消息。例如,假设客户端应用程序是具有多个贡献者的文章聚合器,并且每个贡献者都应该能够在发布新文章时发送消息。此消息可能包含一个 URL,以便客户端应用程序可以下载该文章。 FCM 无需将所有发送活动集中在一个位置,而是让您能够让这些贡献者中的每一个发送自己的消息。

为此,请确保每个发件人都生成自己的sender ID。有关如何获取 FCM 发件人 ID 的信息,请参阅您平台的客户端文档。请求注册时,客户端应用会多次获取令牌,每次在受众字段中使用不同的发件人 ID。

最后,与相应的应用服务器共享注册令牌(以完成 FCM 注册客户端/服务器握手),它们将能够使用自己的身份验证密钥向客户端应用发送消息。

请注意,有 100 个多个发件人的限制。

我认为这里令人困惑但重要的部分是:

在请求注册时,客户端应用会多次获取令牌,每次在受众字段中使用不同的发件人 ID。

换句话说,您必须调用 getToken() 并传递发件人 ID 和简单的 "FCM"(例如 getToken("2xxxxx3344", "FCM"))作为参数。您必须确保为您需要的每个发件人(项目)调用它。

另外,请注意getToken() 文档:

这是一个阻塞函数,所以不要在主线程上调用它。

一些额外的知识:

  • 如果它像默认的那样失败,它不会自动重试。
  • 失败时返回 IOException。

【讨论】:

  • 在我看来,它已经覆盖了我想主要用于所有内容的配置。这不是我想要达到的目标。
  • @AL。这必须是调用回调onNewToken(String token) 时的方法,rt?我相信这个问题与完整实现的原始问题有关。在 GCM 的情况下,here 用示例代码清楚地提到了同样的问题。但是,FCM 的任何官方文档中都没有明确提及。你有任何官方链接可以回答我的问题吗?
  • @garnet onNewToken()new counterpart for onTokenRefresh(),与 getToken() 不同。
  • @AL.,是的,我知道。我担心的是,要完全回答所提出的问题,答案应该解释如何处理您提到的onNewToken(String token) 或 onTokenRefresh。请参考我之前关于 GCM 示例代码官方链接的评论。
  • @garnet 您提供的示例链接是可用的确切文档。 InstanceId 服务与 FirebaseInstanceId 服务使用的服务相同。干杯!
【解决方案2】:

我在实施已接受的答案时遇到了一些问题,因此当我找到一个可靠的解决方案时,我继续尝试自己去做。我已经详细分享了那里的解决方案here

【讨论】:

    猜你喜欢
    • 2018-02-26
    • 2018-06-21
    • 2021-11-10
    • 2019-04-23
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多