2013-11-28 61 views
0

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

据我所知,我不能使用NSUserDefaults,因为如果应用程序已经安装它不会工作。 同样的问题已经被问,但我不明白的答案:

可以与老版本比较当前的版本如下:

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

有人可以解释我该怎么做吗? 谢谢。

+1

为什么不用户默认?存储'当前'版本,然后你可以检查启动,看看它是否发生了变化... – Wain

回答

0

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

您可以检查应用程序的版本,你在你的问题中提到,使用此代码:

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

如果你去你的项目设置,常规选项卡下有一个名为“身份”部分其中包含软件包标识符,版本和构建字符串。使用上面的代码将返回您在项目设置中为“版本”设置的任何值。但是这对你想做的事情可能没有帮助。

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

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

+0

我已经实施了一次NSUserDefaults检查,警报只显示第一次,但我不清楚为什么我应该结合检查与当前版本。如果我不添加此检查,并且在下一个版本1.2中,我只需更改警报的消息(在本例中为“新增功能”警报),会发生什么情况?最后的解释:只有当已经安装了先前版本时(即如果用户下载版本1.1而没有安装1.0版本,显示“新增功能”警报可能没有意义),我怎么才能显示警报?谢谢。 – Corrado

+0

如果您没有检查版本号,那么您基本上在NSUserDefaults中设置了一个标志,其中有两个可能的值:一个值告诉您已经显示警报,另一个值告诉您警报尚未显示。如果您保存版本号,您将获得更多信息供您使用。现在您可以确定是否显示了警报,并且如果显示了该警报,它显示的是哪个版本? – stackunderflow

+0

至于没有在新安装中显示警报,您需要检查某种保存的数据以确定它是否为全新安装。这可能是您设置的NSUserDefaults数据,或者您的应用保存的其他内容。请记住,如果您已经发布了1.0版而未在NSUserDefaults中设置任何内容,则可能无法确定此时是否为新安装。 – stackunderflow

0

有简单的启动顺序:

  • 检查,如果一些存储在NSUserDefaults的版本低于当前 开始CFBundleShortVersionString版本
  • 如果需要 - 显示警报
  • 店电流开始CFBundleShortVersionString版本NSUserDefaults的

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

相关问题