我正在使用 this PHP script用于向 Firebase 发送通知:
...
$fields = [
'to' => DEVICE_TOKEN,
'notification' => [
'title' => "Title",
'body' => 'notification body',
'tag' => 'tag',
],
];
$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_exec($ch );
...
它在我的 android 上正常弹出。我还可以使用 tag
属性编辑通知
但是我怎样才能删除通知?例如,如果有人在浏览器中阅读它,我需要从其他设备上删除此通知。
我试图在已编辑的通知中发送空的 body
,但没有成功。
在 Cordova 前端我使用 cordova-plugin-firebase我不确定问题出在后端还是前端。
最佳答案
我认为一旦通过 Firebase API 将通知消息发送到设备,就不可能删除它。
我看到的一个可能的解决方案是在用户看到消息后创建一个 POST 通知,将其发送到您的后端,后端发送一个带有特定“标志”的新通知,并且不会因为“标志”而显示这个新通知"(您在您的应用程序中实现 if 检查)。当设备读取该标志时,它会根据“标志”删除通知。您可以使用 NotificationManager
中的 cancel()
执行此操作。 Documentation
关于php - 如何从 API 服务器删除特定的推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45595760/