IOS判断app在appstore是否有可用的更新

iTunes可以提供app的版本信息,主要通过appid获取,如 http://itunes.apple.com/lookup?id=946449501,使用时只需要到iTunes查找自己的appid,修改成自己的appid即可

使用HTTP模式读取此链接可以获取app信息的json字符串

贴出部分代码

-(void)checkVersion
{
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:strURL]];//strURL为你的appid地址
    [request setRequestMethod:@"POST"];
    [request setDelegate:self];
    [request startAsynchronous];
}

-(void)requestFinished:(ASIHTTPRequest *)request
{
    NSString *recStr = [[NSString alloc] initWithData:request.responseData encoding:NSUTF8StringEncoding];
    recStr = [recStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];//返回的字符串有前面有很多换行符,需要去除一下
    NSDictionary *resultDic = [JSONHelper DeserializerDictionary:recStr];//jsonhelper是我封装的json解析类,你可以使用自己方式解析

    NSArray *infoArray = [resultDic objectForKey:@"results"];
    if (infoArray.count > 0) {

        NSDictionary* releaseInfo =[infoArray objectAtIndex:0];
        NSString* appStoreVersion = [releaseInfo objectForKey:@"version"];
        NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
        NSString *currentVersion = [infoDic objectForKey:@"CFBundleShortVersionString"];

        NSArray *curVerArr = [currentVersion componentsSeparatedByString:@"."];
        NSArray *appstoreVerArr = [appStoreVersion componentsSeparatedByString:@"."];
        BOOL needUpdate = NO;
        //比较版本号大小
        int maxv = (int)MAX(curVerArr.count, appstoreVerArr.count);
        int cver = 0;
        int aver = 0;
        for (int i = 0; i < maxv; i++) {
            if (appstoreVerArr.count > i) {
                aver = [NSString stringWithFormat:@"%@",appstoreVerArr[i]].intValue;
            }
            else{
                aver = 0;
            }
            if (curVerArr.count > i) {
                cver = [NSString stringWithFormat:@"%@",curVerArr[i]].intValue;
            }
            else{
                cver = 0;
            }
            if (aver > cver) {
                needUpdate = YES;
                break;
            }
        }

        //如果有可用的更新
        if (needUpdate){

            trackViewURL = [[NSString alloc] initWithString:[releaseInfo objectForKey:@"trackViewUrl"]];//trackViewURL临时变量存储app下载地址,可以让app跳转到appstore
            UIAlertView* alertview =[[UIAlertView alloc] initWithTitle:@"版本升级" message:[NSString stringWithFormat:@"发现有新版本,是否升级?"] delegate:self cancelButtonTitle:@"暂不升级" otherButtonTitles:@"马上升级", nil];
            [alertview show];

        }

    }
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 1){
        UIApplication *application = [UIApplication sharedApplication];
        [application openURL:[NSURL URLWithString:trackViewURL]];
    }
}
时间: 2024-11-03 23:42:47

IOS判断app在appstore是否有可用的更新的相关文章

iOS判断APP版本更新并获取更新内容

摘要:之前版本更新控制都是后台来控制的,包括更新提示内容.主要适用于APP1.0 若你的APP已经开始迭代,APP完全可以自己获取版本更新内容等信息. 大家对这个URL应该不陌生: http://itunes.apple.com?lookup?id=   后面APP的  在APPstore中的ID 可以利用这个地址获取想要的信息: 怎么请求就不用说了吧,可以现在Safari中看一下返回报文,你要的都在results  字典中.

iOS 判断App是否第一次启动

#define LAST_RUN_VERSION_KEY @"last_run_version_of_application" - (BOOL) isFirstLoad{ NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; NSUserDefaults *defaults = [NSUserDef

ios判断app是否有打开相机的权限

#import <AVFoundation/AVCaptureDevice.h> #import <AVFoundation/AVMediaFormat.h> AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; if (authStatus == AVAuthorizationStatusRestricted || authSta

iOS 判断App启动方式

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 说明:当应用程序启动时执行,应用程序启动入口.只在应用程序启动时执行一次.application参数用来获取应用程序的状态.变量等,值得注意的是字典参数:(NSDictionary *)launchOptions,该参数存储程序启动的原因. 1.若用户直接启动,lauchOptio

最新Xcode7.x环境下上架iOS App到AppStore 完整流程

最新Xcode7.x环境下上架iOS App到AppStore 流程  part 1 前言部分 之前App要上架遇到些问题到网上搜上架教程发现都是一些老的版本的教程 ,目前iTunesConnect 都已经迭代好几个版本了和之前的 界面风格还是有很大的差别的,后面自己折腾了好久才终于把自己的App上架,所以一直想写个最新(Xcode7.x~OS X 10.11)的 App上架教程.  本文使用工具为xcode7.2   mac  os系统为10.11 captain 1.官网地址 Apple D

(转))iOS App上架AppStore 会遇到的坑

iOS App上架AppStore 会遇到的坑 前言:非原创 文章摘自:http://zhuanlan.zhihu.com/100000PM/20010725 相信大家一定非常「深恶痛疾」AppStore的一系列产品上架规则.每次产品上架,一定要折腾很久,让人蛋疼.所以特此发起本期沙龙,为大家带来一些经验. 闫国荣:以下是现在能记忆起,遇到的问题.大家对此有不清楚的地方可以提出来,我详细介绍下. 内容含敏感话题或对苹果不友好的信息(如苹果婊) 使用了友盟的统计SDK,获取了IDFA但是上传填写无

iOS 中判断当前设备的相机是否可用

在iOS 开发中,经常需要调用相机来扫描类似二维之类的东西,在调用之前,首先应该判断当前设备的相机是否可用: 下面直接上代码:(swift中的写法) 1 class WNCommonTool: NSObject { 2 /** 3 4 判断当前设备的相机是否可用 5 6 :returns: 当前设备的相机是否可用 7 8 */ 9 10 class func isCameraAvailable() -> Bool{ 11 12 return UIImagePickerController.isC

iOS企业版app部署到自己服务器,不通过AppStore,在iOS设备上直接安装应用程序

iOS企业版app部署到服务器 .正对ios升级得ios7 以后,plist文件必须放到 https得服务器上了,http不可以用了 .plist参照模板如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyLis

苹果app上架Appstore网页APP上架 彩票原生app上架全程协助

苹果app上架专业的苹果appstore市场上架服务提供商,大幅度提高过审机率!提供从开发者证书制作,APP打包,增加原生功能,上架市场一体化完整服务! APP上架|IOS app上线流程|如何发布苹果app|app上架费用(联系qq*220*5357*007)苹果app上架Appstore网页APP上架 彩票原生app上架全程协助 如何将WebApp项目打包生成手机APP 1.首先我们需要先新建一个WebApp项目,目录结构为: index.html  项目首页html入口文件 --html