在我们的团队中,我们使用旧版 Firebase FCM API,需要迁移到新的 HTTP v1 API。我们的 C# 代码库。
我查看了官方文档(https://firebase.google.com/docs/cloud-messaging/migrate-v1),但是,根据文档进行更改后,我们收到 400 bad request 错误。到目前为止我们做了什么:
使用新的授权接口来获取令牌持有者(我们可以确认我们获得了持有者)
在我们的http请求的授权部分使用这个令牌持有者。
我们旧的 json 请求:
{ “至”:“xxxx”, “优先级”:“高”, “内容可用”:正确, “数据”: { “pushType”:“troyHCE”, "digitizedCardId": "", “标题”:“TROYHCE”, “类型”:“REQUEST_SESSION”, "消息": "{'sessionID':'xxxxxxx' }", “安卓”: { “优先级”:“高” }, “网络推送”:{ “标题”:{ “紧急程度”:“高” } } } }
我们在检查文档后尝试发送新请求
{ “信息”: { “令牌”:“xxxx”, “优先级”:“高”, “内容可用”:正确, “数据”: { “pushType”:“troyHCE”, "digitizedCardId": "", “标题”:“TROYHCE”, “类型”:“REQUEST_SESSION”, "消息": "{'sessionID':'xxxxxxx' }", “安卓”: { “优先级”:“高” }, “网络推送”:{ “标题”:{ “紧急程度”:“高” } } } } }
这个请求直接给了我们一个400 bad request。然而,当我们尝试举个例子时
{ “信息”: { “令牌”:“xxxx”, “通知”: { "body": "这是一条 FCM 通知消息!", "title": "FCM 消息" } } }
这按预期工作。这意味着我们的令牌持有者等可以工作。但是,我们从供应商服务获得的“数据”部分以我共享的第一个 json 请求的形式给出请求。因此,我们在适应新的 api 交互数据部分时遇到了问题。我们应该改变什么?
如果你使用admin sdk那么你可以直接这样传递。
{
token: token,
data: {
"pushType": "troyHCE",
"digitizedCardId": "",
"Header": "TROYHCE",
"Type": "REQUEST_SESSION",
"Message": "{sessionID:'xxxxxxx' }",
},
android: {
"priority": "high"
},
webpush: {
"headers": {
"Urgency": "high"
}
}
}
如果您使用 REST API 发送通知,请将其添加为新键“消息”的值
{
message: JSON
}