大约在去年第三季度,我不仅可以使用UNNotificationServiceExtension
解密传入的推送通知内容(一个常见的用例),而且还可以在每次收到新的通知时删除以前传递的通知。 / p>
我使用UNUserNotificationCenter.current().getDeliveredNotifications
检索已发送的通知,然后删除了我需要删除的通知。
但是,随着新的一年的来临,我突然注意到我的应用程序不再从通知中心删除以前传递的通知,尽管该服务扩展中仍然存在该代码且未引发任何错误,并且服务扩展中的代码正常工作。
调试后,我发现UNUserNotificationCenter.current().getDeliveredNotifications
现在会返回一个空的通知数组,即使锁定屏幕上有多个通知也是如此。
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
只是不执行任何操作,因此即使仅使用该调用,而不会检索或过滤已传递的通知,也不会删除任何内容。
有人知道还有没有办法做到这一点?
还是Apple可能禁止了此功能?
答案 0 :(得分:2)
似乎apns-collapse-id
APNs请求标头在这里可能有用。
它可用于更新以前的通知内容并将其置于顶部。
具有相同折叠标识符的多个通知将作为单个通知显示给用户。
根据docs,apns-collapse-id
指定通知identifier
(通常是随机的)。 BE可以在有效负载中发送具有给定ID的新“删除”通知,以在removeDeliveredNotifications(withIdentifiers:)
函数中使用它。