博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发 APP实现检测更新
阅读量:6320 次
发布时间:2019-06-22

本文共 2902 字,大约阅读时间需要 9 分钟。

hot3.png

        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下载地址:

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

154125_8QXJ_2334416.jpg

转载于:https://my.oschina.net/ospost90s/blog/466560

你可能感兴趣的文章
zip
查看>>
How to recover from root.sh on 11.2 Grid Infrastructure Failed
查看>>
rhel6下安装配置Squid过程
查看>>
《树莓派开发实战(第2版)》——1.1 选择树莓派型号
查看>>
在 Linux 下使用 fdisk 扩展分区容量
查看>>
结合AlphaGo算法和大数据的量化基本面分析法探讨
查看>>
如何在 Ubuntu Linux 16.04 LTS 中使用多个连接加速 apt-get/apt
查看>>
《OpenACC并行编程实战》—— 导读
查看>>
机器学习:用初等数学解读逻辑回归
查看>>
find和xargs
查看>>
数据结构例程—— 交换排序之快速排序
查看>>
IOS定位服务的应用
查看>>
php引用(&)
查看>>
Delphi 操作Flash D7~XE10都有 导入Activex控件 shockwave
查看>>
oracle 学习笔记之名词解释
查看>>
MySQL Cluster搭建与测试
查看>>
python数据分析画图体验
查看>>
军规15 确保集成和调用第三方APP
查看>>
Etcd和ZooKeeper,究竟谁在watch的功能表现更好?
查看>>
Shredding Company 碎纸机,dfs()枚举每一种情况,再加剪枝。
查看>>