我目前正尝试在PushNotification
的帮助下使用Device Group
向FCM
发送Firebase Cloud Functions
但是一旦发送通知,它将返回代码{{ 1}}但失败了:
200
以下是我用来发送此通知的代码...我错过了什么?
SUCCESS response= {
multicast_id: 8834986220110966000,
success: 0,
failure: 1,
canonical_ids: 0,
results: [ { error: 'InvalidRegistration' } ]
}
JSON值const options = {
method: 'POST',
uri: 'https://fcm.googleapis.com/fcm/send',
headers: {
'Authorization': 'key=' + serverKey,
},
body: {
to: groupId,
data: {
subject: message
},
notification: {
title: title,
body: body,
badge: 1,
},
content_available: true
},
json: true
};
return rqstProm(options)
.then((parsedBody) => {
console.log('SUCCESS response=', parsedBody);
})
.catch((err) => {
console.log('FAILED err=', err);
});
,title
,body
,subject
为message
答案 0 :(得分:4)
就我而言,我正在向主题(“ topics/my-topic
”)发送通知。我没有在主题的开头添加/
,所以遇到了同样的问题。因此主题应为/topics/my-topic
。
这可能有帮助!
答案 1 :(得分:3)
有一种更简单的方法可以从云功能向设备组发送消息。使用admin.messaging().sendToDeviceGroup()。示例代码和说明位于this guide。
我认为您当前的方法失败了,因为groupId
中提供的群组通知密钥有问题。它应该是您在创建设备组时返回的字符串键值。错误代码列在this table中。对于200 / InvalidRegistration,它说:
检查传递给服务器的注册令牌的格式。 确保它与客户端应用程序收到的注册令牌相匹配 从注册Firebase通知。不要截断或添加 其他角色。
答案 2 :(得分:0)
注册令牌与某组发件人绑定。当客户端应用程序注册FCM时,它必须指定允许哪些发件人发送消息。在向客户端应用程序发送消息时,您应该使用其中一个发件人ID。
您需要做的是添加一个http标题'project_id'和您的发件人ID。
答案 3 :(得分:-3)
for (let star of stars) {
star = new Star()
}
仅表示令牌无效或已过期。您可以卸载该应用程序,然后重新安装并获取一个新令牌,然后尝试使用该令牌。这肯定会解决您的问题。
您可以阅读更多here
稍后谢谢!