【问题标题】:Hide notifications received through NotificationService Extension隐藏通过 NotificationService 扩展收到的通知
【发布时间】:2018-08-26 00:35:31
【问题描述】:

我使用 NotificationService 扩展目标能够在推送通知出现之前对其进行修改。 它运行良好,但有些通知在处理后我不想呈现给用户。

我尝试将 bestAttemptContent 的标题和正文设置为“”,但它会返回完整的通知。

我也尝试将 aps["content-available"] 设置为 1,将 body 设置为 "",但效果相同。

【问题讨论】:

    标签: ios swift apple-push-notifications unnotificationserviceextension


    【解决方案1】:

    情况

    我实际上尝试实现与您相同的目标,即使用本地通知服务扩展管理将哪些类型的通知传递到特定设备。但是,我必须弄清楚这是设计使然...

    • ...您无法通过离散 api 取消通知。
    • ...如果您清空通知的内容,通知将被传递,就像从未调用过通知服务扩展一样。

    这是因为 Apple 不希望您向用户的手机发送带有通知的垃圾邮件(即使或尤其是在后台处理甚至未发送时),因为这可能会耗尽电池寿命 e。 g.

    解决方案

    对于现在要做什么,您有四种可能的选择:

    • 使用静默推送。然后触发本地通知。注意:静默推送并不总是可靠的。
    • 使用 VoIP 推送。这就是 WhatsApp 使用的 e。 G。据我所知,它将允许取消通知之类的事情。但是,Apple 在应用程序审查方面非常严格:只有 VoIP 应用程序才被允许使用 VoIP 推送(我猜这就是 WhatsApp 引入语音通话的原因,因为当通知服务扩展时,他们需要 VoIP 推送来在后台解密他们的消息在 iOS 9 下还不是一个选项)。
    • 处理任何自定义取消逻辑服务器端,只向应该立即接收这些通知的用户发送通知。
    • 处理通知文本到不为空但隐藏原始通知文本的内容。这可能很有用,如果你 e. G。推送您的应用程序的专业版目前可以打折:对于现有的专业用户,您只需编辑文本以阅读“感谢您成为专业人士。”。

    【讨论】:

    • 从 iOS 13 开始,VoIP 推送不再是解决方案,因为您必须在收到 VoIP 推送时通过 CallKit 报告新的来电。
    • 为这个出色的答案添加一点点:1. 从 iOS 13.3 开始,有新的权利 com.apple.developer.usernotifications.filtering 允许 NotificationExtension 过滤通知。您可以为自己索取一份。 2. 还有一个特殊的权利com.apple.developer.pushkit.unrestricted-voip 让我们的应用保持iOS13 之前的VoIP 推送行为。截至今天,许多大型应用商店应用都在使用它:Signal、Telegram、FB Messenger、Skype、Whatsapp。没有官方的方法可以得到一个。
    猜你喜欢
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多