Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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
Php 如何从API服务器删除特定推送通知_Php_Android_Cordova_Firebase_Firebase Notifications - Fatal编程技术网

Php 如何从API服务器删除特定推送通知

Php 如何从API服务器删除特定推送通知,php,android,cordova,firebase,firebase-notifications,Php,Android,Cordova,Firebase,Firebase Notifications,我正在使用向Firebase发送通知: 。。。 $fields=[ '到'=>设备\u令牌, “通知”=>[ “标题”=>“标题”, “正文”=>“通知正文”, “标记”=>“标记”, ], ]; $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,'https://fcm.googleapis.com/fcm/send' ); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_HTTPH

我正在使用向Firebase发送通知:

。。。
$fields=[
'到'=>设备\u令牌,
“通知”=>[
“标题”=>“标题”,
“正文”=>“通知正文”,
“标记”=>“标记”,
],
];
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,'https://fcm.googleapis.com/fcm/send' );
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($fields));
$result=curl\u exec($ch);
...
它在我的安卓系统上正常弹出。我还可以使用
标记
属性编辑通知

但是如何删除通知?例如,如果有人在浏览器中阅读,我需要从其他设备中删除此通知

我试图在已编辑的通知中发送空的
正文
,但不起作用


在我正在使用的Cordova前端上,我不确定问题是在后端还是前端。

我认为一旦通过Firebase API发送到设备,就不可能删除通知消息


我看到的一个可能的解决方案是,一旦用户看到要将其发送到后端的消息,就创建一个POST通知,该消息将发送一个带有特定“标志”的新通知,并且由于“标志”而不显示此新通知(您在应用程序中实现了if检查)。当设备读取该标志时,它会根据“标志”删除通知。您可以使用
NotificationManager
中的
cancel()

最好的解决方案是使用Firebase的设备组选项

通过这种方式,您可以轻松地在一个唯一密钥下注册同一用户的多个设备。因此,当您在两个不同的设备(例如浏览器和智能手机)上向该用户发送推送通知时,用户从一个设备读取通知,而该通知从另一个设备神奇地消失

如果您已经进入cordova和Firebase的世界,那么这非常简单

以下是参考资料: