iPhone设备令牌:可以存储在iPhone上吗?

时间:2010-07-08 13:57:08

标签: iphone apple-push-notifications

我必须开发一个以特定方式使用推送通知的应用程序,我有一个非常棘手的问题:设备令牌可以本地存储在应用程序沙箱中吗? 原因如下:这个应用程序应该实现一个允许用户仅从iphone订阅某些特定事件的通知系统。 所以要这样做,我需要在应用程序运行的任何时候向我的数据库发送iPhone的设备令牌,并且从我得到的,设备令牌只有在

时才可用。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

被称为对吗? 或者有什么办法可以在以后检索这些信息吗?

感谢。

2 个答案:

答案 0 :(得分:4)

push notification programming guide建议您不要在本地存储令牌:

  

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

...

  

“每次启动应用程序时,通过请求设备令牌并将其传递给提供程序,您可以帮助确保提供程序具有设备的当前令牌。如果用户将备份还原到设备以外的设备备份是为(例如,用户将数据迁移到新设备)创建的,他或她必须至少启动一次应用程序才能再次接收通知。如果用户将备份数据恢复到新设备或重新安装操作系统,设备令牌更改。此外,永远不会缓存设备令牌并将其提供给您的提供商; 始终在您需要时从系统获取令牌。如果您的应用程序之前已经注册,调用registerForRemoteNotificationTypes:iOS中的结果会立即将设备令牌传递给代理,而不会产生额外的开销。“

答案 1 :(得分:1)

你应该把它存放在手机的某个地方。 NSUserDefaults是一个不错的地方,因为它不是一个很大的数据,你可以很容易地检索它。我还建议将其保存在您的服务器上,并且仅在令牌更改时才更新它。