iOS 9 中收到重复的远程推送。

由于 iOS 9 系统的 Bug,App 在接收远程推送的时候,可能会出现重复的情况。

主要有以下两种现象:

  1. 收到一条远程推送,通知栏下拉显示为一条。

  2. 收到两条远程推送,通知栏下拉显示为两条。

原因分析:

  1. iOS 9 之后的系统,每次重装和卸载 App 都会分配新的 deviceToken,但是旧的 deviceToken 并没有立即失效。通过 APNs 进行远程推送时,APNs 不会通知旧的 deviceToken 失效,并会继续推送到设备,在系统中显示为两条远程推送。

  2. 因为在 connect 的时候我们会根据 userId 进行去重,所以 IM 服务(聊天消息的远程推送)不会出现此问题。

    只有在使用“推送服务”并且用户短时间内重装过 App 才会概率性的出现这种情况。

  3. 收到一条远程推送,iOS 9 可能会弹两次或显示为两条消息(概率性)。

远程推送重复的bug,只有在 iOS 9.X 版本上会出现, iOS 8 及以下版本不会出现。

截至 iOS 9.2 版本,此 Bug 依然存在,我们会持续跟踪并更新此问题的状态。

参考:

https://forums.developer.apple.com/thread/13414

https://forums.developer.apple.com/message/86904

http://stackoverflow.com/questions/32275569/apple-push-notification-service-multiple-device-tokens-are-valid-for-the-same

http://stackoverflow.com/questions/32840916/receiving-duplicate-push-notification-ios9