Javascript Firebase函数不发送通知
我已经在我的一个新闻应用程序上使用函数大约两周了。然而,我已经用不同的新闻创建了第二个新闻应用程序。PN的调用使用一个web钩子进行,该钩子将文章的数据发送给所有订阅主题的人。如果我在以前的应用程序中使用web钩子,那么它工作得很好。我使用了旧应用程序中相同的函数代码,并将其粘贴到新应用程序中,但它不起作用 我有:Javascript Firebase函数不发送通知,javascript,firebase,firebase-cloud-messaging,google-cloud-functions,Javascript,Firebase,Firebase Cloud Messaging,Google Cloud Functions,我已经在我的一个新闻应用程序上使用函数大约两周了。然而,我已经用不同的新闻创建了第二个新闻应用程序。PN的调用使用一个web钩子进行,该钩子将文章的数据发送给所有订阅主题的人。如果我在以前的应用程序中使用web钩子,那么它工作得很好。我使用了旧应用程序中相同的函数代码,并将其粘贴到新应用程序中,但它不起作用 我有: 检查当我使用FCM/APNS-Working发送某些主题时是否在iPhone上收到通知 检查了通知的代码和格式-没有问题 在调用其他函数时进行测试-正常工作 手机已订阅推送服务-它
- 检查当我使用FCM/APNS-Working发送某些主题时是否在iPhone上收到通知
- 检查了通知的代码和格式-没有问题
- 在调用其他函数时进行测试-正常工作
- 手机已订阅推送服务-它是
- 设备已订阅主题-它是。使用FCM主题推送进行测试
- 方法swizzling已启用-它是
const functions=require('firebase-functions');
const admin=require('firebase-admin');
admin.initializeApp();
exports.sentNotify=functions.https.onRequest((请求,响应)=>{
日志(“收到通知请求”);
console.log(request.body);
让topic=“Martin”//request.body.primaryCategory;
让热度=request.body.hottness;
让title=request.body.title;
let description=request.body.description;
让缩略图=request.body.缩略图;
让link=request.body.url;
const messagePayload={
通知:{
标题:标题,,
正文:说明,
图标:“缩略图”,
声音:'默认',
徽章:“0”
},
数据:{
link\u url:link,
类别:“新闻类别”
}
};
常量选项={
优先级:“高”,
寿命:60*60*24
};
return admin.messaging().sendToTopic(主题、消息负载、选项)
.然后(()=>{
回复。发送(“确定”)
返回;
});
});
这是我发出的请求:
curl-X“POST”https://us-central1-.cloudfunctions.net/sentNotify" \
-H'内容类型:应用程序/json;字符集=utf-8'\
-d$'{
“热”:7000,
“缩略图”:“缩略图”,
“头衔”:“头衔”,
“发布日期”:“2018-08-24T12:37:08.000Z”,
“说明”:“这是说明”,
“主要类别”:“一般类别”,
“url”:”https://google.com"
}'
在发送消息之前,您正在向客户端发送响应:
response.send("OK")
当您从HTTPS类型的函数发送响应时,这将有效地终止该函数。任何后续代码都可能无法执行(它不是确定性的),因为云功能保留在发送响应后关闭任何进一步资源的权利。这意味着您的消息可能根本不会被发送
仅在完成所有工作(包括异步工作(如发送消息))后,才从HTTPS函数发送响应。这意味着您应该安排在消息最终送达后才发送响应:
return admin.messaging().sendToTopic(topic, messagePayload, options)
.then(() => {
response.send("OK")
})
有关更多详细信息,请参阅