iOS 版本更新迭代
开发中我们可能会遇到这样的需求,当AppStore中有新版本迭代更新,在用户点开APP的时候弹框提醒客户去AppStore更新APP。这里面就有个关键点,判断当前APP与AppStore中的版本高低,若一样,则无需进行提示;反之则弹框提示(用户使用版本不会比AppStore版本高~)。
下面就说一下如何获取APP在AppStore中的版本,直接上代码。
#define KEY @"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.初始化session
NSURLSession *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:] 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]; }else if ([currentVersion isEqualToString:storeVersion]){ // 旧版本 } }];
// 3.开启任务
[sessionTask resume];
}
http://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。
参考文章:
1.《ios版本更新判断》;
iOS 版本更新迭代的更多相关文章
- iOS 版本更新(强制更新)检测问题
iOS 版本更新(强制更新)检测问题 通常iOS系统中是默认设置再wifi状态,且网络状况良好下自己更新应用的. 但是如果用户设置了不自动更新,但是我们的APP出现重要的版本,一定需要用户更新的情况下 ...
- iOS版本更新的App提交审核发布流程
http://www.2cto.com/kf/201502/378698.html 版本更新的App和新App的发布提交流程略有不同,新的App需要在开发者账号里准备发布证书,添加App的id,关联描 ...
- iOS版本更新的App提交审核流程
App的版本更新估计是在所难免的了!更新App和新的App发布有何不同了?今天我们一起来看看吧!在发布App的时候我们需要通过开发者帐号——(申请)——>发布证书(需要钥匙串对证书签名也叫加密( ...
- iOS7 中的新加入的下载类NSURLSession(随ios版本更新而更新)
想详细的了解网络下载的相关知识,要仔细阅读URL Loading System Programming Guide 这里有篇好文章(http://www.shinobicontrols.com/blo ...
- iOS 版本更新检查
#pragma mark ---------------------------------- #pragma mark -- 检测版本更新 -(void)onCheckVersion { NSDic ...
- iOS版本更新在APP中直接访问AppStore
1.导入框架 #import <StoreKit/StoreKit.h> 2.添加代理 <SKStoreProductViewControllerDelegate> 3.设置跳 ...
- ios版本更新总结
更新思路,获取APP Store 版本号与项目本地版本号对比,如果本地低于商店版本号,就提示用户更新(说明:在上架项目时请保持本地和商店版本号一致,避免检测更新问题被拒) 1.获取商店版本号,代码如下 ...
- ios 版本更新提示-硬更新/软更新
实现: 强制更新:每次弹框 非强制更新:一天提示一次 代码如下: 步骤一: 将检测更新写到APPDelegate的applicationDidBecomeActive中 步骤二: 检测是否需要更新 步 ...
- [App Store Connect帮助]七、在 App Store 上发行(4)分阶段发布某个版本更新(iOS 和 watchOS)
当您发布您 App 的一个版本更新时,您可以选择分阶段发布您的 iOS App.如果您正在提交一个 iOS 版本更新,且您的 App 处于以下 App 状态之一,则此选项可用. 准备提交 正在等待审核 ...
随机推荐
- ref与out区别
ref与out out.ref都是传递引用(内存地址),使用后都将改变原来参数的数值. ref 当调用方法时,在方法中会对ref传入的参数数值进行改变,若使用ref参数,则方法定义和调用方法都 ...
- mint linux的几个问题
刚开机登录时, 键盘不停的输入同一个字符 发现在虚拟机里安装的系统没有问题, 因此怀疑配置有冲突, 新建一个用户果然能解决问题 解决方法: 把 主目录下, 隐藏的配置目录删除, 重新登录后再配置. 4 ...
- vim python支持
yum remove vim -y yum install ncurses-devel python-devel -y git clone https://github.com/vim/vim.git ...
- Maven--Cargo远程部署
参考:https://www.digitalocean.com/community/questions/how-to-access-tomcat-8-admin-gui-from-different- ...
- Vue专题-路由系统
一切分离都是为了更好的结合,本文详细介绍了前后端分离架构之后,前端如果实现路由控制,即Vue路由系统. Vue路由系统 VueRouter实现原理 VueRouter的实现原理是根据监控锚点值的改变, ...
- python pandas字符串函数详解(转)
pandas字符串函数详解(转)——原文连接见文章末尾 在使用pandas框架的DataFrame的过程中,如果需要处理一些字符串的特性,例如判断某列是否包含一些关键字,某列的字符长度是否小于3等等 ...
- runlevel 运行级别
linux启动过程 关于Ubuntu 12.04修改默认运行级别,启动字符界面的个人理解 网上通常的做法是:(亲自试验,不管用),如果想直接操作请看绿色字体部分 (1)第一种方法: 由于Red ...
- 微信公众号关联小程序AppID是什么
微信公众平台appid在哪 1.appid和appsecret是微信公众平台服务号才有的,如果自己家的公众平台不是服务号,需要升级为服务号. 2.登录服务号,登录“服务”条目,“服务中心”如图. 3. ...
- python 删除文件
import os 删除文件: os.remove() 删除空目录: os.rmdir() 递归删除空目录: os.removedirs() 递归删除目录和文件(类似DOS命令DeleteTree): ...
- 洛谷 P2278 [HNOI2003]操作系统
题目传送门 解题思路: 一道没啥思维含量的模拟题,但是个人感觉代码实现不简单,可能是我太弱了,花了我6个小时,3次重写. AC代码: #include<iostream> #include ...