微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FCM OnMessage 如何在前台按顺序运行函数

如何解决FCM OnMessage 如何在前台按顺序运行函数

请帮我弄清楚如何按顺序运行异步函数

我有一个用于接收通知的类,它应该在 forrground 应用程序状态下对 OnMessage 事件调用异步函数

class PushNotificationService {

  final FirebaseMessaging _fcm;
  final BuildContext context;
  
  PushNotificationService(this._fcm,this.context);


  Future initialise() async {
    token = await _fcm.getToken();
    print("FirebaseMessaging token: $token");

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

        await getNotificationsTMP(); //<-- Asynchronous function

        },onLaunch: (Map<String,dynamic> message) async {
          print("onLaunch: $message");
        },onResume: (Map<String,dynamic> message) async {
          print("onResume: $message");
        },);

      _fcm.requestNotificationPermissions(
          const IosNotificationSettings(sound: true,badge: true,alert: true));
      _fcm.onIosSettingsRegistered.listen((IosNotificationSettings settings) {
        print("Settings registered: $settings");
      });
  }
}

我有简单的异步函数

Future<bool> getNotificationsTMP() async {
  print('NTF BEGIN');
  await Future.delayed(Duration(seconds: 1));
  print('NTF END';
  return true;
}

如果我通过按下一个按钮一个一个地运行该函数

onpressed: () async {
  await getNotificationsTMP();
  await getNotificationsTMP();
}

我有一个日志:

I/Flutter (16043): NTF BEGIN
I/Flutter (16043): NTF END
I/Flutter (16043): NTF BEGIN
I/Flutter (16043): NTF END

当我收到一条通知消息时,一切正常! 我期望日志:

I/Flutter (16043): NTF BEGIN
I/Flutter (16043): NTF END

但是当我收到多个通知(假设例如两个)时,我有一个日志:

I/Flutter (16043): NTF BEGIN
I/Flutter (16043): NTF BEGIN
I/Flutter (16043): NTF END
I/Flutter (16043): NTF END

而且我不知道如何获得预期的日志:

I/Flutter (16043): NTF BEGIN
I/Flutter (16043): NTF END
I/Flutter (16043): NTF BEGIN
I/Flutter (16043): NTF END

有人能给我建议我可以为函数的顺序运行做些什么吗?...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。