【发布时间】:2017-05-25 17:21:13
【问题描述】:
正如标题所暗示的那样,如果我有一个 Android 应用程序注册了 FCM 通知,并且该应用程序处于后台或有一段时间没有启动并且令牌发生变化,那么何时调用 onTokenRefresh()?
它会唤醒应用程序调用onTokenRefresh(),还是会在下次启动应用程序时调用它?
谢谢
【问题讨论】:
标签: android firebase firebase-cloud-messaging
正如标题所暗示的那样,如果我有一个 Android 应用程序注册了 FCM 通知,并且该应用程序处于后台或有一段时间没有启动并且令牌发生变化,那么何时调用 onTokenRefresh()?
它会唤醒应用程序调用onTokenRefresh(),还是会在下次启动应用程序时调用它?
谢谢
【问题讨论】:
标签: android firebase firebase-cloud-messaging
onTokenRefresh()触发时的事件已经包含在FirebaseInstanceIdService documentation中:
当系统确定令牌需要刷新时调用。应用程序应调用 getToken() 并将令牌发送到所有应用程序服务器。
这不会被非常频繁地调用,它是密钥轮换和处理实例 ID 更改所必需的:
- 应用删除实例 ID
- 应用已在新设备上恢复
- 用户卸载/重新安装应用程序
- 用户清除应用数据
系统将限制所有设备的刷新事件,以避免令牌更新导致应用服务器过载。
同样指定,FirebaseInstanceIdService 类扩展了 Service 类,无论应用程序是在前台还是后台,它都可以运行。
【讨论】:
这是onTokenRefresh() 的调用方式。
所以对你来说,简短的回答是onTokenRefresh() 方法将触发,无论你的应用是在前台还是后台。
【讨论】: