删除应用程序然后重新安装应用程序时的iOS推送通知行为

Vic*_*ram 21 iphone push-notification apple-push-notifications ios

我遇到了一个不寻常的情况,当我的应用程序被删除然后重新安装时,用户继续收到通知.方案如下:

  • 用户从appstore安装应用程序
  • 用户登录我们的应用程序,我们注册他们的通知
  • 用户从其设备中删除应用程序
  • 用户从appstore重新安装应用程序
  • 即使用户尚未启动应用程序,登录等,用户也会收到通知

我对APN架构的理解是,一旦您的应用程序从您的设备中删除,它就会被操作系统本身从APN取消注册.在您调用"registerForRemoteNotificationTypes"之前,重新安装应用程序不会重新启用通知 - 因此,如果使用旧令牌向设备发送了注释,则由于尚未调用上述方法,APN将无法提供该注释.

这不准确吗?

Era*_*ran 20

令牌保持不变.对于设备上的所有应用程序来说,它甚至是相同的.它仅在您更改操作系统版本时更改.但是,这仍然无法解释您遇到的奇怪行为.

我相信只有在Apple确定已从设备上卸载应用程序之后(通常在设备卸载后在特定设备上向应用程序发送通知时),它才会取消注册应用程序.如果在卸载时间与新安装时间之间未安装应用程序的设备上未向应用程序发送通知,则Apple不知道该设备已卸载该应用程序,因此仍会为APNS注册.

反馈服务的行为支持我的理论 - 如果您卸载应用程序并调用反馈服务,您将无法获得卸载该应用程序的设备的设备令牌.只有在您尝试向该设备发送通知后,Apple才会检测到卸载并在反馈服务中返回该设备令牌.

我应该添加的最后一件事 - 如果卸载的应用程序是设备上注册了推送通知的最后一个应用程序,APN服务将永远不会知道该应用程序已被卸载,因此在重新启动后它仍将在APN注册安装.

  • 这个答案现在已经过时了。我已经使用iOS 11和XCode 9.2进行了测试,每次我在iPhone上安装生产版本时,如果用户允许APNS发送推送通知,则会为应用程序生成一个新的设备令牌,这意味着您的通知将不会使用旧设备接收令牌。 (2认同)

Gab*_*Cas 10

当您删除应用程序时,操作系统不会从APNS"取消注册"它.您必须向已删除应用程序的设备发送通知才能"取消注册"它.这可能需要APNS的一些尝试,直到它确定应用程序已被删除.