问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

iOS APP如何实现版本检测更新

发布网友 发布时间:2022-04-27 02:54

我来回答

1个回答

热心网友 时间:2022-06-25 02:51

如果我们要检测app版本的更新,那么我们必须获取当前运行app版本的版本信息和appstore 上发布的最新版本的信息。
当前运行版本信息可以通过info.plist文件中的bundle version中获取;
要获取当前app store上的最新的版本,有两种方法,
一、在某特定的服务器上,发布和存储app最新的版本信息,需要的时候向该服务器请求查询。

二、从app store上查询,可以获取到app的作者,连接,版本等。官方相关文档
www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.htm

具体步骤如下:
1,用 POST 方式发送请求:
http://itunes.apple.com/search?term=你的应用程序名称&entity=software

更加精准的做法是根据 app 的 id 来查找:
http://itunes.apple.com/lookup?id=你的应用程序的ID

#define APP_URL http://itunes.apple.com/lookup?id=你的应用程序的ID
你的应用程序的ID 是 itunes connect里的 Apple ID
2,从获得的 response 数据中解析需要的数据。因为从 appstore 查询得到的信息是 JSON 格式的,所以需要经过解析。解析之后得到的原始数据就是如下这个样子的:
{
resultCount = 1;
results = (
{
artistId = 开发者 ID;
artistName = 开发者名称;
price = 0;
isGameCenterEnabled = 0;
kind = software;
languageCodesISO2A = (
EN
);
trackCensoredName = 审查名称;
trackContentRating = 评级;
trackId = 应用程序 ID;
trackName = 应用程序名称";
trackViewUrl = 应用程序介绍网址;
userRatingCount = 用户评级;
userRatingCountForCurrentVersion = 1;
version = 版本号;
wrapperType = software;
}
);
}

然后从中取得 results 数组即可,具体代码如下所示:

NSDictionary *jsonData = [dataPayload JSONValue];
NSArray *infoArray = [jsonData objectForKey:@"results"];
NSDictionary *releaseInfo = [infoArray objectAtIndex:0];
NSString *latestVersion = [releaseInfo objectForKey:@"version"];
NSString *trackViewUrl = [releaseInfo objectForKey:@"trackViewUrl"];

如果你拷贝 trackViewUrl 的实际地址,然后在浏览器中打开,就会打开你的应用程序在 appstore 中的介绍页面。当然我们也可以在代码中调用 safari 来打开它。
UIApplication *application = [UIApplication sharedApplication];
[application openURL:[NSURL URLWithString:trackViewUrl]];

代码如下:

-(void)onCheckVersion
{
NSDictionary *infoDic = [[NSBundlemainBundle] infoDictionary];
//CFShow((__bridge CFTypeRef)(infoDic));
NSString *currentVersion = [infoDic objectForKey:@"CFBundleVersion"];

NSString *URL =@"http://itunes.apple.com/lookup?id=你的应用程序的ID";
NSMutableURLRequest *request = [[NSMutableURLRequestalloc] init];
[requestsetURL:[NSURLURLWithString:URL]];
[requestsetHTTPMethod:@"POST"];
NSHTTPURLResponse *urlResponse = nil;
NSError *error = nil;
NSData *recervedData = [NSURLConnectionsendSynchronousRequest:request returningResponse:&urlResponse error:&error];

NSString *results = [[NSStringalloc] initWithBytes:[recervedDatabytes] length:[recervedDatalength] encoding:NSUTF8StringEncoding];
NSDictionary *dic = [results JSONValue];
NSArray *infoArray = [dic objectForKey:@"results"];
if ([infoArray count]) {
NSDictionary *releaseInfo = [infoArray objectAtIndex:0];
NSString *lastVersion = [releaseInfo objectForKey:@"version"];

if (![lastVersion isEqualToString:currentVersion]) {
//trackViewURL = [releaseInfo objectForKey:@"trackVireUrl"];
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"更新"message:@"有新的版本更新,是否前往更新?" delegate:self cancelButtonTitle:@"关闭"otherButtonTitles:@"更新",nil];
alert.tag =10000;
[alertshow];
}
else
{
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"更新"message:@"此版本为最新版本" delegate:selfcancelButtonTitle:@"确定" otherButtonTitles:nil,nil];
alert.tag =10001;
[alertshow];
}
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (alertView.tag==10000) {
if (buttonIndex==1) {
NSURL *url = [NSURLURLWithString:@"https://itunes.apple.com"];
[[UIApplicationsharedApplication]openURL:url];
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 《版本测试员》txt下载在线阅读全文,求百度网盘云资源 如何对Android的版本进行检测与更新 版本发布频繁的情况下,怎样做好软件测试 有木有人能跟我讲一下梅州的历史人物和发展啊 《海外排华百年史》pdf下载在线阅读,求百度网盘云资源 版本测试和解决方案测试有什么区别 《未来的家乡》四年级下册作文 软件测试系统版本测试的依据是什么 称温革为"客家私人办学第一人"妥当吗? 冒烟测试与版本测试的区别 小学四年级作文《未来的家乡》450字 梅城有什么地方好玩的? 四年级下册未来的家乡 美丽衡阳一我的家乡1200作文书信。怎样写? 梅州长潭旅游区的景点介绍 姚姓 有少,象,先字辈,祖先在哪儿 平远中学的历史 平远县图书馆怎么样? 家里老鼠躲厕所里去了,没找到,会不会跑到下水道或者天花板上?该怎么抓? 尼玛是什么意思lamer 51 talk怎么进行版本级别测试? 测试版本是什么意思? 电脑省电模式怎么关闭??我的电脑键盘和鼠标都不会亮的 ???求解(ㄒoㄒ) 如果遇到版本迭代 怎么测试 怎么编写测试用例? 住房公积金最多可以用多少? 我用的是联想的一体机 鼠标和键盘偶尔会出现失灵的现象 重启才能好 去除了那个节电模式也会这样 公积金必须达到多少才可以使用 联想笔记本鼠标触模板怎么关闭禁用 关闭电脑如何让键盘和鼠标也关闭 住房公积金用途火上热搜,公积金到底有啥用? 联想台式电脑 开机显示屏提示节电模式 住房公积金达到多少额度可以使用 公积金最多可以上多少 没有结婚证可以去银行贷款吗 没有结婚证没有车也没有房可以贷款吗 没有房没有车没有结婚证可以向银行贷款吗 没结婚没房子能贷款买车嘛? 没结婚证没房产证没工作可以贷款吗 没有结婚证可以向银行贷款吗 买车贷款需要结婚证吗?没有结婚证能贷吗?