开发中我们可能会遇到这样的需求,当 AppStore 中有新版本迭代更新,在用户点开 APP 的时候弹框提醒客户去 AppStore 更新 APP。这里面就有个关键点,判断当前 APP 与 AppStore 中的版本高低,若一样,则无需进行提示;反之则弹框提示(用户使用版本不会比 AppStore 版本高)。下面就了解如何获取 APP 在 AppStore 中的版本号。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、虚拟主机、营销软件、网站建设、蔡家坡网站维护、网站推广。
升级
关于iOS版本升级,苹果是不允许用户有强制用户升级的提示的,但是为了让用户知道APP更新了,一般APP里面是会有版本升级提示。下面来介绍一下一般都是怎么做的。
Tips:
1、用 "" 获取版本号,会出现延迟或请求回来的版本号不稳定还有就是与刚刚发布的版本号对不上。 这个是连接国外的服务器,所以会有延迟。 解决:使用 "" 路径。
2、如果上架的时候只选中国,而且又用"" 获取版本号,那么 resultCount 就为 0,获取不到版本数据。解决方法同上。
3、曾经测试反馈在 APP 刚启动时候都是白屏的情况。发现是版本号请求引起线程阻塞,所以要注意多线程问题。
4、应用程序还没有发布,如何获取它的 id 啊。不急,App Store Connect 创建要发布应用的时候会生成这个 id 的。
5、请求中需要的 id,登录开发者账号到 App Store Connect 上查看 App ID。
More Thinking , 如何进行强制更新和非强制更新?
Was this help article useful? Send feedback.
在设置—软件更新,检测最新版本进行下载更新就可以了。
目前ios15支持以下设备:
所有iPhone 12型号、所有iPhone 11型号、iPhone XS、iPhone XS Max、iPhone XR、iPhone X、iPhone 8、iPhone 8 Plus、iPhone 7、iPhone 7 Plus、iPhone 6s、iPhone 6s Plus、iPhone SE(第一代)、iPhone SE(第二代)、iPod touch(第七代)。
iOS 15是苹果公司研发的移动端操作系统,于北京时间2021年6月8日在2021苹果全球开发者大会上发布。iOS 15带来了新的FaceTime与通知界面,并对照片、天气、钱包、地图等应用进行了改进。
截至2021年10月14日,iOS 15正式版已更新至iOS 15.0.2, 测试版已更新至iOS 15.1 Beta4。
发布历程
2020年11月,有消息称苹果已经在准备iOS 15。
2021年5月25日,苹果宣布将于同年6月8日召开2021苹果全球开发者大会,发布iOS 15。
2021年6月8日,苹果在2021苹果全球开发者大会上发布iOS 15.0 Developer Beta(开发者测试版)。
2021年6月24日,苹果中国官方网站上线iOS 15预览版中文介绍。
2021年7月1日,苹果发布iOS 15.0 Public Beta(公开测试版)。
2021年9月21日,苹果发布iOS 15.0正式版。
2021年10月7日,苹果向开发者发布了iOS 15.1的第三个测试版,该更新为iPhone 13 Pro用户带来了一些新的相机功能。
如果我们要检测app版本的更新,那么我们必须获取当前运行app版本的版本信息和appstore 上发布的最新版本的信息。
当前运行版本信息可以通过info.plist文件中的bundle version中获取;
要获取当前app store上的最新的版本,有两种方法,
一、在某特定的服务器上,发布和存储app最新的版本信息,需要的时候向该服务器请求查询。
二、从app store上查询,可以获取到app的作者,连接,版本等。官方相关文档
具体步骤如下:
1,用 POST 方式发送请求:
你的应用程序名称entity=software
更加精准的做法是根据 app 的 id 来查找:
你的应用程序的ID
#define APP_URL 你的应用程序的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 =@"你的应用程序的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:@""];
[[UIApplicationsharedApplication]openURL:url];
}
}
}
方法/步骤
创建工程项目和视图控制器
1、创建工程项目,新建一个UIViewController;
2、选中工程,右键-New File…选择“Cocoa Touch Class”-Next,给个合理的名称ViewController,再Next完成;
3、在AppDelegate.m文件包含#import "ViewController.h";
4、初始化创建ViewController的视图控制器,并用导航栏控制器包含。将之设置为根视图控制器。
方法一:获取自己服务器版本号检查
1、通过网络请求获取服务器上的版本号;
2、获取当前应用版本号;
3、将版本号转换为整形进行比较;
4、如果有版本更新则跳转到app store上下载。
方法二:获取app store上架版本号检查
1、通过网络同步请求获取app store上对应APP ID的应用信息;
2、提取信息上的最新版本号和下载地址;
3、获取当前应用版本号;
4、将版本号转换成双精度型进行比较;
5、对于有两个点的版本号的最后一个点不处理。
方法二:进行比较版本号
1、比较两个double大小;
2、创建并初始化一个UIAlertView用以显示是否更新以及更新内容;
3、为UIAlertView添加代理方法;
4、[alert show]显示结果。
当需要更新下载时需要跳转下载
运行效果(以第二种方法,iOS版QQ应用为例截图)