文档章节

iOS开发 APP实现检测更新

OSMaker_-
 OSMaker_-
发布于 2015/06/14 15:42
字数 669
阅读 136
收藏 0

        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开发实例


© 著作权归作者所有

OSMaker_-
粉丝 0
博文 38
码字总数 6775
作品 0
郑州
程序员
私信 提问
加载中

评论(1)

APP或网站/微信【注册决定成败】市场调查分析:目前80%的用户是因为注册短信验证码体验不佳,从而放弃注册!这是多么痛的领悟-----我公司是专业做短信验证码的供应商,6年间我们只做了一件事让每个用户注册短信验证码5秒到达,为近16000APP客户提供服务! 加我微-信: wkk-555 咨询,〔廖经理136-4173-0373〕!
iOS项目开发

主要需求: 通过远程网络对汽车进行OBD(启动、熄火、门锁检测、车辆状态设置与检测、胎压等相关汽车状态的设置与获取展示) 工作内容: 1. 熟悉车载CAN、OBD相关行业知识 2.负责智能穿戴产品I...

黄淑宾
2017/02/22
49
0
iOS 10.3.3 和 macOS Sierra 10.12.6 正式发布

今天凌晨,苹果发布了 iOS 10.3.3 的正式版固件,这也是 iOS 10 的最后一个版本的系统更新,此次更新包含问题修复以及对 iPhone 或 iPad 安全性的改进。 iOS 11 目前正在紧张的开发当中并即将...

局长
2017/07/20
5K
16
If love, deep love:10 Most Useful iOS Libs

摘要:库是开发的根本,从页面到APP客户端,所有的设计都离不开它,但面对市面上鱼龙混杂的库,如何选择合适又好用的库?对开发新手来说,这是个问题。本文基于各方观点,选出了10大iOS开发者...

长平狐
2013/01/06
109
0
学习如何针对iOS 7进行开发?

  iOS 7已经发布了六个测试版,除了beta 6进行了小幅修正外,其他几个测试版都有不小的改动。昨天有消息说苹果将在9月10日发布iOS 7正式版,那么GM版很快将会与开发者见面。在iOS 7来临前夕...

fangzhou99
2013/09/17
426
0
Phonegap各类商业插件

【Phonegap商业插件服务】[目前插件已经支持到Phonegap最新版本] 1.phonegap-百度社会化分享-andriod插件 v2.0 【该插件支持微信分享和朋友圈分享,qq好友分享,微博分享】 2.phonegap百度社...

夜澜小雨
2015/07/15
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

线程池总结

1、主要参数说明 corepoolsize核心线程数、maxpoolsize最大线程数、keepalivetime闲置线程收回时间设置、workQueue工作队列(synchronizeQueue、LinkedBlockingQueue、ArrayListBlockingQueu...

青菜番茄h
7分钟前
2
0
Linux 下防火墙开启端口

1. 查看系统防火墙状态(running 表示开启运行状态) firewall-cmd --state 开启防火墙:systemctl start firewalld.service 关闭防火墙:systemctl stop firewalld.service 2. 开启端口外网访...

newdengs
9分钟前
3
0
一文看懂 K8s 日志系统设计和实践

作者 | 元乙 阿里云存储服务技术专家 导读:上一篇文章《6 个 K8s 日志系统建设中的典型问题,你遇到过几个?》中我们介绍了为什么需要一个日志系统、为什么云原生下的日志系统如此重要以及云...

阿里巴巴云原生
11分钟前
2
0
2019上海会议还有哪些召开,11月及12月的互联网技术类等大会?

2019年还剩下40多天的时候,上海有还有哪些会议召开呢?让我们跟随活动家官网的展示,看看今年还剩下哪些会议可以去参加! 上海2019年11月至12月会议列表清单 技术/互联网/通信/区块链 类 20...

活动家峰会
13分钟前
1
0
2019最新数据分析软件PASS&NVIVO视频教程合集

还在为数据繁杂而困扰吗? 还在为不知道怎么提炼有价值的数据而焦躁吗? 别担心,解决的办法来了!本文就为大家介绍两款数据分析的实用软件。当然介绍软件的同时,更有两款软件最全的视频教程...

yuyuyuyo
14分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部