如何删除已经发送的推送通知?

时间:2018-12-17 14:23:04

标签: android ios push-notification onesignal quasar-framework

情况:

我需要向特定用户组发送推送通知。
当该组的第一个用户执行特定操作时(单击通知内的按钮),我需要从所有其他用户的设备上删除该通知。

注释:

我正在将Quasar用作混合框架,并将Laravel用作服务器API。 我使用oneSignal发送带有php cURL请求的推送通知。

作为设备操作系统,我现在将重点放在Android上,但理想情况下,我正在寻找一种在Android和IOS上实现此目标的方法。

尝试:

此刻,我发送带有notification_id作为有效内容的通知。 当用户单击该按钮时,它将触发一个回调,该回调将notification_id发送回服务器。到这里为止没有问题。

我有需要从其他设备上删除的通知的ID。

但是现在我不知道如何从服务器中删除它。

OneSignal有一个cancel method,但仅适用于计划的通知(未发送)。如果我尝试将该方法应用于已发送的通知,则会显示错误:Notification has already been sent to all recipients

问题:

发送后,是否可以从服务器中删除推送通知?
如果没有,您建议采取什么替代措施来实现该行为?

谢谢!

1 个答案:

答案 0 :(得分:2)

嘿,请检查以下步骤,也许对iOS有帮助。

场景

-服务器将向特定用户组发送通知

-第一个用户将点击Notification Try,之后仅使用通知ID的API调用通知服务器。 (您可以将逻辑放在服务器端,如果用户第一次通知您通知ID,则可以向所有用户发送静默通知,而尚未看到该通知的左用户可以删除下面一行中的所有已传递和待处理的通知代码)。

只需检查通知类型。 如果通知为静默且通知类型为“要从其他用户设备删除通知”,则只需在didReciveRemortNotification APP委托方法中编写以下代码即可。

application.applicationIconBadgeNumber = 0
   // For Clear Badge Counts
let center = UNUserNotificationCenter.current()
center.removeAllDeliveredNotifications()
   // To remove all delivered notifications
center.removeAllPendingNotificationRequests()
  // To remove all pending notifications which are not delivered yet but scheduled.