我正在尝试复制gmail对iOS上推送通知的处理。我正在看两种行为:
虽然第一个非常简单,但第二个却让我感到困惑,特别是考虑到即使在我杀死gmail应用程序和/或重启设备后也会发生这种情况。
根据我的阅读/实验,当应用程序未运行时,它只能接收必须包含显示通知的远程消息。这些可以通过实施UNNotificationServiceExtension
来拦截和修改,但最终一个必须向用户显示通知,否则系统会负责这样做。
所以我的问题是gmail应用程序在未运行时使用什么技巧来接收消息?它是如何防止这些消息在系统托盘中结束的?
答案 0 :(得分:1)
我终于找到了解决方案。我正在使用FCM,因此诀窍是发送包含notification
对象的消息有效负载。 notification
对象应仅包含badge
值。这将导致徽章更新,而不会在通知托盘中显示任何内容。
重要的是要注意,该消息不能被应用程序(也不是UINotificationExtension
)拦截/修改,因此应牢记以下内容:
需要跟踪服务器端的正确徽章编号。
将数据传递给此邮件可能无效,因为它会丢失。
不能将此作为触发器在应用中执行任何操作。
只有在徽章编号达到0后才能删除应用的所有通知,这才真正有用。