24

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

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

我对 APNs 架构的理解是,一旦你的应用程序从你的设备中删除,它就会被操作系统本身从 APNs 中注销。在您调用“registerForRemoteNotificationTypes”之前,重新安装应用程序不会重新启用通知 - 因此,如果使用旧令牌将便条发送到设备,APNs 将不会发送它,因为尚未调用上述方法。

这不准确吗?

4

2 回答 2

23

令牌保持不变。设备上的所有应用程序甚至都一样。它仅在您更改操作系统版本时更改。但是,这仍然不能解释您遇到的奇怪行为。

我相信只有在 Apple 确定该应用程序已从设备上卸载后(这通常发生在您在设备卸载后向特定设备上的应用程序发送通知时),它才会取消注册该应用程序。如果在卸载应用程序和重新安装时间之间卸载应用程序的设备上的应用程序没有收到通知,Apple 不知道该设备卸载了应用程序,因此它仍然注册了 APNS。

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

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

于 2013-02-13T16:48:18.660 回答
11

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

于 2013-02-13T16:50:56.177 回答