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

时间:2017-08-09 16:10:15

标签: php android cordova firebase firebase-notifications

我正在使用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,我不确定问题是在后端还是前端。

2 个答案:

答案 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