我正在使用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,我不确定问题是在后端还是前端。
答案 0 :(得分:2)
我不认为一旦通过Firebase API将通知消息发送到设备,就可以删除该通知消息。
我看到的一个可能的解决方案是,一旦用户看到消息将其发送到您的后端,就会创建一个POST通知,后者会发送一个带有特定"标记的新通知。并且由于"标志"而未选择显示此新通知。 (您在应用中实施if check)。当设备读取该标志时,它会根据"标记"删除通知。您可以使用cancel()
中的NotificationManager
执行此操作。 Documentation
答案 1 :(得分:0)
最佳解决方案是使用Firebase的设备组选项。
通过这种方式,您可以在唯一键下轻松注册同一用户的多个设备。因此,当您在两个不同的设备(例如浏览器和智能手机)上向该用户发送推送通知时,用户会从一台设备上读取通知,并从另一台设备中神奇地消失。
如果你已经进入了cordova和Firebase世界,这很简单。
以下是参考:https://firebase.google.com/docs/cloud-messaging/js/device-group