2010-05-27 105 views
3

当用户登录到我的iPhone应用程序。我将它们的用户标识和相关信息存储在[NSUserDefaults standardUserDefaults]中。这样,每次访问我的应用程序时都不需要登录。iPhone应用程序和编程更新

当我的应用程序在应用程序商店中生效并且我更新了代码时,这些信息将会丢失 - 它们会被要求登录吗?如果是的话,当我进行更新时,如何保留这些信息?

虽然我无法想象这种情况,但是如果用户在安装后选择删除我的应用程序 - 我怎么知道他们已经删除了它?我正在使用推送通知,并希望将用户标记为不活动,以便我不会向他们推送通知。

非常感谢 谢丽尔

回答

6

只有测试将确定如何为您的应用程序能够在更新过程。这里是文件说什么:

文件保存在应用程序更新

更新的应用程序替换用户下载的新 的 以前的应用程序。在此过程中,iTunes将已更新的 应用程序安装在新应用程序 目录中。然后在删除旧安装之前,将用户的 数据文件从旧安装 移到新应用程序目录 。在下列目录 文件被 保证在 更新过程中被保留:

  • APPLICATION_HOME> /文档
  • APPLICATION_HOME> /库/首选项

虽然在其他用户 目录中的文件也可以移动, 你不应该依赖他们在更新后出现 。这里

详细http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/RuntimeEnvironment/RuntimeEnvironment.html

反馈服务

如果供应商试图发送一个推送通知的应用程序,但应用程序不再设备上存在的设备报告苹果推送通知服务的这一事实。这种情况通常在用户卸载应用程序时发生。如果设备报告应用程序的失败传递尝试,APN需要某种方式通知提供商,以便它可以避免向该设备发送通知。这样做可以减少不必要的消息开销并提高整体系统性能。

为此,Apple推送通知服务包括一个反馈服务,APN会不断更新每个应用程序列表中存在失败传送尝试的设备。设备由以二进制格式编码的设备令牌标识。提供商应定期查询反馈服务以获取其应用程序的设备令牌列表,每个设备令牌都由其主题标识。然后,在验证应用程序最近未在所识别的设备上重新注册之后,提供商应该停止向这些设备发送通知。

http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW1

+0

这是伟大的,非常感谢。还有一个问题,我将如何能够测试我的应用程序的更新过程? – Cheryl 2010-05-27 19:15:05

+0

@Cheryl请参考以下问题: http://stackoverflow.com/questions/2524326/how-to-test-an-iphone-application-update http://stackoverflow.com/questions/ 2375807/how-can-simulate-the-iphone-app-upgrade-process-in-the-sdk-simulator – Shaji 2010-05-27 19:24:50

+0

非常有帮助 - 我遵循了另一个线程中的步骤,我很高兴地报告说,从一个版本到下一个不会失去我的存储值。 感谢您的帮助 Cheryl – Cheryl 2010-05-27 20:30:53