FirebaseInstanceIdService onTokenRefresh()仅在应用程序运行时调用吗?

时间:2017-01-11 03:07:44

标签: android firebase firebase-cloud-messaging

就像标题所暗示的那样,如果我有一个注册了FCM通知的Android应用程序且该应用程序处于后台或暂时没有启动并且令牌发生变化,那么onTokenRefresh()何时被调用?

它会唤醒应用程序以致电onTokenRefresh(),还是会在下次应用程序启动时调用它?

由于

2 个答案:

答案 0 :(得分:5)

触发onTokenRefresh()的事件已包含在FirebaseInstanceIdService documentation

  

系统确定需要刷新令牌时调用。应用程序应调用getToken()并将令牌发送到所有应用程序服务器。

     

这不会经常调用,需要进行密钥轮换并处理由于以下原因引起的实例ID更改:

     
      
  • 应用删除实例ID
  •   
  • 应用程序已在新设备上恢复
  •   
  • 用户卸载/重新安装应用
  •   
  • 用户清除应用数据
  •   
     

系统将限制所有设备上的刷新事件,以避免使用令牌更新使应用程序服务器过载。

同样如此,FirebaseInstanceIdService类扩展了Service类,无论应用程序是在前台还是后台,都可以运行。

答案 1 :(得分:2)

以下是onTokenRefresh()的电话。

  1. 已安装该应用。
  2. 令牌已被盗用。
  3. 令牌已更改。
  4. 因此,简而言之,无论您的应用是在前台还是在后台,都会触发onTokenRefresh()方法。