小编Mar*_*ark的帖子

收到 fcm onBackgroundMessage 后 Flutter 打开应用程序

我已将 FCM 与 flutter 集成,当我从服务器发送数据消息时,它工作正常。我的问题是如何使用 onBackgroundMessage 打开应用程序或特定屏幕。实际上,我正在使用 agora 构建视频通话应用程序,如果应用程序在后台或关闭,我想使用 fcm 显示来电屏幕,例如 Whatsapp。现在我只打印数据。我尝试了各种方法,但没有一个有效。我在 android 上完成了这项工作,因为在 android 中我可以在应用程序中的任何位置获取应用程序上下文。问题是我无法获取 onBackgroundMessageHandler 函数中的上下文。

下面是在前台显示来电屏幕的代码。

 _firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) async {
        print('on message $message');
        
        if(message['data']['purpose'].toString().contains("video")){
          Navigator.popAndPushNamed(context, IncomingCall.routeName, arguments: RouteIncoming(
            int.parse(message['data']['clientid']), message['data']['token'], message['data']['username'] 
          ));
        
        Provider.of<CallStatus>(context).setStatus(-1);
        Provider.of<CallStatus>(context).setIncoming(-1);
        
        }
        else if(message['data']['purpose'].toString().contains("reject")) {
          Provider.of<CallStatus>(context).setStatus(0);

        }
        else if(message['data']['purpose'].toString().contains("cancel")){
          Provider.of<CallStatus>(context).setIncoming(0);
        }
        //_showMyDialog(message);
        
      },
      onBackgroundMessage: Platform.isIOS ? null : myBackgroundMessageHandler ,
      onResume: (Map<String, dynamic> message) async {
        print('on resume $message');
        print(message['data']['token']);
        Navigator.pushNamed(context, IncomingCall.routeName, arguments: RouteIncoming(
            int.parse(message['data']['clientid']), message['data']['token'], message['data']['username'] 
          ));
      },
      onLaunch: (Map<String, …
Run Code Online (Sandbox Code Playgroud)

whatsapp flutter firebase-cloud-messaging agora.io

6
推荐指数
1
解决办法
1683
查看次数