订阅来自两个不同 Firebase 项目的主题
Posted
技术标签:
【中文标题】订阅来自两个不同 Firebase 项目的主题【英文标题】:Subscribe to Topic from Two Different Firebase Projects 【发布时间】:2017-05-10 09:57:07 【问题描述】:我有一个 android 库项目 com.random.lib
和一个 Android 应用程序项目 com.random.app
。
com.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 个不同的令牌(FireLib
和 FireApp
令牌),然后使用此 link 将每个令牌订阅到关联项目中的首选主题.但是我仍然没有找到直接从 Android 库中执行此操作的方法。
【参考方案1】:
如果我没记错的话,这应该是不可能的。主包名称是com.random.app
,因为库不会覆盖它。应用程序将在应用程序的包名下发布,因此它只会收到关于其包名的通知。
如果您的应用程序包名称为 com.random.lib
,它可以侦听通知。
【讨论】:
以上是关于订阅来自两个不同 Firebase 项目的主题的主要内容,如果未能解决你的问题,请参考以下文章
将来自不同项目的服务帐户分配给 Pub/Sub 上的推送订阅
在一个移动应用中使用来自不同 Firebase 项目的两个 Firebase 服务