iOS版本检测更新

        其实检测当前版本是否为最新版本,只需要比较当前 APP版本与APP Store上的版本号是否相同即可。如果相同,说明是最新版本,反之则不是最新版本!那么问题来了。如何获取APP Store 上APP的版本信息?方法很简单:

        首先,让我们先获取当前APP的版本信息,见代码:

#pragma mark-获取当前app版本信息
- (NSString *)getCurrentAPPVersion
{
    NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
    NSString* currentVersion = infoDictionary[@"CFBundleShortVersionString"];
    return currentVersion;
}

        接着,就是获取APP Store上的APP版本信息,如下:

#pragma mark-获取appstore最新app版本
- (NSString *)getCurrentAppStoreVersion
{
    NSString *appID = @"XXXXXX";
    NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@", appID]];
    NSData* data = [NSData dataWithContentsOfURL:url];
    NSDictionary* dicInfo = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

    if ([dicInfo[@"resultCount"] integerValue] == 1){
        NSString* appStoreVersion = dicInfo[@"results"][0][@"version"];
	return appStoreVersion;
    }
    return nil;
}

        这里需要说一下,通过 http://itunes.apple.com/lookup?id=APPID 请求到的数据是一个JSON数据。APPID可以登陆https://itunesconnect.apple.com 查看所需的APPID。JSON数据格式如下:

如果 APPID错误的话返回如下数据:

{
 "resultCount":0,
 "results": []
}
 如果 APPID 正确,则返回如下数据:

{

"resultCount": 1,

"results": [

{

"advisories": [

],

"artistId": 开发者 ID,

"artistName": 开发者名称,

"artistViewUrl": "开发者信息网址",

"artworkUrl100": "图标",

"artworkUrl512": "图标",

"artworkUrl60": "图标",

"bundleId": BundleID,

"contentAdvisoryRating": "4+",

"currency": "USD",

"description": "描述信息",

"features": [

],

"fileSizeBytes": "文件大小",

"formattedPrice": "售价",

"genreIds": [

分类ID号

],

"genres": [

分类

],

"ipadScreenshotUrls": [

],

"isGameCenterEnabled": false,

"kind": "software",

"languageCodesISO2A": [

支持语言

],

"minimumOsVersion": "支持的最低iOS版本",

"price": 价格,

"primaryGenreId": 6009,

"primaryGenreName": "News",

"releaseDate": "发布时间",

"releaseNotes": "版本新特性",

"screenshotUrls": [

屏幕截图

],

"sellerName": "销售者名称",

"supportedDevices": [

支持的设备

],

"trackCensoredName": "审查名称",

"trackContentRating": "评级",

"trackId": 应用程序ID,

"trackName": "应用程序名称",

"trackViewUrl": "应用程序介绍网址,可以通过这个网址进入App Store进行APP的更新下载",

"version": "版本号",

"wrapperType": "software"

}

]

}

        在这里,我们只需要version这个信息。

        最后,就是进行版本信息的比较了,只要调用上面两个方法即可,如下:

#pragma mark -检测更新
- (void)checkUpdate
{
    NSString *curVersion = [self currentAppVersion];
    NSString *appStoreVersion = [self currentAppStoreVersion];
    if( appStoreVersion != nil )
    {
        if( ![appStoreVersion isEqualToString:curVersion] )
        {
            NSLog(@"有最新版本了哦,快去更新吧");
	
        }
        else
        {
            NSLog(@"当前是最新版本");
        }
    }
    else
    {
        NSLog(@"找不到BundleId");
    }
}

        这样,就完成了版本更新检测了。

        值得一提的是:我们前面是通过 http://itunes.apple.com/lookup?id=APPID 来获取信息的。同样,我们还可以通过以下两种方式来获取:

1. 通过 http://itunes.apple.com/lookup?bundleId=BundleId 来获取,BundleId 即你 APP的BundleId

2. http://itunes.apple.com/search?term=你的应用程序名称&entity=software

        最后,上面提到的 trackViewUrl 键值我们可以通过以下代码进行打开:

        NSString *url = dicInfo[@"results"][0][@"trackViewUrl"];
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值