有什么方法可以在收到新通知时删除已发送的通知?

时间:2019-02-07 03:43:18

标签: swift push-notification apple-push-notifications unusernotificationcenter

大约在去年第三季度,我不仅可以使用UNNotificationServiceExtension解密传入的推送通知内容(一个常见的用例),而且还可以在每次收到新的通知时删除以前传递的通知。 / p>

我使用UNUserNotificationCenter.current().getDeliveredNotifications检索已发送的通知,然后删除了我需要删除的通知。

但是,随着新的一年的来临,我突然注意到我的应用程序不再从通知中心删除以前传递的通知,尽管该服务扩展中仍然存在该代码且未引发任何错误,并且服务扩展中的代码正常工作。

调试后,我发现UNUserNotificationCenter.current().getDeliveredNotifications现在会返回一个空的通知数组,即使锁定屏幕上有多个通知也是如此。

UNUserNotificationCenter.current().removeAllDeliveredNotifications()只是不执行任何操作,因此即使仅使用该调用,而不会检索或过滤已传递的通知,也不会删除任何内容。

有人知道还有没有办法做到这一点?

还是Apple可能禁止了此功能?

1 个答案:

答案 0 :(得分:2)

似乎apns-collapse-id APNs请求标头在这里可能有用。

  1. 它可用于更新以前的通知内容并将其置于顶部。

      

    具有相同折叠标识符的多个通知将作为单个通知显示给用户。

  2. 根据docsapns-collapse-id指定通知identifier(通常是随机的)。 BE可以在有效负载中发送具有给定ID的新“删除”通知,以在removeDeliveredNotifications(withIdentifiers:)函数中使用它。