文档章节

iOS开发 APP实现检测更新

OSMaker_-
 OSMaker_-
发布于 2015/06/14 15:42
字数 669
阅读 135
收藏 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 7进行开发?

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

fangzhou99
2013/09/17
0
0
iOS Simulator功能介绍关于Xamarin IOS开发

iOS Simulator功能介绍关于Xamarin IOS开发 iOS Simulator功能介绍 在图1.38所示的运行效果中,所见到的类似于手机的模型就是iOS Simulator。在没有iPhone或iPad设备时,可以使用iOS Simulat...

大学霸
2015/04/17
0
0
(转)直接拿来用!最火的iOS开源项目(二)

“每一次的改变总意味着新的开始。”这句话用在iOS上可谓是再合适不过的了。GitHub上的iOS开源项目数不胜数,iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iOS 7,有的项目...

孙启超
2013/06/21
0
1
那些在学习iOS开发前就应该知道的事(part 1)

英文原文:Things I wish I had known before starting iOS development—Part 1 设计师设计出来了一个不错的引导界面,然而当我看到设计稿的时候,我们的app也没几天就要上线了。这个界面模...

TomatosX
2015/06/12
0
0
iOS小白点效果、打地鼠游戏、轮播效果、画板、富文本编辑器等源码

iOS精选源码 美团外卖商家点菜页面(http://www.code4app.com/thread-29383-1-1.html) 板书录制演示程序(http://www.code4app.com/thread-29384-1-1.html) 分类轮播、直播间礼物列表轮播 -- O...

sunnyaigd
04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

中秋快乐!!!

HiBlock
43分钟前
1
0
Node安装教程

1、安装最新版的node 2、设置相关目录(以D盘为例) 分别建立目录:D:\node,D:\node\node-globa,D:\node\node-cache 命令行输入: // 设置npm国内镜像 npm config set registry https://re...

Mohan710
今天
3
0
中国发布域名系统基础软件 “红枫”

9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软件 “红枫(Maple DNS)”。 9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软...

问题终结者
今天
3
0
Shell编程(分发系统介绍、expect远程登录、expect远程执行命令、expect传递参数)

分发系统介绍expect 分发系统expect即分发脚本,是一种脚本语言;通过他可以实现传输,输入命令(上线代码) 应用场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者...

蛋黄_Yolks
今天
4
0
Java Http请求工具类

public static String httpPost(String source, String params) {URL url = null;HttpURLConnection conn = null;OutputStream os = null;String ret = null;try {......

yuewawa
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部