Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase函数不发送通知_Javascript_Firebase_Firebase Cloud Messaging_Google Cloud Functions - Fatal编程技术网

Javascript Firebase函数不发送通知

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上收到通知 检查了通知的代码和格式-没有问题 在调用其他函数时进行测试-正常工作 手机已订阅推送服务-它

我已经在我的一个新闻应用程序上使用函数大约两周了。然而,我已经用不同的新闻创建了第二个新闻应用程序。PN的调用使用一个web钩子进行,该钩子将文章的数据发送给所有订阅主题的人。如果我在以前的应用程序中使用web钩子,那么它工作得很好。我使用了旧应用程序中相同的函数代码,并将其粘贴到新应用程序中,但它不起作用

我有:

  • 检查当我使用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")
})
有关更多详细信息,请参阅