Firebase将消息发送到多个主题

时间:2018-01-15 03:32:29

标签: firebase firebase-cloud-messaging

我一直在尝试通过以下正文API调用(POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send)向订阅了多个主题的用户发送云消息:

{
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer MY_ACCESS_TOKEN`
  },
  body: {
    "message": {
      "condition": "'cat' in topics || 'dog' in topics",
      "notification": {
        "title": "Message Title",
        "body": "Message Body" 
      }
    }
  }
}

我根据FCM documentation编写了这个配置。我可以得到类似的回复:

{
  "name": "projects/myproject-b5ae1/messages/5735743068807585451"
}

但没有任何设备收到任何消息。

我已将访问令牌用于其他API,这有效。我也知道FCM文档也为cURL请求提供了不同的主体,我也试过但不行。

奇怪的是,如果我只在condition中提供一个主题,则消息实际上已成功发送到订阅的设备。我写错了吗?

我已经在Stackoverflow上引用了其他解决方案,但一切仍然无效:

Firebase API call with multiple topics in condition

How to send FCM Push Notifications to multiple topics

1 个答案:

答案 0 :(得分:8)

在与Firebase支持人员交谈后,他们指出我遇到的问题是他们仍在尝试修复的已知错误。目前还没有具体的修复时间表。

因此,我的代码没有问题,如果我真的想使用“||”(OR)运算符,我必须自己找出一个解决方法。

我目前的解决方法是跟踪具有数据库的订阅者(因为Firebase不提供订阅者查询),然后通过查找不同主题的订阅者联合来自己实现OR条件。

enter image description here

P.S。我只是不明白为什么是downvotes,我实际上在这里发现了一个错误并引用了我在SO上找到的所有解决方案,然后在这里提出问题。