我有一个Flutter应用程序,它在第一次运行时创建FCM令牌,如下所示:
_firebaseMessaging.getToken().then((token) {
//save my token here
});
然而,我知道这个令牌可以偶尔刷新一次。为了获得这个新的刷新令牌,我必须调用onTokenRefresh
方法:
Stream<String> fcmStream = _firebaseMessaging.onTokenRefresh;
fcmStream.listen((token) {
saveToken(token);
});
问题是我不知道这是否正确。当应用程序运行时,行saveToken(token)
总是执行,但当应用程序不在前台/后台时,它会工作吗?
我的意思是,即使用户关闭了应用程序,这个onTokenRefresh
也会一直监听?
如果没有,如果应用程序很长一段时间没有启动,我该如何获得新令牌?
基于此firebase文档,fcm令牌将在以下事件上更改:
- 应用程序删除实例ID
- 应用程序已在新设备上还原
- 用户卸载/重新安装应用程序
- 用户清除应用程序数据
如果应用程序长时间未启动,并且没有发生上述事件,则应用程序令牌不会更改。