当前位置: 首页 > 知识库问答 >
问题:

Flatter-Firebase云消息,iOS上未收到数据消息

郑浩博
2023-03-14

通知处理程序

void firebaseCloudMessagingListeners() {
    _firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) async {
        print('onMessage ==> $message');
        messageHandler(message);
      },
      onResume: (Map<String, dynamic> message) async {
        print('onResume ==> $message');
        messageHandler(message);
      },
      onLaunch: (Map<String, dynamic> message) async {
        print('onLaunch ==> $message');
        messageHandler(message);
      },
      onBackgroundMessage: Platform.isIOS ? null : myBackgroundMessageHandler,
    );
  }

  static Future<dynamic> myBackgroundMessageHandler(
      Map<String, dynamic> message) {
    print('onBackgroundMessage ==> $message');
    if (message.containsKey('data')) {
      final dynamic data = message['data'];
      print('$data');
    }

    if (message.containsKey('notification')) {
      final dynamic notification = message['notification'];
      print('$notification');
    }

    return null;
  }

邮递https://fcm.googleapis.com/fcm/send

{
   "to": "myFCMToken",
   "priority": "high",
   "data": {
      "click_action": "FLUTTER_NOTIFICATION_CLICK",
      "data_title": "data_title",
      "data_body": "data_body"
   },
   "notification": {
      "title": "Good Night",
      "body": "Wish you have a nice dream..",
      "sound": "default"
   }
}

当我发送通知与有效载荷上面,通知交付到系统托盘,当我点击它,我有以下三种情况:

  1. 应用程序处于后台(关闭/终止),显示“数据”并调用onLaunch方法。

问题是,如何接收或处理带有通知的“数据”也发送到系统托盘?任何帮助都将不胜感激。

共有1个答案

李跃
2023-03-14

IOS消息具有不同的结构,IOS不需要“数据”,例如

     if(Platform.isAndroid){
          roomId = message['data']['chatRoomId'];
          senderId = message['data']['senderId'];
        }else if(Platform.isIOS){//without data
          roomId = message['chatRoomId'];
          senderId = message['senderId'];
        }

 类似资料:
  • 我正在接收令牌,但当我从Firebase控制台发送通知时,我的设备上不会发生任何事情,无论应用是否处于后地。与此同时,我的Android应用程序收到通知。 我遵循了这个指南: https://firebase.google.com/docs/cloud-messaging/ios/client 为了确保这一点,我还在 https://github.com/firebase/quickstart-i

  • 我正在尝试使用Firebase Notification Composer向我的设备发送测试通知。我正在接收FCM令牌并将其打印到我的控制台,然后尝试向该令牌发送通知。 以下是我检查过的内容: 1) 我使用的是iOS 12.4.1 2) 我正在分配消息传递代理 3)我从委托方法接收FCM令牌 4) 我已经验证了通知是通过打印到控制台启用的,当提示我允许通知时,我单击了允许 5) 我已经验证了在Fi

  • FCM服务未向我的iOS应用程序发送消息。 > App CAN成功接收APNs令牌和实例ID令牌 App CAN使用推送通知实用程序利用. p8令牌在后台成功接收来自APN的推送 #2中使用的相同APNs密钥上传到Firebase控制台 应用程序无法接收Firebase控制台中Notification Composer发送的消息,也无法使用CURL请求接收消息。 应用程序在通过FCM发送时不显示任

  • null 我遵循Xamarin的文档实现了这个功能。 然后一步一步地执行,直到下面的部分: 后台通知 我点击了Log Token按钮并收到了令牌。 null Firebase控制台显示消息为“完成”。 我错过了什么来解决这个问题?

  • 我对FireBase云消息有一个问题,我从设备中获取令牌,并通过Google FireBase通知控制台发送通知测试。但是,通知从来没有被记录,也没有被推送到android虚拟设备。FCM的文档几乎与下面的代码完全相同,其他代码很少,您还需要做什么来获得使用FireBase的推送通知。我已经完成了所有的设置信息(build.gradle添加、安装google play服务等)如文档中所指定的,但仍

  • 我不确定如何在上使用和接收数据消息。 为了让您快速了解我的立场,我可以在我的设备上接收。所以我已经正确地配置了所有的东西(或者我相信是这样)。 所以,当应用程序在后台时,我会在通知托盘中得到一个通知。 当应用程序处于前台时,我也会在onMessage回调中接收消息。 但是,当我试图通过请求来模拟数据消息https://fcm.googleapis.com/fcm/send并发送正文时: 我的onm