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 (将#修改为@)