iOS开发 APP实现检测更新

        APP检测更新可以使用两种方法。第一种是和安卓等系统一样,获取自己服务器的APP版本号与已安装的APP版本号比较;第二种是根据已发布到app store上的应用版本号与已安装的APP版本号比较更新。第一种检测更新方法的优点是:检测更新速度快、检测稳定;缺点是:和app store上的应用版本号不同步(app上架需要审核时间,不确定什么时候成功更新到app store上)。第二种方法检测更新方法的优点是:检测版本号是实时同步的;缺点是:由于苹果审核应用程序的流程以及网络的问题,检测更新有一定的延时。本人做的事IOS开发所以比较倾向于第二种,原因很简单,既然做的事IOS开发使用和苹果提供的API或者说服务走的更接近应该会好点。(可能是心理因素)


    // 通过同步请求,解析json数据,得到了数据
//    0、发送请求获取APP Store应用程序信息
    NSError *error;
    NSString *APPID = @"943341949";
    NSString *itunesStr = [NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@",APPID];
    NSURL *itunesURL = [NSURL URLWithString:itunesStr];
    
    NSURLRequest *request = [NSURLRequest requestWithURL:itunesURL];
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    
    NSDictionary *appInfoDict = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];
    
    NSArray *resultArray = [appInfoDict objectForKey:@"results"];
    NSDictionary *dict = resultArray[0];
    NSLog(@"dict===%@",dict);
    
    NSString *version = [dict objectForKey:@"version"];                 //版本
    NSString *trackViewUrl = [dict objectForKey:@"trackViewUrl"];       //下载地址
    NSString *trackName = [dict objectForKey:@"trackName"];             //应用名称
    
    
//    1、获取此应用程序的版本
    NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
    NSString *appVersion = [infoDict objectForKey:@"CFBundleShortVersionString"];
    NSLog(@"appVersion===%@",appVersion);
    
    NSArray *versionArr = [version componentsSeparatedByString:@"."];         //网络版本
    NSArray *appVersongArr = [appVersion componentsSeparatedByString:@"."];   //本地版本

    //将版本号变为 三个数
    if (versionArr.count == 3) ;
    else
    {
        version = [NSString stringWithFormat:@"%@.0",version];
    }
    if (appVersongArr.count == 3) ;
    else
    {
        appVersion = [NSString stringWithFormat:@"%@.0",appVersion];
    }
    //字符串替换
    version = [self replaceString:version];
    appVersion = [self replaceString:appVersion];
    //将字符串 转化 为int类型的数字
    int versionI = [version intValue];
    int appVersionI = [appVersion intValue];
    NSLog(@"versionI==%d,appVersionI==%d",versionI,appVersionI);
    
    //判断是否需要更新
    if (versionI > appVersionI)
    {
        NSLog(@"更新应用程序");
    }
    else
    {
        NSLog(@"当前已经是最新版本");
    }
}

//字符串替换
- (NSString *)replaceString:(NSString *)string
{
    NSMutableString *mutableStr = [NSMutableString stringWithString:string];
    
    NSString *search = @".";
    NSString *replace = @"";
    NSRange subStr = [mutableStr rangeOfString:search];
    
    while (subStr.location != NSNotFound)
    {
        [mutableStr replaceCharactersInRange:subStr withString:replace];
        
        subStr = [mutableStr rangeOfString:search];
    }
    return mutableStr;
}

如果有懒人,不想手动敲上面的代码同时为大家提供了Demo。是不是发现我很好呢,哈哈

Demo下载地址:http://yun.baidu.com/share/link?shareid=593789027&uk=672282956&third=0

大家也可以关注我的微信公众账号:IOS开发实例

iOS开发 APP实现检测更新


你可能感兴趣的:(更新,APP)