繁体   English   中英

如何在 Flutter 上刷新 firebase 令牌?

[英]How to refresh firebase token on 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);
});

我是否必须实施某种后台服务以在每次刷新时将新令牌保存在我的数据库中? 我记得在 Android(JAVA) 上使用onTokenRefresh() ) 来执行此操作,但我在 Flutter (DART) 中一无所获。

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

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

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

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

FirebaseMessaging().onTokenRefresh.listen((newToken) {
   // Save newToken
});

希望能帮助到你

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

以下是订阅firebaseMessaging.onTokenRefresh流并在令牌更改时更新令牌的示例:

FirebaseMessaging().onTokenRefresh.listen((token) async {
  final prefs = await SharedPreferences.getInstance();
  final String firebaseTokenPrefKey = 'firebaseToken';
  final String currentToken = prefs.getString(firebaseTokenPrefKey);
  if (currentToken != token) {
    print('token refresh: ' + token);
    // add code here to do something with the updated token
    await prefs.setString(firebaseTokenPrefKey, token);
  }
});
  1. 你可以试试这个..根据新的更新
FirebaseMessaging.instance.onTokenRefresh.listen((newToken) {
        // Save newToken
      });

用户登录我的应用程序后,她每 3500 秒自动再次登录。

我使用了这样的计时器:

  void _timerPressed() {
    const timeout = const Duration(seconds: 3500);
    new Timer.periodic(timeout, (Timer t) => _handleSignIn());
  }

登录发生后,我在“登录”按钮按下方法中设置计时器:

  void _loginPressed() {
    print('The user wants to login with $_email and $_password');
    _handleSignIn()
        .then((FirebaseUser user) => print(user))
        .catchError((e) => print(e));
    _timerPressed();
  }

(不要被方法的名称“_timerPressed”所迷惑。我使用按钮按下来测试该技术,并且在将其绑定到登录按钮后还没有开始重命名该方法。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM