ios开发之APP升级的实现

直接上代码:

/**
 *  检测软件是否需要升级
 */
-(void)checkVersion
{
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/cn/lookup?id=%i",iFeverAPPID]];
    ASIHTTPRequest *request = [[ASIHTTPRequest alloc]initWithURL:url];
    [request setUseCookiePersistence:YES];
    [request setDelegate: self];
    [request setDidFailSelector:@selector(getVersionRequestFailed:)];
    [request setDidFinishSelector:@selector(getVersionRequestSuccess:)];
    [request startAsynchronous];//开始异步请求
}

-(void)getVersionRequestFailed:(ASIHTTPRequest *)request1
{
    NSLog(@"从AppStore获取版本信息失败!!");
}

-(void)getVersionRequestSuccess:(ASIHTTPRequest *)request1
{
    NSString *newVersion;
    NSData *responseData = [request1 responseData];
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:nil];
    NSArray *resultArray = [dic objectForKey:@"results"];
    for (id config in resultArray) {
        newVersion = [config valueForKey:@"version"];
    }
    if (newVersion) {
        NSLog(@"通过AppStore获取的版本号是:%@",newVersion);
    }
    //获取本地版本号
    NSString *localVersion = [[[NSBundle mainBundle]infoDictionary]objectForKey:@"CFBundleVersion"];
    NSString *msg = [NSString stringWithFormat:@"你当前的版本是V%@,发现新版本V%@,是否下载新版本?",localVersion,newVersion];
    if ([newVersion floatValue] > [localVersion floatValue]) {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"升级提示!" message:msg delegate:self cancelButtonTitle:@"下次再说" otherButtonTitles:@"现在升级", nil];
        alert.tag = kVersionNeedUpdateAlertTag;
        [alert show];
    }
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (alertView.tag == kVersionNeedUpdateAlertTag) {
        //软件需要更新提醒
        if (buttonIndex == 1) {
            NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://itunes.apple.com/cn/app/wan-zhuan-quan-cheng/id%i?mt=8",iFeverAPPID]];
            [[UIApplication sharedApplication]openURL:url];
            /*
             // 打开iTunes 方法二:此方法总是提示“无法连接到itunes”,不推荐使用
             NSString *iTunesLink = @"itms-apps://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftwareUpdate?id=%i&mt=8";
             NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftwareUpdate?id=%i&mt=8",iFeverAPPID]];
             [[UIApplication sharedApplication] openURL:url];
             */
        }
    }
}

如果想知道网络请求AppStore时返回的信息可以打开这个链接:http://itunes.apple.com/cn/lookup?id=465039730

参考博文:

iOS appStore中的应用 实现升级功能http://www.cnblogs.com/ygm900/p/3334586.html

//基于企业级证书的IOS应用打包升级功能介绍

http://blog.csdn.net/sbvfhp/article/details/10336715

//另一种代码实现思路

http://hi.baidu.com/wwssttt/item/7446105e3c98fa3933e0a9d5

//向appStore获取软件版本的代码,有步骤

http://blog.csdn.net/wave_1102/article/details/7463697

//向 appstore 查询已发布 APP 的信息--纯思路

http://hi.baidu.com/yanh105/item/7378a98ffca6a8804414cfa0

//官方帮助文档

http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html

//如何改进iOS客户端的升级提醒功能

http://www.cocoachina.com/applenews/devnews/2013/0108/5495.html

//ios项目如何实现版本更新?

http://blog.csdn.net/mad1989/article/details/8130013

//解决向appStore 发送请求获取版本,没有返回信息的问题

http://www.cocoachina.com/ask/questions/show/56158

时间: 2024-11-08 05:03:02

ios开发之APP升级的实现的相关文章

iOS开发之App间账号共享与SDK封装

