iphone - 如何知道用户是否已更新应用程序或安装了新副本?

标签 iphone ios4 iphone-sdk-3.0

我将使用新的数据结构向我的应用程序发送更新,因此,如果用户正在更新我的应用程序,我需要更新他们当前的数据。所以我想知道如何以编程方式判断用户是否更新了我的应用程序或安装了新副本(如果安装了新副本,我不需要更新任何内容)?

最佳答案

检查数据结构是一个可靠的解决方案。我开始担心我自己的应用程序中那些不升级多个版本的人。我觉得这会导致无数的结构检查。下面显示的代码确定并将版本和以前的版本存储在 NSUserDefaults 中。如果需要,您可以为这些不同的版本差异场景进行编码。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
BOOL versionUpgraded;
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSString *preVersion = [prefs stringForKey:@"appVersion"];

if ([prefs stringForKey:@"appVersion"] != nil) {
    //see if version is the same as prior
    //if not it is an Upgraded
    versionUpgraded = !([preVersion isEqualToString: version]);
} else {
    //nil means new install
            //This needs to be YES for the case that
            //"appVersion" is not set anywhere else.
    versionUpgraded = YES; 
}

if (versionUpgraded) {
    [prefs setObject:version forKey:@"appVersion"];
    [prefs setObject:preVersion forKey:@"prevAppVersion"];

    [prefs synchronize];
}

关于iphone - 如何知道用户是否已更新应用程序或安装了新副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034701/

相关文章:

iphone - iOS 从网页下载数据的问题,NSURL

iphone - UIColor clearcolor 在 3.2iOS sdk 中有效,但在 4.3 上无效,为什么?

objective-c - #ifdef __OBJC__ 在做什么以及为什么下面列出库?

iphone - 如何在 iPhone 上激活 OpenGL ES 中的多重采样?

iphone - wait_fences : failed to receive reply: 10004003 in UIImagePickerController

ios - 如何安装与Xcode默认自带的sdk不同的sdk?

ios - ISO : Images not showing up in a page view controller app

iphone 平铺图像

ios - 在 iOS-charts swift iOS 8 中设置 yAxis

objective-c - 使用 AVFoundation 切换相机时视频卡住