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

在Firebase的云功能中设置优先级Firebase消息传递

爱亮
2023-03-14

我正在使用Firebase消息向iPhone应用程序的用户发送通知。为了不在客户端公开应用程序的消息服务器密钥,我正在使用Firebase的云功能向特定主题发送通知。在此之前,我在应用程序的客户端执行此操作,并能够通过制作以下格式的JSON来设置消息的优先级:

// Swift code in iPhone app
let body: [String: Any] = ["to": "/topics/\(currentPet)",
                            "priority" : "high",
                            "notification" : [
                                "body" : "\(events[eventType]) for \(petsName.localizedCapitalized)",
                                "title" : "\(myName.localizedCapitalized) just logged an event",
                                "data" : ["personSent": myId]
                              ]
                           ]

现在在我的云函数中,我试图制作一个相同通用格式的有效载荷,但是一直遇到错误:

消息传递负载包含无效的“优先级”属性。有效属性为“数据”和“通知”。

以下是我的有效负载格式化和发送:

const payload = {
      'notification': {
        'title': `${toTitleCase(name)} just logged an event`,
        'body': `${events[eventType]} for ${toTitleCase(petName)}`,
        'sound': 'default',
        'data': userSent 
      },
      'priority': 'high'
    };
admin.messaging().sendToTopic(pet_Id, payload);

有谁知道我该如何设定优先级吗?我是否应该手动执行HTTP POST而不是使用admin.messaging(). sendToTopic()

共有1个答案

萧飞
2023-03-14

在Firebase云消息文档中,关于使用Admin SDK发送消息:

// Set the message as high priority and have it expire after 24 hours.
var options = {
  priority: "high",
  timeToLive: 60 * 60 * 24
};

// Send a message to the device corresponding to the provided
// registration token with the provided options.
admin.messaging().sendToDevice(registrationToken, payload, options)
  .then(function(response) {
    console.log("Successfully sent message:", response);
  })
  .catch(function(error) {
    console.log("Error sending message:", error);
  });

不同之处在于优先级(以及示例中的ttl)作为单独的options参数传递,而不是在有效负载中传递。

 类似资料:
  • TLDR:通过FCM发送到Android设备的消息需要10秒到5分钟才能送达。可能是因为优先权。我将其设置为“高”,但它似乎没有保持在该值上。 我为iOS和Android开发了一个应用程序。我的后端运行在Django上。对于我们的实时通信,我们最近开始使用Firebase云消息传递(FCM)。 我成功地连接了Django服务器,并且能够向这两种设备发送消息。 这是我构造消息的python代码。请注

  • 我试图从C#中的服务器发送推送通知,我使用了正确的注册令牌和API密钥,但仍然得到以下响应。 我按照这个网址来实现这个解决方案通过C#使用FCM(Firebase云消息传递)发送推送到Android 目前,我正在尝试向单个设备发送通知,但也希望同时向多个设备发送通知,我使用了url中给出的,但它不起作用。如果我必须同时向多个设备发送通知,我该怎么办? 这是我的密码

  • 我必须在SpringJava中为多层架构制作一个RESTAPI,其中需要为Firebase云消息传递(FCM)构建DAO、控制器和服务管理器,以向android应用程序发送推送通知消息,但我无法在Java中配置服务器以向设备发送通知。我怎么能?

  • 在我们的项目中,我们使用Firebase云消息传递来进行推送通知,我们遇到了消息重复的问题。我们过程如下所示: xamarin.firebase.ios.CloudMessaging 3.1.2 xamarin.firebase.ios.instanceID 3.2.1 xamarin.firebase.ios.core 5.1.3 订阅用户主题推荐 发送主题订阅者请求的通知 null 但是,当用

  • 我也在尝试使用node。js和firebase管理员向iOS设备发送推送通知。然而,我遇到了这个错误: 错误发送消息:{错误:请求包含一个无效的参数。在Firebase MessagingError。错误(本机)在Firebase MessagingError。Firebase Error[作为构造函数](/user_code/node_modules/fire base-admin/lib/ut

  • 我不明白如何从iOS设备向另一个iOS设备发送消息,我试图理解Firebase通知和Google云消息之间的区别。 null Google Cloud Messaging:它将消息从服务器发送到设备(下游)或设备发送到服务器(上游)!! 上游示例: 如果我需要从一个设备发送一个推送消息到另一个设备呢!这是否意味着在设备发送消息到服务器之后,我必须编程firebase服务器发送推送到客户端?真让人摸