我的应用程序从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
已被弃用,因此我查看了onNewToken
,根据文档的说明:当为默认Firebase项目生成新令牌时调用此方法。在首次生成令牌后,在应用程序安装后再次调用此方法以生成新令牌。 问题 1:如果有多个发送方 ID,如何知道哪个是默认的 Firebase 项目? 问题 2:假设“authorizedEntity1”与默认 firebase 项目相关联,则这是否意味着只有在更改
token1
时才会调用 onNewToken
?还是当更改 token2
时也会调用?如果不适用于token2
,则如何知道需要刷新token2
?
问题 3:参考这里,我的理解是当任何令牌需要刷新时都会调用 onTokenRefresh
(不仅适用于默认项目)。这个理解正确吗?我希望在系统确定需要刷新
token1
或token2
时将更新的令牌发送到服务器。
注:由于我正在处理多个发送方 ID,因此我在应用程序类中初始化 firebase。