我在firebase云消息传递中使用API逻辑构建了spring java服务。
以下是示例弹出服务https://github.com/petq01/firebase-spring-service
的网址重现:设置请求
运行项目
POST http://localhost:8080/notification/messages
Headers:
firebase-server-key : [your generated server key]
Body:
{
"condition": " 'topic' in topics",
"title": "Hello,Via Multiple Topics",
"body": "Hello,Via Multiple Topics"
}
要将消息发送到条件,您必须先创建主题
重现:创建主题
POST https://iid.googleapis.com/iid/v1/{token}/rel/topics/{topic}
headers
Authorization : key=[firebase-server-key]
200 OK
根据API的文档,条件字段被定义为不区分大小写。 但在实践中,它实际上是区分大小写的。
我正在使用相同的主题名称进行两次测试(使用大写和小写字符)。我试图发送消息的主题的原始名称被定义为"主题"。由于该字段必须不区分大小写,因此我尝试使用" topiC"它仍然应该发送消息。不幸的是,它没有。该字段实际上区分大小写,从我的角度来看,这是一个很大的问题。
我的第二个问题:
当出现不存在的主题时。使用网址https://fcm.googleapis.com/fcm/send进行交换不会返回错误。
关于这个主题的第三个问题是: 条件OR' ||'
"condition": " 'topicChrome' in topics || 'topicFirefox' in topics "
无法正常工作,我已在主题' topicChrome'上订阅了一个令牌。主题' topicFirefox'。
上的另一个标记答案 0 :(得分:1)
继续前进并添加答案,详细信息与我的评论类似。
根据API的文档,条件字段被定义为不区分大小写。但实际上,它实际上是区分大小写的。
主题名称始终区分大小写。文档中提到的不区分大小写的是指condition
参数。换句话说,使用:
"condition": "'topicChrome' IN TOPICS || 'topicFirefox' in topics"
(见大写和小写的单词)没问题。
当出现不存在的主题时。使用网址https://fcm.googleapis.com/fcm/send进行交换不会返回错误
这是按预期工作的。开发人员有责任跟踪哪个主题存在或不存在(即哪些主题具有订阅者),类似于设备组(请参阅我的回答here)。
对于你的第三个问题,我已经测试了条件,它在我的结束时按预期工作。我建议发布更多详细信息(希望在一个单独的问题中,因为单个帖子中的多个问题在这里不是一个好的做法),特别显示响应 - 是错误还是成功?