Node.js Firebase云消息通知模型

Node.js Firebase云消息通知模型,node.js,flutter,firebase-cloud-messaging,Node.js,Flutter,Firebase Cloud Messaging,我已经在我的Flatter应用程序中使用Firebase_消息插件实现了Firebase云消息传递,但有一点我不明白。 我在函数中有此有效负载,用于在创建消息时发送推送通知: var payload = { notification: { title: 'Nuevo mensaje!',

我已经在我的Flatter应用程序中使用Firebase_消息插件实现了Firebase云消息传递,但有一点我不明白。 我在函数中有此有效负载,用于在创建消息时发送推送通知:

               var payload = {
                                notification: {
                                      title: 'Nuevo mensaje!',
                                      body: `${sender} te ha dejado mensaje ${fecha}`,
                                      icon: 'https://*************.es/wp-content/uploads/2019/11/**************.png',
                                      click_action: 'FLUTTER_NOTIFICATION_CLICK'
                                       },
                             };
一切都很顺利,直到我试图以这种方式获得头衔和身体:

onMessage: (Map<String, dynamic> message) async {
            print("onMessage: $message");
            showDialog(
                context: context,
                builder: (context) => AlertDialog(
                        content: ListTile(
                        title: Text(message['notification']['title']),
                        subtitle: Text(message['notification']['body']),
                        ),
                        actions: <Widget>[
                        FlatButton(
                            child: Text('Ok'),
                            onPressed: () => Navigator.of(context).pop(),
                        ),
                    ],
                ),
            );
一切正常,但我想知道为什么我发送“通知:{title:}”,但接收aps:{alert:{title:}}。我遵循的教程似乎是通过“通知”键正常接收的。这是怎么回事?我错过了什么?代码是有效的,但我觉得我没有用正确的方式实现它

编辑:我刚刚在Android上测试了它,在那里它按照预期的方式解码:

 title: Text(message['notification']['title']),
 subtitle: Text(message['notification']['body']
所以现在我像平台一样处理它。isAndroid?消息:消息;
但我想知道发生了什么。

不确定这是否是您的问题的原因,但在我的云功能中(在应用程序中应该是相同的),我使用的有效负载结构在数据部分有点击动作k:v对:

const payload = {
        notification: {
          title_loc_key: "notification_title_string",
          body_loc_key: "notification_message_favoriting_string",
          badge: "1",
          sound: "default",
        },
        data: {
          click_action: "FLUTTER_NOTIFICATION_CLICK",
          rcpntId: recipientId,
          sndrId: senderId, 
        }
      };


我认为您需要在数据块中放入您希望通过警报对话框处理的数据。通知块是关于设备状态栏中显示的内容。您还需要onResume和onLaunch响应通知的数据块。

hmm,我会尝试一下,但我不认为我需要处理数据,因为我订阅了主题,当收到消息时,我会将用户发送到通知屏幕,在那里他从firebase获取数据并可以查看新消息。我尝试过,因为我必须添加一些数据,但它不起作用。我读到在有效负载中有一个名为apns的iOS平台特定字段,但仍然是通知:{},字段是通用的,用于向两个平台发送标题和正文,所以我不知道,为什么在iOS上你会收到这个aps/警报表单。好的,我在编辑后才意识到你的问题与iOS有关。到目前为止,我只在安卓系统上测试过它,期待着iOS测试的乐趣。因此,你对这个问题的解决方案将对我有所帮助,所以谢谢你。如果我在浏览文档、中级帖子、Flitter和Firebase论坛等时遇到这样的原因,我会在这里发布。
const payload = {
        notification: {
          title_loc_key: "notification_title_string",
          body_loc_key: "notification_message_favoriting_string",
          badge: "1",
          sound: "default",
        },
        data: {
          click_action: "FLUTTER_NOTIFICATION_CLICK",
          rcpntId: recipientId,
          sndrId: senderId, 
        }
      };