【问题标题】:Why is onTokenRefresh not firing?为什么 onTokenRefresh 没有触发?
【发布时间】:2021-05-23 09:40:34
【问题描述】:

我是 firebase 消息传递和颤振的新手。根据颤振firebase_messagingdocsonTokenRefresh 在生成新的 FCM 令牌时被触发。根据 Google 的 firebase docs,有两种情况会触发令牌生成:

  1. 在初始应用启动时生成新令牌时
  2. 只要更改现有令牌

这是我的应用程序的main 函数的简化版本。每次执行后,我从模拟器中删除应用程序,显示的令牌确实发生了变化。尽管如此,onTokenRefresh 永远不会被解雇,如果我对文档的理解是正确的,它应该会被解雇。

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();
  FirebaseMessaging.instance.onTokenRefresh.listen((String token) {
    print("New token: $token");
  });

  String token = await FirebaseMessaging.instance.getToken();
  print("Token: $token");
  //runApp(MyApp());
}

正如我所说,我是 Flutter、Dart 和 Firebase 消息传递的新手,我从根本上误解了什么吗?谢谢。

【问题讨论】:

    标签: flutter dart firebase-cloud-messaging


    【解决方案1】:

    所以我想我想通了。我注意到有时,onTokenRefresh 确实会触发。而且我想知道它是否与 Flutter 应用程序如何在模拟器上启动有关,因为在生成令牌和附加侦听器之间存在竞争条件。

    为了让应用看起来首次启动,我擦除了应用数据。不幸的是,这会导致颤振自动断开与应用程序的连接,这意味着我不会看到 print 语句的输出。因此,我没有尝试在生成令牌时进行打印,而是将来自onTokenRefresh 侦听器的值分配给了一个变量。然后我用变量的值更新了一个文本小部件。如果之前已擦除应用数据,onTokenRefresh 确实会在每次启动时触发。

    【讨论】:

      猜你喜欢
      • 2021-06-21
      • 2019-02-19
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 2021-02-16
      • 1970-01-01
      相关资源
      最近更新 更多