如何在 Flutter 上刷新 firebase 令牌?

Not*_*ros 3 messaging token firebase flutter

我有一个 Flutter 应用程序,它使用 Firebase 消息传递来传递通知。这是基本代码,除了将令牌保存在我的数据库中之外,它没有什么特别之处。

 FirebaseMessaging _firebaseMessaging = new FirebaseMessaging();

 _firebaseMessaging.configure(
  onMessage: (Map<String, dynamic> message) {

  },
  onResume: (Map<String, dynamic> message) {

  },
  onLaunch: (Map<String, dynamic> message) {

  },
);


_firebaseMessaging.getToken().then((token) {
  saveToken(token);
});
Run Code Online (Sandbox Code Playgroud)

我是否必须实现某种后台服务才能在每次刷新时将新令牌保存在我的数据库中?我记得onTokenRefresh()在 Android(JAVA)上使用过这样做,但我在 Flutter(DART)中一无所获。

我在某处读到令牌每 3600 秒刷新一次。我想知道这是不是真的。

Sus*_*ram 6

不,FCM 令牌不会每 3600 秒刷新一次。它仅在以下情况下刷新:

  1. 当用户卸载/重新安装应用程序或清除应用程序数据时
  2. 您手动删除 FCM 实例使用 FirebaseMessaging().deleteInstanceID()

您可以使用以下方法收听令牌刷新流:

FirebaseMessaging().onTokenRefresh.listen((newToken) {
   // Save newToken
});
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你

  • 是的,作为解决方法,您必须将旧令牌存储在sharedPreferences 中。每次收到 onTokenRefresh 调用时,您都可以将其与 SharedPreferences 上的调用进行比较,仅当它们不同时才存储它。希望能帮助到你 (2认同)

rmt*_*zie 3

您可以使用firebaseMessaging.onTokenRefresh它来获取每次收到新令牌时接收事件的流。