软件更新后首次启动

时间:2013-11-28 23:15:10

标签: ios iphone xcode

我需要在从AppStore(1.0到1.1)更新版本后首次启动时显示警报视图。如果未安装1.0版,则不应显示警报。

据我所知,我无法使用NSUserDefaults,因为如果已安装该应用程序,它将无效。 已经问过同样的问题,但我不明白答案:

  

您可以将当前版本与旧版本进行比较,如下所示:

     

[NSString stringWithFormat:@“Version%@”,[[NSBundle mainBundle]   objectForInfoDictionaryKey:@ “CFBundleShortVersionString”]];   并且使用当前版本的if语句,你知道它1.1,2.0 ....   等等,你可以处理它。

有人能解释我怎么做吗? 感谢。

2 个答案:

答案 0 :(得分:0)

首先,如果您没有在该版本中包含代码,则警报将不会显示在现有应用商店版本(1.0)上。将新版本上载到应用商店不会改变用户设备上已安装的旧版本。

您可以使用以下代码检查您在问题中提到的应用版本:

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]];

如果转到项目设置,在“常规”选项卡下会出现一个名为“Identity”的部分,其中包含包标识符,版本和构建字符串。使用上面的代码将返回您在项目设置中为“Version”设置的任何值。但这可能无助于你想做什么。

您希望仅在首次启动时显示警报(而不是后续启动),因此您应该使用NSUserDefaults设置一个标志,告诉您用户是否已经看过警报。然后,在应用程序启动时,您可以在NSUserDefaults中检查该值,以确定是否应显示警报。

但是,如果您希望在将来的版本中显示另一个警报,则可能需要将这两者组合在一起。您可以使用“Version”字符串将值设置为NSUserDefaults,并将其命名为“lastAlertShownForVersion”,然后您将知道用户上次收到警报的时间。请注意,当用户从1.0升级到1.1时,此值将首先为NULL,因为它不会由应用程序的1.0版设置。

答案 1 :(得分:0)

有简单的启动顺序:

  • 检查存储在NSUserDefaults版本中的某些内容是否小于当前版本 启动CFBundleShortVersionString版本
  • 如果需要 - 显示提醒
  • 存储当前启动CFBundleShortVersionString版本到NSUserDefaults

如果没有存储版本的NSUserDefaults - 假设它刚刚安装。如果您之前没有包含保存版本的代码,但是在应用程序中保存了一些数据或文件 - 您可以检查它以避免出现这种情况。