Iphone应用升级检查

Iphone应用升级检查,iphone,ios,objective-c,migration,Iphone,Ios,Objective C,Migration,如何检测目标C中的升级点?是否有任何方法可以检测到应用程序刚刚升级到较新版本或正在进行更新 我的方案是考虑用户在他的设备中有一个应用程序版本1,他正在更新通知并更新应用程序。在此版本更新后,应用程序应该显示一些应用程序教程。使用NSUserDefaults检查应用程序是否首次启动 //In applicationDidFinishLaunching:withOptions: BOOL hasLaunchedBefore = [[NSUserDefaults standardUserDefault

如何检测目标C中的升级点?是否有任何方法可以检测到应用程序刚刚升级到较新版本或正在进行更新


我的方案是考虑用户在他的设备中有一个应用程序版本1,他正在更新通知并更新应用程序。在此版本更新后,应用程序应该显示一些应用程序教程。

使用
NSUserDefaults
检查应用程序是否首次启动

//In applicationDidFinishLaunching:withOptions:
BOOL hasLaunchedBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"AppHasLaunchedBefore_v1.0"];
if(!hasLaunchedBefore) {
    //First launch
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"AppHasLaunchedBefore_v1.0"];
}
else {
    //Not first launch
}
当您将应用程序更新到2.0版(比方说)时,将上述键修改为
AppHasLaunchedBefore_v2.0
。这样,对于更新后的首次启动,此键将不会出现在
NSUserDefaults
making
hasLaunchedBefore=NO
中。你可以采取必要的行动

如果需要,您可以使用从
NSUserDefaults
中删除以前的版本密钥

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"AppHasLaunchedBefore_v1.0"];

您可以通过编程方式获取当前发布应用程序的捆绑版本

NSString* version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
//Append this to the user default key, AppHasLaunchedBefore_v%@

希望有帮助

谢谢你的回复。有没有办法在不硬编码版本的情况下检查此问题。我可能会经常发布我的版本。用户可以直接将版本1.0升级到3.1,而无需将其升级到2.0或其他版本other@nik你的应用程序应该事先知道在用户默认设置中检查哪个版本。对于您推送到应用商店的每次更新,都需要修改该代码。所以我想如果你硬编码它应该没关系。是的,只有当我发布新版本的应用程序时,你的场景才会有帮助。如果假设我正在检查,将此条件添加到我的第三版应用程序中,那么它将不会有帮助right@nik这将是因为在第3版中,您将在_v3.0之前检查键
apphaslaunchedb。更新后,第一次运行时,应用程序将进行检查,此密钥将不存在。因此,您的代码可以安全地在应用程序更新后进行首次启动。检查是否有任何动态方法或委托方法(类似于这样的方法)可以在不进行任何服务调用的情况下单独识别升级。即使用户杀死了他的应用程序并再次启动,也会触发这种情况。