我的应用程序正在接收来自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将在需要刷新任何令牌时调用(不仅适用于默认项目) . 这种理解是否正确?
每当系统确定需要刷新 token1 或 token2 时,我想将更新的令牌发送到服务器 .
Note: 我正在处理我的应用程序类中的firebase,因为我正在处理多个发件人ID .
1 回答
经过一些测试,我发现只有默认项目的令牌才会被传递给onNewToken . 通过调用getToken为其他发件人ID创建新令牌时,不会调用onNewToken .
通过调用getToken API检索的标记由不同于默认标记的字符串数据组成 .
当默认令牌更改时,这些其他发件人ID的令牌不会刷新 . 看起来它们会持续到您明确调用deleteToken API为止 . (当我反复调用getToken时,令牌值没有改变 . )