如何在Flutter上刷新firebase令牌?

zaq34kh6  于 2022-12-14  发布在  Flutter
关注(0)|答案(5)|浏览(151)

我有一个Flutter应用程序,它使用Firebase消息传递来发送通知。这是基本代码,它没有什么特别的作用,除了在我的DB上保存令牌。

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);
});

我是否必须实现某种后台服务,以便在每次刷新令牌时将其保存在DB中?我记得在Android(JAVA)上使用onTokenRefresh()来实现这一点,但在Flutter(DART)中却没有找到任何相关信息。
我在什么地方读到过令牌每3600秒刷新一次,不知道这是不是真的。

8gsdolmq

8gsdolmq1#

否,FCM标记不会每3600秒刷新一次。它仅在以下情况下刷新:
1.当用户卸载/重新安装应用程序或清除应用程序数据
1.使用FirebaseMessaging().deleteInstanceID()手动删除FCM示例
您可以使用以下命令侦听令牌刷新流:

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

希望能有所帮助

cpjpxq1n

cpjpxq1n2#

您可以使用firebaseMessaging.onTokenRefresh获取一个流,该流在每次接收到新令牌时接收一个事件。

w7t8yxp5

w7t8yxp53#

以下是订阅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);
  }
});
4jb9z9bj

4jb9z9bj4#

1.你可以试试这个..按照新的更新
((新令牌){ //保存新令牌});

dgiusagp

dgiusagp5#

用户登录后,我的应用程序每隔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();
  }

(Don'不要被方法的名称'_timerPressed '所迷惑。我使用了一个按钮按下来测试该技术,并且在将它绑定到登录按钮后还没有来得及重命名该方法。)

相关问题