App间的数据共享可以使用KeyChian来实现.本篇博客就实战一下呢.开门见山,本篇博客会封装一个登录用的SDK, 该登录SDK中包括登录.注册.忘记密码等功能,当然该SDK中包括这些功能的UI.数据验证等业务逻辑.网络请求.数据存储等等.当然此处的登录SDK是一个简化版的,真正的登录SDK比这个考虑的东西要多的多,如果在加上多个App进行登录账号的共享的话,那么考虑的东西就更为复杂了. 本篇博客就先封装一个LoginSDK, 让后将该SDK植入到两个App中(一个暂且叫做"App One&q

iOS开发之App启动原理

iOS程序的启动过程 程序启动的完整过程大致步骤如下: 1.main函数 2.UIApplicationMain * 创建UIApplication对象 * 创建UIApplication的delegate对象 3.delegate对象开始处理(监听)系统事件(没有storyboard) * 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法 * 在application:didFinishLaunchingWithOpt

iOS开发之APP上线

首先自我介绍一下,我是来自广州的iOS程序猿,工作有2年了,没有写过博客啥的.第一次想写点东西,记录下自己学到的东西和感悟.今天半夜里看了篇文章后,我也想自己写篇文章,虽然我也不知道我要写什么,怎么写....好吧,那就APP上线吧! APP 上线有两种途径: 一种是 Xcode->openDeveloperTool->applicationLoader,这种打开后登陆appleID就可以选取并且交付您的应用程序了.这种呢,我们交付之前首先要Xcode打包出来一个.ipa (打包的过程,其实百度

iOS开发之App主题切换完整解决方案(Swift版)

本篇博客就来介绍一下iOS App中主题切换的常规做法,当然本篇博客中只是提到了一种主题切换的方法,当然还有其他方法,在此就不做过多赘述了.本篇博客中所涉及的Demo完全使用Swift3.0编写完成,并使用iOS的NSNotification来触发主题切换的动作.本篇博客我们先对我们的主题系统进行设计,然后给出具体实现方式.当然在我们设计本篇博客所涉及的Demo时,我们要遵循"高内聚,低耦合","面向接口编程","便于维护与扩充"等特点. 本篇博

ios开发之 APP上架要填写什么?有什么要注意?

好不容易把APP开发完成,那我们上架的时候要填写什么?注意些什么?(关于申请上架帐号神马的,请参阅个人之前的文章) 1.国内发布APP,名字肯定是中文.那么在项目info文件里边,把Bundle display name 填写一个中文名字,Localization native development regior 选择中国.如果刚才提到的两个都没有,自己手动添加即可. 2.项目General注意点 2-1:Bundle identifier 命名规范,且具有唯一性,因为在发布时候,描述证书要匹

iOS开发之APP推送设置WIFI

在iOS开发过程中,有时需要连接网络.当访问请求,检测到网络不可用时,需要提示用户手动进行设置网络并告知用户操作路径设置可用的网络. 只需一行代码即可实现: - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.backgroundColor = [UIColor redColor]; button.frame = CGR

iOS开发之 app网络实时监测

1.在 #import "AppDelegate.h" { Reachability *hostReach; } 2.在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {}里 //监测网络情况 [[NSNotificationCenter defaultCenter] addObserver:self selecto

李洪强iOS开发之iOS好文章收集

李洪强iOS开发之iOS好文章收集 该文收集朋友们转发或自己的写的技术文章,如果你也有相关的好文章,欢迎留言,当好文章多的时候,我会对这些好文章进行分门别类 文章 简述 日期 直播服务配置 使用 nginx 和 rtmp 插件搭建视频直播和点播服务器 2015-05-12 20:13:00 iOS9适配技巧 图iOS9适配新技巧 2015-09-29 09:01 TextKit分页效果 图文混排 2015年6月1日 iPhone 6 / 6 Plus 设计·适配方案 屏幕适配 2014-11-2

iOS开发之WKWebView简单使用和常用使用场景

iOS开发之 WKWebVeiw使用 想用UIWebVeiw做的,但是突然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版.本着对新事物的好奇,就上网查了一下,但是找了好多个都没说的多了详细,于是就问谷歌,找文档,看看使用方法,试用了一下,果然不错,记录下来,大家分享! WKWebView的特点: 性能高,稳定性好,占用的内存比较小, 支持JS交互 支持HTML5 新特性 可以添加进度条(然并卵,不好用,还是习惯第三方的). 支持内建手势, 据说高达60fps的刷