ios - 隐藏通过 NotificationService Extension 收到的通知

标签 ios swift apple-push-notifications unnotificationserviceextension

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

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

我也试过将 aps["content-available"] 设置为 1 并将 body 设置为 ""但我得到了相同的效果。

最佳答案

现状

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

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

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

解决方案

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

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

关于ios - 隐藏通过 NotificationService Extension 收到的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49329279/

相关文章:

iOS 输入字段 - 键入文本时不可见

ios - swift : show subview with animation on click of button

ios - segue 关闭时执行操作

ios - GCM iOS Production 未收到通知

ios - 当 NSNotificationCenter 是两个 View Controller 时,在 applicationDidEnterBackground 中调用了两次?

ios - NSDateFormatter 无法解析德国日期

ios - 如何从底部制作一个 UILabel "fill up"?

iphone - 尝试发出推送通知时出现 SSL Broken pipeline 错误

ios - 基于时间的 iOS 自动启动

ios - UIView 上的 CollectionView 单元实例(委托(delegate)之外)无法快速运行 5