android - 不使用默认 FirebaseApp 的 FirebaseInstanceId.getInstance().getToken()

标签 android firebase firebase-cloud-messaging

我正在尝试使用 FCM 发送 Firebase 通知,但我有一个使用一个 Firebase 项目的应用程序和一个使用另一个 Firebase 项目的库。我想从库 Firebase 项目接收 token 以接收 Firebase 通知。

当我尝试使用以下方式直接接收 token 时:

FirebaseInstanceId.getInstance().getToken();

我收到了一个有效 token ,但来自 Application Firebase Project。如果我尝试在 getInstance() 库 Firebase 项目中强制执行,使用:

FirebaseInstanceId.getInstance(FirebaseApp.getInstance("ABC")).getToken();

我收到 null。如果我尝试使用 Application 或 Library Firebase Project 在 getToken() 中传递参数,如下所示:

FirebaseInstanceId.getInstance().getToken(getApplication().getResources().getString(R.string.gcm_defaultSenderId), FirebaseMessaging.INSTANCE_ID_SCOPE);

FirebaseInstanceId.getInstance(FirebaseApp.getInstance("ABC")).getToken(getApplication().getResources().getString(R.string.gcm_defaultSenderId), FirebaseMessaging.INSTANCE_ID_SCOPE);

我从应用程序 Firebase 项目收到了相同的有效 token 。

the R.string.gcm_defaultSenderId is from library project resources

还有另一种方法可以接收 Library Firebase 项目 token ,或者我做错了什么?

最佳答案

这是我根据我的实验和文档对您观察到的内容的理解。

当您第一次调用 getToken() 使用 FirebaseApp 而不是默认值时,没有 token ,需要与服务器通信才能生成 token 。返回空值并启动获取 token 的过程。 documentation for getToken()说它返回 “主 token 或如果 token 尚不可用则返回 null”。几秒钟后收到 token 。您可以使用 FirebaseInstanceIdServiceonTokenRefresh() 方法检测该事件,如果你已经实现了。在随后为非默认应用调用 getToken() 时, token 将出现并由 getToken() 立即返回。

我认为获取作用域 token 的调用总是返回一个 token ,因为它们是阻塞的(see docs),并等待与服务器的交互完成后再返回结果。

关于android - 不使用默认 FirebaseApp 的 FirebaseInstanceId.getInstance().getToken(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39215267/

相关文章:

android - 重复的 FCM 推送通知

android - 如何使用 Cmake 将 Android 项目与 libandroid 链接起来?

node.js - Cloud Functions for Firebase 性能

android - 奥利奥通知 - channel 不工作

firebase - 是否可以在 Flutter 中使用 FCM 实现通知分组/捆绑?

javascript - vue.js 中未捕获的 FirebaseError : Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app)

python - 使用 pyfcm 的移动 Web 应用程序的 Android 和 iOS 设备注册 ID

android - 重用 xml 布局但覆盖 src 和文本属性

android - 在 gradle 中添加 Firebase for Google Ads 时发生崩溃

java - 无法在 Android 11 上以编程方式拍照 - Intent 返回已取消状态