如何在多个 iOS 设备之间同步推送通知?

How to sync push notifications across multiple iOS devices?

如何在多个 iOS 设备之间同步推送通知?

场景是: 用户在两台设备上安装了一个应用程序。 两个设备都会收到远程通知。 用户在一台设备上打开应用程序。 另一台设备上的推送通知应该会消失。

许多应用程序都这样做,例如Facebook Messenger,但这是如何实现的?

(Swift)

这是我实现的一种方式:

  • 收到推送通知后(它必须是带有 'content-available' 标志的那种,以便它被发送到您的应用程序,即使用户没有点击它),应用程序应调用您的服务器,通知服务器已收到。请注意,拥有该标志意味着您的应用可能会收到两次推送通知:一次是在系统收到通知时,第二次是在用户点击它时。或者它可能根本不会进来,但那是另一个讨论。
  • 为响应此调用,服务器应向为此帐户注册的其他设备发送静默推送通知(可选择自定义负载)
  • 收到此推送通知后,其他客户端将 application-banner 计数设置为零(这将从通知中心清除推送通知。这没有正式记录,因此它可能会停止工作iOS).
  • 的未来版本

我认为以下应该有效(有通常的警告):

  1. 发送静默推送通知(content-available已设置,aps中没有alert/sound/badge,但通知的详细信息在2中使用。)
  2. 使用 1 中的数据创建本地通知,立即呈现,并保留对它的引用
  3. 当用户对本地通知进行操作时,向服务器发送请求让它知道
  4. 服务器向同一用户的所有其他设备发送另一个静默通知,让他们知道删除通知
  5. 收到后,取消2中创建的本地通知