您的位置:首页 > 移动开发 > IOS开发

iOS版本检测更新

2014-12-13 11:10 330 查看
        其实检测当前版本是否为最新版本,只需要比较当前 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]];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  版本更新