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

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

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

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

这不准确吗?

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

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

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

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

当您删除应用程序时,操作系统不会从APNS“注销”它。 您必须将通知发送至已删除应用程序的设备,以便“注销”该设备。 这可能需要从APNS尝试几次,直到它发现应用程序已被删除。