订阅来自两个不同 Firebase 项目的主题

Posted

技术标签:

【中文标题】订阅来自两个不同 Firebase 项目的主题【英文标题】:Subscribe to Topic from Two Different Firebase Projects 【发布时间】:2017-05-10 09:57:07 【问题描述】:

我有一个 android 库项目 com.random.lib 和一个 Android 应用程序项目 com.random.appcom.random.app 正在使用库 com.random.lib。 我在手机上安装了com.random.app

com.random.lib在Firebase项目FireLib中注册,而应用程序com.random.app也有自己的Firebase项目FireApp

com.random.lib 正在订阅FireLib 中的awesome 主题。

FirebaseMessaging.getInstance().subscribeToTopic("awesome");

com.random.app 正在订阅FireApp 中的random 主题。

FirebaseMessaging.getInstance().subscribeToTopic("random");

但是,当我尝试从FireLib 控制台向awesome 主题推送消息时,我的手机没有收到推送。当我从FireApp控制台向random主题推送新消息时,我的手机成功接收到推送。

Q:如果FireLib发送消息,如何接收awesome主题的推送消息?

我遇到了this solution,我尝试使用 FCM 注册令牌直接向单个设备发送推送消息,并且它可以正常工作(我的手机确实收到了来自两个 Firebase 项目的推送消息)。但这不是我想要的,因为我需要根据主题来定位接收者。

【问题讨论】:

我之前没有尝试过实现它,但是在您提供的场景中,有两个不同的项目,以便发送来自与应用程序关联的不同项目的消息。您必须向 FireLib 项目授予权限(请参阅我的 answer here),以便设备接收来自它的任何消息。不知道你将如何通过图书馆做到这一点。 我这样做是一种解决方法:com.random.app 需要生成 2 个不同的令牌(FireLibFireApp 令牌),然后使用此 link 将每个令牌订阅到关联项目中的首选主题.但是我仍然没有找到直接从 Android 库中执行此操作的方法。 【参考方案1】:

如果我没记错的话,这应该是不可能的。主包名称是com.random.app,因为库不会覆盖它。应用程序将在应用程序的包名下发布,因此它只会收到关于其包名的通知。

如果您的应用程序包名称为 com.random.lib,它可以侦听通知。

【讨论】:

以上是关于订阅来自两个不同 Firebase 项目的主题的主要内容,如果未能解决你的问题,请参考以下文章

将来自不同项目的服务帐户分配给 Pub/Sub 上的推送订阅

是否跨 Firebase 项目共享云消息传递主题?

在 iOS 上接收来自 firebase 的通知的奇怪行为

在一个移动应用中使用来自不同 Firebase 项目的两个 Firebase 服务

接收来自两个 Firebase 项目的一个 Android 应用的推送通知

Android/Firebase - 检查您是不是订阅了主题