由于 iOS 9 系统的 Bug,App 在接收远程推送的时候,可能会出现重复的情况。
主要有以下两种现象:
-
收到一条远程推送,通知栏下拉显示为一条。
-
收到两条远程推送,通知栏下拉显示为两条。
原因分析:
-
iOS 9 之后的系统,每次重装和卸载 App 都会分配新的 deviceToken,但是旧的 deviceToken 并没有立即失效。通过 APNs 进行远程推送时,APNs 不会通知旧的 deviceToken 失效,并会继续推送到设备,在系统中显示为两条远程推送。
-
因为在 connect 的时候我们会根据 userId 进行去重,所以 IM 服务(聊天消息的远程推送)不会出现此问题。
只有在使用“推送服务”并且用户短时间内重装过 App 才会概率性的出现这种情况。
-
收到一条远程推送,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/32840916/receiving-duplicate-push-notification-ios9