iOS 根据版本号比较判断是否更新应用

  1. 获取应用商店版本号:
    请求:
    https://itunes.apple.com/lookup?id=xxxxxxxxx
    如果应用只上架到国内App Store,则在.com后加/cn
    https://itunes.apple.com/cn/lookup?id=xxxxxxxxx
    请求会得到json数据有对应的版本号和应用连接。

  2. 获取本地应用当前版本号

    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
    NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
    

3.比较两个版本号的大小

/**
 比较两个版本号的大小
 
 @param v1 第一个版本号
 @param v2 第二个版本号
 @return 版本号相等,返回0; v1小于v2,返回-1; 否则返回1.
 */
+ (NSInteger)compareVersion2:(NSString *)v1 to:(NSString *)v2 {
// 都为空,相等,返回0
if (!v1 && !v2) {
    return 0;
}

// v1为空,v2不为空,返回-1
if (!v1 && v2) {
    return -1;
}

// v2为空,v1不为空,返回1
if (v1 && !v2) {
    return 1;
}

// 获取版本号字段
NSArray *v1Array = [v1 componentsSeparatedByString:@"."];
NSArray *v2Array = [v2 componentsSeparatedByString:@"."];
// 取字段最大的,进行循环比较
NSInteger bigCount = (v1Array.count > v2Array.count) ? v1Array.count : v2Array.count;

for (int i = 0; i < bigCount; i++) {
    // 字段有值,取值;字段无值,置0。
    NSInteger value1 = (v1Array.count > i) ? [[v1Array objectAtIndex:i] integerValue] : 0;
    NSInteger value2 = (v2Array.count > i) ? [[v2Array objectAtIndex:i] integerValue] : 0;
    if (value1 > value2) {
        // v1版本字段大于v2版本字段,返回1
        return 1;
    } else if (value1 < value2) {
        // v2版本字段大于v1版本字段,返回-1
        return -1;
    }
    
    // 版本相等,继续循环。
}

// 版本号相等
return 0;

}

参考文章

你可能感兴趣的:(iOS 根据版本号比较判断是否更新应用)