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

标签 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我不确定问题出在后端还是前端。

最佳答案

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

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

关于php - 如何从 API 服务器删除特定的推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45595760/

相关文章:

javascript - ajaxform jQuery 插件发送请求后重置表单

android - 文件 0000000000000001.db 是什么?

ios - Angular 2 数字键盘启动

android - Admob 插页式广告未关闭

java - Android:如何使用SDK访问SIM联系人表?

java - zipalign 未随 Java SDK/JRE 一起安装

javascript - SAPUI5 - 导航前预加载 View 。性能改进

php - 将变量发送到表 PHP SQL

php - Codeigniter 根据字符串列查询数组数据

php - 来自数据库的 cakephp 多语言动态内容