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
无法使用FCM向iOS发送静默推送通知_Ios_Firebase_Apple Push Notifications_Firebase Cloud Messaging - Fatal编程技术网

无法使用FCM向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

我正在尝试使用node.js模块和以下代码向iOS设备发送静默数据通知:

//加载库
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
}