版本迭代更新

简介: 版本迭代更新

#defineKEY @"CFBundleShortVersionString"- (void)judgeCurrentAppStoreVersion

{//1.通过session请求NSString *str =@"http://itunes.apple.com/lookup?id=414478124";

NSURL*urlStr =[NSURL URLWithString:str];

NSURLRequest*request =[NSURLRequest requestWithURL:urlStr];//2.初始化sessionNSURLSession *session =[NSURLSession sharedSession];

NSURLSessionTask*sessionTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError *_Nullable error) {

NSDictionary*appInfo = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];

NSArray*infoContent = [appInfo objectForKey:@"result"];//2.1商店版本号NSString *storeVersion = [[infoContent objectAtIndex:0] objectForKey:KEY];

NSLog(@"商店的版本号是%@", storeVersion);//2.2当前客户端的版本号NSString *currentVersion =[NSBundle mainBundle].infoDictionary[KEY];

NSLog(@"当前版本是%@", currentVersion);//2.3比较当前版本号和商店版本号if(![currentVersion isEqualToString:storeVersion]) {//新版本//2.4弹窗提示更新UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"有最新版本了,请及时更新"message:nil preferredStyle:UIAlertControllerStyleActionSheet];

UIAlertAction*OKAction = [UIAlertAction actionWithTitle:@"确定"style:UIAlertActionStyleDefault handler:^(UIAlertAction *_Nonnull action) {

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:APP_STRING]];

}];

UIAlertAction*cancelAction = [UIAlertAction actionWithTitle:@"取消"style:UIAlertActionStyleDefault handler:nil];

[alertController addAction:OKAction];

[alertController addAction:cancelAction];

dispatch_async(dispatch_get_main_queue(),{

[self.window.rootViewController presentViewController:alertController animated:YES completion:nil];

});//2.5存储新版本号NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];

[defaults setObject:KEY forKey:currentVersion];

[defaults synchronize];

}elseif([currentVersion isEqualToString:storeVersion]){//旧版本}

}];//3.开启任务[sessionTask resume];

}


ttp://itunes.apple.com/lookup?id=414478124 id为APP在AppStore中的一个序号。可以打开appstore 点击一个app 复制链接即可看到。id 是在你提交信息后,先不要提交审核,

就可以看到id。(PS:我是这样做的,有更好的可以指正)然后拿到这个id后可以去代码里面写了。

解释:

1.CFBundleShortVersionString表示应用程序的发布版本号,

该版本号一般由三个整数构成,第一个整数表示有重大的修改版本,例如增加新的功能或重大变化。第二个版本表示修订版本,实现较为突出的特点。第三个版本表示维护的版本。

该值不同于 "CFBundleVersion" 标识

2.CFBundleVersion 标识应用的内部版本号

这个版本是内部自己团队使用的一个版本号,一般不对外公开。

这两个的区别:

1. CFBundleShortVersionString对应Xcode里项目的Version

2. CFBundleVersion对应Xcode里项目的Build

每发布一个新应用或新版本,苹果都要求你输入一个版本号,这个版本号对应的是CFBundleShortVersionString,不要写错哦。并且,如果你上传成功后(未审核,或未通过),然后又修复了bug,或改了功能,那么在打包发布时,CFBundleVersion必须比上一版本更大。

打个比方,我第一次上传的Version:1.5.1、Build:3.4.2 ,那我这个应用被拒绝,修复好后,我又打包上传时,Version还是1.5.1,但Build必须大于3.4.2,可以是3.4.3 、3.4.5、3.8.5等。 如果Version 1.5.1通过审核后,又发新版本,那个下次上传时,Version要大于1.5.1,但Build可以从新开始,比如1.1.0 。如果Version1.5.1又有问题,我又要上传修改后的应用时,Build必须大于上一个上传成功的Build,即要大于1.1.0。


相关文章
|
编译器 C++ Windows
win10 环境下配置 openGL的freeglut、glew等库,使用openGL
win10 环境下配置 openGL的freeglut、glew等库,使用openGL
7641 0
Burpsuite系列 -- (PC端、手机端)抓包配置
Burpsuite系列 -- (PC端、手机端)抓包配置
685 0
|
缓存 网络协议 算法
Linux内核必读五本书籍(强烈推荐)
Linux内核必读五本书籍(强烈推荐)
1835 0
|
12月前
|
运维 物联网 数据中心
|
开发框架 前端开发 JavaScript
基于SqlSugar的开发框架循序渐进介绍(31)-- 在查询接口中实现多表联合和单表对象的统一处理
基于SqlSugar的开发框架循序渐进介绍(31)-- 在查询接口中实现多表联合和单表对象的统一处理
|
安全 物联网 API
API的科普
在当今这个数字化时代,信息如同血液般在无数个系统、应用和设备之间流淌,而这一切高效、无缝的交互背后,离不开一个至关重要的技术组件——API(Application Programming Interface,应用程序编程接口)。API作为数字世界的桥梁,不仅连接了不同的软件系统,还推动了数据共享、业务自动化以及创新服务的不断涌现。本文将深入探讨API的定义、作用、发展历程、关键技术、应用场景以及未来趋势,旨在揭示API在数字化转型中的核心价值和无限潜力。
1587 0
|
存储 数据管理 Linux
Linux - 记录问题:docker 迁移 更改镜像默认位置的注意事项
Linux - 记录问题:docker 迁移 更改镜像默认位置的注意事项
353 0
|
编解码 前端开发 UED
移动端适配:前端开发的必经之路
【2月更文挑战第1天】移动端适配:前端开发的必经之路
414 0
|
存储 SQL 关系型数据库
postgresql snapshot 快照源码解读
本文主要介绍数据库事务快照,分别从源码实现角度和从SQL使用角度来剖析,快照的原理,作用,用途,以及在实现过程中存在的一些差异。
1108 3
|
机器学习/深度学习 自然语言处理 安全
智慧导诊系统的技术支撑与实际运作
简单地说,智慧导诊系统是一种利用人工智能技术,为医生提供帮助的系统。它可以通过分析患者的症状和病史为医生提供疾病诊断和治疗方案的建议。
214 5