美文网首页
iOS 根据版本号比较判断是否更新应用

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

作者: 知交 | 来源:发表于2017-09-07 14:23 被阅读544次
    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)compareVersion:(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 smallCount = (v1Array.count > v2Array.count) ? v2Array.count : v1Array.count;
        
        for (int i = 0; i < smallCount; i++) {
            NSInteger value1 = [[v1Array objectAtIndex:i] integerValue];
            NSInteger value2 = [[v2Array objectAtIndex:i] integerValue];
            if (value1 > value2) {
                // v1版本字段大于v2版本字段,返回1
                return 1;
            } else if (value1 < value2) {
                // v2版本字段大于v1版本字段,返回-1
                return -1;
            }
            
            // 版本相等,继续循环。
        }
        
        // 版本可比较字段相等,则字段多的版本高于字段少的版本。
        if (v1Array.count > v2Array.count) {
            return 1;
        } else if (v1Array.count < v2Array.count) {
            return -1;
        } else {
            return 0;
        }
        
        return 0;
    }
    

    参考文章

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/fidijxtx.html