gmail应用如何处理iOS中的推送通知?

时间:2017-05-19 13:14:53

标签: ios apple-push-notifications

我正在尝试复制gmail对iOS上推送通知的处理。我正在看两种行为:

  1. 当新的电子邮件发送到我的收件箱时,我收到一个新的通知,其中相应增加了徽章编号。
  2. 当我在gmail网站上阅读/删除电子邮件时,徽章编号会相应减少 - 尽管通知不会像在Android上那样被删除。
  3. 虽然第一个非常简单,但第二个却让我感到困惑,特别是考虑到即使在我杀死gmail应用程序和/或重启设备后也会发生这种情况。

    根据我的阅读/实验,当应用程序未运行时,它只能接收必须包含显示通知的远程消息。这些可以通过实施UNNotificationServiceExtension来拦截和修改,但最终一个必须向用户显示通知,否则系统会负责这样做。

    所以我的问题是gmail应用程序在未运行时使用什么技巧来接收消息?它是如何防止这些消息在系统托盘中结束的?

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案。我正在使用FCM,因此诀窍是发送包含notification对象的消息有效负载。 notification对象应仅包含badge值。这将导致徽章更新,而不会在通知托盘中显示任何内容。

重要的是要注意,该消息不能被应用程序(也不是UINotificationExtension)拦截/修改,因此应牢记以下内容:

  1. 需要跟踪服务器端的正确徽章编号。

  2. 将数据传递给此邮件可能无效,因为它会丢失。

  3. 不能将此作为触发器在应用中执行任何操作。

  4. 只有在徽章编号达到0后才能删除应用的所有通知,这才真正有用。