无法使用FCM向iOS发送静默推送通知
我正在尝试使用node.js模块和以下代码向iOS设备发送静默数据通知:无法使用FCM向iOS发送静默推送通知,ios,firebase,apple-push-notifications,firebase-cloud-messaging,Ios,Firebase,Apple Push Notifications,Firebase Cloud Messaging,我正在尝试使用node.js模块和以下代码向iOS设备发送静默数据通知: //加载库 var firebase=require('firebase-admin'); //添加API密钥 firebase.initializeApp({ 凭证:firebase.credential.cert(“./certs/firebase private key.json”) }); //从设备发送回的设备令牌 var标记='00397db1aa2f1fa625f71deef0c8e8ef0d4427cf60
//加载库
var firebase=require('firebase-admin');
//添加API密钥
firebase.initializeApp({
凭证:firebase.credential.cert(“./certs/firebase private key.json”)
});
//从设备发送回的设备令牌
var标记='00397db1aa2f1fa625f71deef0c8e8ef0d4427cf60a13c0fb4bd290dcec41f4b';
//要发送的数据消息(不包含通知详细信息,因此应保持沉默)
var消息={
数据:{
键1:'你好',
关键2:“世界”
}
};
变量选项={
优先级:“高”,
寿命:60*60*24,
contentAvailable:true,
可变内容:true
};
//发送消息
firebase.messaging().sendToDevice(令牌、消息、选项)。然后(函数(res){
//成功了!
控制台日志(res);
})
.catch(函数(err){
//它失败了:(
控制台日志(err);
});
我收到一个响应,说消息已发送,但它从未到达设备上。然而,如果我使用它发送消息,效果很好(下面的示例负载):
有什么想法吗
仅供参考:我也在上打开了一张票证这是PHP版本,用于发送ios静默通知。请添加“内容可用”=>1用于静默通知
$body = array(
'content-available' => 1,
'sound' => ''
);
{
"aps" : {
"alert" : "Notification with custom payload!",
"badge" : 1,
"content-available" : 1
},
"data" :{
"title" : "Game Request",
"body" : "Bob wants to play poker",
"action-loc-key" : "PLAY"
}
}
您的代码看起来正确。您可以在可变内容和可用内容中尝试多个true和false组合。 您也可以尝试不发送可变内容字段。但据我记忆所及,两者都应该是正确的 另一种调试方法是检查NodeJSON输出的内容。您可以尝试相同的方法 有效载荷在NWPusher或邮递员。这会给你一些线索 我已经在《邮递员》中试用了以下有效载荷,对我来说效果很好
{"mutable_content":true,"content_available" : true,"priority":"high","registration_ids":["d3-fa7XDQQ4:APA91bEKXbT3HAv6ko9RukcxaB4QBr8zOIT06CBpj9o0Sl6TxsMpTnAMQ86t14foIcuQuDUyzMApbvDORELYyD0WOX3BcfP7ZNtWx9uY0JGm2B7cmdlPoOFs68fe6rz3Q7tq_8Ib7Y4H"]}
对于无声通知,您需要确保以下几点: 1-您的有效负载中没有
警报
键
2-在有效负载中提供内容:1
3-启用推送通知的后台模式(选择您的目标>功能>后台模式>远程通知)
样本有效载荷:
{
"aps" : {
"content-available" : 1
},
"acme1" : "bar",
"acme2" : 42
}
有关更多信息,请查看苹果的参考资料:对于仍然存在此问题的任何人,正如Gokul提到的,代码很好 只需确保您按照中的步骤操作即可 特别要确保您正在向AppDelegate添加正确的回调:
application(uuquo:didReceiveMemotentification:fetchCompletionHandler:)
请注意,它与用于处理常规通知的应用程序(DidReceiveMemotentification:)不同。
另外,请确保在项目设置的后台模式下打开远程通知,如下所述:
您是否检查了iOS的静默通知的有效负载?您是指iOS文档吗?是的,我是指iOS静默通知的标准有效负载只有静默通知不会发出。?或者正常通知本身不会发出。?您是否可以添加sendToDevice函数中发生的情况您必须使用较旧版本的API,如我使用该负载时出现以下错误:
消息传递负载包含无效的“aps”属性。有效属性为“数据”和“通知”“
我这样做了,但由于我提到的错误,它失败了。正如我所说的,您必须使用不同版本的API。问题不需要PHPscript@JohnDoherty,您是否尝试在可变内容和可用内容中结合使用true和false。。?
{
"aps" : {
"content-available" : 1
},
"acme1" : "bar",
"acme2" : 42
}