为什么每次用户启动应用程序时都要注册推送通知?

在Apple文档中,您可以find以下语句:

应用程序应该在每次启动时注册,并为其提供者提供当前令牌。 它调用registerForRemoteNotificationTypes:启动注册过程。

所以当我在我的应用程序中实现推送通知时,我必须注册设备,并且在文档中做了他们所说的:每当用户启动我的应用程序时注册。 我从APNS收到的令牌对于给定的用户总是相同的。

我的问题是:为什么我需要每次注册,如果APNS总是给我同样的道理?

我读的地方比令牌可以改变,如果用户刷他的iPhone或应用程序。 这是唯一的情况吗?

谢谢 !

我从APNS收到的令牌对于给定的用户总是相同的。

除此之外,基本上没有什么东西可以作为iPhone设置中的“用户”。 每个设备的每个应用的设备标记始终相同。 因此,同一设备上的不同应用获得不同的令牌。 两个不同设备上的相同应用获取两个不同的令牌。

需要注意的是,APNS指南中提到了这一点,用户可以备份他们的应用程序,设置和所有内容。 然后他们可以把手机放在马桶下面。 当他们拿到他们的replace手机时,他们可以把他们的备份恢复到他们的新手机上。 宾果 – 相同的应用程序,相同的用户,不同的设备, 和不同的令牌

就你的应用程序而言,自从上次运行以来没有任何变化 – 它不知道它现在实际上在不同的设备上运行。 它知道的唯一方法是因为它要求“当前”设备令牌,并且嘿presto它是上次不同的标记。

您可以selectcaching令牌,并根据刚刚收到的令牌进行检查(例如,将其保存在NSUserDefaults中) – 这样,除非自上次运行后发生更改,否则不必将其传回服务器,但是您绝对必须检查,否则你的用户会抱怨说,他们没有得到更多的推送通知,因为他们取代了他们的电话。