Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 软件更新后首次启动_Ios_Iphone_Xcode - Fatal编程技术网

Ios 软件更新后首次启动

Ios 软件更新后首次启动,ios,iphone,xcode,Ios,Iphone,Xcode,从AppStore(1.0到1.1)更新版本后,我需要在首次启动时显示警报视图。如果未安装1.0版,则不应显示警报 据我所知,我不能使用NSUserDefaults,因为如果应用程序已经安装,它将无法工作。 已经有人问过同样的问题,但我不明白答案: 您可以将当前版本与旧版本进行比较,如下所示: [NSString stringWithFormat:@“版本%@,[[NSBundle mainBundle] objectForInfoDictionaryKey:@“CbundleShortVers

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

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

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

[NSString stringWithFormat:@“版本%@,[[NSBundle mainBundle] objectForInfoDictionaryKey:@“CbundleShortVersionString”]; 对于当前版本,如果使用if语句,则表示您知道它是1.1、2.0。。。。 等等,你可以处理

有人能告诉我怎么做吗?
谢谢。

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

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

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]];
如果转到项目设置,则在“常规”选项卡下有一个名为“标识”的部分,其中包含包标识符、版本和生成字符串。使用上述代码将返回您在项目设置中为“版本”设置的任何值。但这可能对你想做的事情没有帮助

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


但是,如果希望在将来的版本中显示另一个警报,则可能需要将这两个警报组合在一起。您可以将带有“Version”字符串的值设置为NSUserDefaults,并将其称为“lastAlertShowInfo服务器”,这样您就可以知道用户上次收到警报的时间。请注意,当用户从1.0升级到1.1时,该值首先将为空,因为应用程序的1.0版不会设置该值。

有一个简单的启动顺序:

  • 检查存储在NSUserDefaults版本中的某些文件是否低于当前版本 已启动CbundleShortVersionString版本
  • 如果需要-显示警报
  • 将当前启动的CbundleShortVersionString版本存储到NSUserDefaults

如果存储版本没有NSUserDefaults,则假定它刚刚安装。若之前并没有包含“保存版本”的代码,但在应用程序中保存了一些数据或文件,那个么您可以进行检查以避免出现这种情况。

为什么不使用用户默认值?存储“当前”版本,然后您可以在启动时检查它是否已更改…我已使用NSUserDefaults执行了检查,并且警报仅第一次显示,但我不清楚为什么要将检查与当前版本结合起来。如果我不添加此检查,在下一个版本1.2中,我只需更改警报消息(在本例中为“What's new”警报),会发生什么?最后一点澄清:只有在已经安装了早期版本的情况下(即,如果用户下载了1.1版而没有安装1.0版,则显示“新增内容”警报可能没有意义),我如何才能显示警报?谢谢。如果您不检查版本号,那么您基本上是在NSUserDefaults中使用两个可能的值设置一个标志:一个值告诉您警报已显示,另一个值告诉您警报未显示。如果保存版本号,您将有更多信息可供使用。现在,您可以知道是否显示了警报,如果显示了警报,则显示警报的版本是什么?至于在新安装时不显示警报,您需要检查某种保存的数据,以确定它是否为新安装。这可能是您设置的NSUserDefaults数据,也可能是应用程序保存的其他数据。请记住,如果您已经发布了1.0版,但没有在NSUserDefaults中设置任何内容,那么此时您可能无法确定它是否为新安装。