隐藏通过NotificationService Extension

时间:2018-03-16 20:48:15

标签: ios swift apple-push-notifications apn

我使用NotificationService Extension目标能够在呈现之前修改推送通知。 它运行良好,但有一些通知,我希望它们在处理后不会呈现给用户。

我试图将bestAttemptContent标题和正文设置为""但它会返回完整的通知。

我还尝试将aps [" content-available"]设置为1,将正文设置为""但我得到同样的效果。

2 个答案:

答案 0 :(得分:7)

情况

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

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

这是因为Apple并不希望您通过通知(即使或特别是在后台处理甚至未送达)向用户的手机发送垃圾邮件,因为这可能会耗尽电池寿命e。克。

解决方案

您现在有四种可能的选择:

  • 使用静默推送。然后触发本地通知。注意:无声推送并不总是可靠的。
  • 使用 VoIP推送。这就是WhatsApp使用的e。 G。据我所知,它会允许取消通知。然而,苹果在应用评论方面是严格的:只允许VoIP应用使用VoIP推送(我猜测为什么WhatsApp引入语音呼叫,因为他们需要VoIP推送在后台解密他们的消息通知服务扩展程序还不是iOS 9下的一个选项。
  • 通过仅向应立即接收这些通知的用户发送通知来处理任何自定义取消逻辑服务器端
  • 将通知文本操作为非空的内容,但仍隐藏原始通知文本。如果你这样做,这可能很有用。 G。发送推文,您的应用程序的专业版目前有折扣:对于现有专业用户,您可以编辑文本阅读"感谢您成为专家。"。

答案 1 :(得分:0)

我认为没有办法不提出UNUserNotification

如果您不需要某些通知,只需重新编写逻辑以便不首先发送它。

如果您仍想接收,我建议您考虑无声通知。