我试图发送一个通知给所有的应用程序用户(在 Android 上) ,本质上是复制通过 Firebase 管理控制台发送通知时发生的事情。下面是我首先使用的 CURL 命令:
Curl —— security —— header“ Authorization: key = AIzaSyBidmyauthkeyisfineL-6NcJxj-1JUvEM”—— header“ Content-Type: application/json”-d”{“ tification”: {“ title”: “ note-Title”,“ body”: “ note-Body”}}“ https://fcm.googleapis.com/fcm/send
这里解析出的 JSON 对您的眼睛来说更容易:
{
"notification":{
"title":"note-Title",
"body":"note-Body"
}
}
得到的回应只有两个字符:
到
对了,就是“去”这个词。(报头400)我怀疑这与我的 JSON 中没有“ to”有关。一个人怎么会把“ to”写成“ to”呢?我没有定义主题,设备也没有为任何东西注册自己。然而,他们仍然能够接收来自 Firebase 管理面板的通知。
我想尝试一个“仅数据”的 JSON 包,因为 Firebase 通知处理的惊人限制,如果你的应用在前台,通知将由你的处理器处理,但如果你的应用在后台,它将由 Firebase 服务内部处理,永远不会传递给你的通知处理器。显然,如果你通过 API 提交你的通知请求,这个问题可以解决,但是只有当你只使用数据的时候。(这就打破了用同样的信息处理 iOS 和 Android 的能力。)在我的 JSON 中用“数据”替换“通知”没有任何效果。
好的,然后我在这里尝试了解决方案: Firebase Java Server 向所有设备发送推送通知 在我看来,这意味着“好吧,即使通过管理控制台向每个人发送通知是可能的... ... 但是通过 API 实际上是不可能的。”解决方案是让每个客户端订阅一个主题,然后推出该主题的通知。首先,onCreate 中的代码是:
FirebaseMessaging.getInstance().subscribeToTopic("allDevices");
然后我发送新的 JSON:
{
"notification":{
"title":"note-Title",
"body":"note-Body"
},
"to":"allDevices"
}
所以现在我至少从服务器得到了一个真实的响应。 JSON 响应:
{
"multicast_id":463numbersnumbers42000,
"success":0,
"failure":1,
"canonical_ids":0,
"results":
[
{
"error":"InvalidRegistration"
}
]
}
还有一个 HTTP 代码200。好的... 根据 https://firebase.google.com/docs/cloud-messaging/http-server-ref的一个200代码与“无效注册”意味着与注册令牌的问题。也许吧?因为这部分文档是针对消息传递服务器的。通知服务器是否相同?不清楚。我在其他地方看到,这个话题可能需要几个小时才会被激活。似乎这会使得创建新的聊天室变得毫无用处,所以这看起来也是错误的。
当我能够从头开始编写一个应用程序时,我非常兴奋,因为我以前从未使用过 Firebase,而这个应用程序能够在几个小时内收到通知。在达到 Stripe.com 文档的水平之前,似乎还有很长的路要走。
底线: 是否有人知道提供什么样的 JSON 来向所有运行应用程序的设备发送消息以镜像管理控制台功能?