首页 文章

如果有多个发件人ID,如何确定令牌是否需要刷新?

提问于
浏览
1

我的应用程序正在接收来自2个firebase项目的推送通知 . 我通过分别调用“getToken(String authorizedEntity,String scope)”来获取每个发送者ID的标记 .

String token1 = FirebaseInstanceId.getInstance().getToken("authorizedEntity1", "FCM");
String token2 = FirebaseInstanceId.getInstance().getToken("authorizedEntity2", "FCM");

根据 onTokenRefresh 文档

当系统确定需要刷新令牌时调用 . 应用程序应该调用getToken()并将令牌发送到所有应用程序服务器 . 这不会被频繁调用,它需要进行密钥轮换并处理实例ID更改,原因是:应用程序删除实例ID应用程序在新设备上恢复用户卸载/重新安装应用程序用户清除应用程序数据

由于 onTokenRefresh 已经 deprecated ,我已经检查了 onNewToken ,根据文档

生成默认Firebase项目的新令牌时调用 . 在首次生成令牌时应用程序安装后调用此方法,如果令牌更改则再次调用此方法 .

Q1. 如果有多个发件人ID,如何知道哪个是默认的Firebase项目?

Q2. 假设如果"authorizedEntity1"与默认的firebase项目相关联,那么它是否意味着只有当token1被更改时才会调用onNewToken?或者当token2被更改时它也会被调用?如果它不适用于token2那么如何知道 token2 需要刷新?

Q3. 参考this我的理解是onTokenRefresh将在需要刷新任何令牌时调用(不仅适用于默认项目) . 这种理解是否正确?

每当系统确定需要刷新 token1token2 时,我想将更新的令牌发送到服务器 .

Note: 我正在处理我的应用程序类中的firebase,因为我正在处理多个发件人ID .

1 回答

  • 0

    经过一些测试,我发现只有默认项目的令牌才会被传递给onNewToken . 通过调用getToken为其他发件人ID创建新令牌时,不会调用onNewToken .

    通过调用getToken API检索的标记由不同于默认标记的字符串数据组成 .

    当默认令牌更改时,这些其他发件人ID的令牌不会刷新 . 看起来它们会持续到您明确调用deleteToken API为止 . (当我反复调用getToken时,令牌值没有改变 . )

相关问题