我遇到了一个不寻常的情况,即当我的应用被删除然后重新安装时,用户会继续收到通知。方案如下:
我对APN架构的理解是,一旦您的应用程序从您的设备中删除,它就会被操作系统本身从APN取消注册。在您调用“registerForRemoteNotificationTypes”之前,重新安装应用程序不会重新启用通知 - 因此,如果使用旧令牌向设备发送了注释,则由于尚未调用上述方法,APN将无法提供该注释。
这不准确吗?
答案 0 :(得分:20)
令牌保持不变。对于设备上的所有应用程序来说,它甚至是相同的。它仅在您更改操作系统版本时更改。但是,这仍然无法解释您遇到的奇怪行为。
我相信只有在Apple确定应用程序已从设备中卸载后(通常在设备卸载后在特定设备上向应用程序发送通知时才会发生),它会取消注册该应用程序。 如果在卸载时和新安装时间之间未安装应用程序的设备上没有向应用程序发送通知,则Apple不知道该设备已卸载该应用程序,因此仍在APNS注册。
反馈服务的行为支持我的理论 - 如果您卸载应用程序并调用反馈服务,您将无法获得卸载该应用程序的设备的设备令牌。只有在您尝试向该设备发送通知后,Apple才会检测到卸载并在反馈服务中返回该设备令牌。
我应该添加的最后一件事 - 如果卸载的应用程序是设备上注册推送通知的最后一个,则APN服务将永远不会知道应用程序已卸载,因此它仍将在APN注册后注册正在重新安装。
答案 1 :(得分:10)
当您删除应用程序时,操作系统不会从APNS“取消注册”它。您必须向已删除应用程序的设备发送通知才能“取消注册”它。这可能需要APNS的一些尝试,直到它确定应用程序已被删除。