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

时间:2010-11-07 10:53:25

标签: iphone ios push-notification apple-push-notifications

在Apple文档中,您可以找到以下句子:

  

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

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

我的问题是:如果APNS给我总是相同的令牌,我为什么每次都需要注册?

如果用户刷了他的iPhone或应用程序,我读到的地方比令牌更改。这是唯一的案例吗?

谢谢!

1 个答案:

答案 0 :(得分:28)

  

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

除非它不是,基本上是因为没有什么可以挂在iPhone设置中的“用户”。每个设备的每个应用的设备令牌始终相同。因此,同一设备上的不同应用程序会获得不同的令牌。两个不同设备上的相同应用程序会获得两个不同的令牌。

值得注意的是,APNS指南中提到的是,用户可以备份他们的应用,设置和所有内容。然后他们可以把手机放下马桶。当他们获得更换手机时,他们可以将备份恢复到新手机上。宾果游戏 - 相同的应用,相同的用户,不同的设备,和不同的令牌

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

您可以选择缓存令牌并根据您刚刚收到的令牌进行检查(例如将其保存在NSUserDefaults中) - 这样您就不必将其传回服务器,除非自上次运行后它已更改,但你绝对必须检查,否则你的用户会抱怨他们更换手机后不再收到推送通知。