iOS 强制更新
来源:互联网 发布:墨西哥毒贩 知乎 编辑:程序博客网 时间:2024/04/27 20:04
废话不多说,直接上代码
+ (void)getNewVersion{ NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://itunes.apple.com/cn/lookup?id=1036152564"]]; NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { // 请求的数据转字典,必须判断数据有值才走里面,不然空的data会出现crash if (data.length > 0) { NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; NSString *newVersion = [result[@"results"] firstObject][@"version"]; NSString *message = [result[@"results"] firstObject][@"releaseNotes"]; NSString *trackViewUrl = [result[@"results"] firstObject][@"trackViewUrl"]; //屏蔽苹果审核员看到此更新提示口(此版本每次提交前更新成目前线上版本号) if ([newVersion isEqualToString:@"2.5.0"]) return; // 获得当前打开软件的版本号 NSString *currentVersion = [NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"]; // 针对新下载用户如果是第一次下载 不会走里面代码。如果是老用户就会走里面代码 if (![newVersion isEqualToString:currentVersion]) { UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"有新版本啦" message:message preferredStyle:UIAlertControllerStyleAlert]; [alertVC addAction:[UIAlertAction actionWithTitle:@"马上尝鲜" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:trackViewUrl]]; }]]; UIViewController *mainVc = [UIApplication sharedApplication].keyWindow.rootViewController; if (mainVc.presentedViewController) { mainVc = mainVc.presentedViewController; } [mainVc presentViewController:alertVC animated:YES completion:nil]; } } }]; [task resume];}
这是我把强制更新做成一个继承NSObject工具类里面的代码,我的类是这样写的:
下面是调用方法(当然你一定要包含头文件)
我和苹果审核员对赌的游戏其实就一句话:
//屏蔽苹果审核员看到此更新提示口(此版本号必须每次提交前更新成目前线上已上线版本号) if ([newVersion isEqualToString:@"2.5.0"]) return;
在上线之前一定要将此处的版本号改成你现在已经上线的版本号,我对赌的理由是,苹果审核员在审核我们的App的时候,他的手机或者pad上绝对没有安装我们之前的App,如果安装了的话,那他就会跟我们用户一样,会弹出更新提示框,这样我们的应用铁定是通过不了的,如果没安装,那他请求下来的version一定是跟我这里写死的是一样的,所以就会return掉,不会走后面的代码,事实证明,我赢了!但是这也不是绝对的,如果真有一天审核员心情好,一直留着你的App,那你就中奖了!
源码地址
转自:http://www.jianshu.com/p/b1196f50de82
1 0
- iOS 强制更新
- iOS-app更新和强制更新
- IOS 新增强制更新或者推荐更新流程
- 强制更新图片缓存
- android强制更新APK
- Maven 强制更新
- maven 强制更新。
- 【git】git 强制更新
- Umeng强制更新
- git强制更新
- mvn库强制更新
- iOS 规避苹果审查,实现app store上的app版本强制更新
- 解决灵格斯强制更新问题
- git强制更新所有submodule
- maven强制更新jar包
- yo generator 强制更新文件
- umeng自动更新之强制更新
- maven强制更新 eclipse 操作
- [LeetCode]496. Next Greater Element I
- 关于AES在Linux下加密解密出错问题解决方案
- maven自定义命令
- Runtime--将信息对象归档解档
- uart阻塞超时
- iOS 强制更新
- Tencent开源框架 Tinker学习(一)
- C++指针和引用的区别
- Python 使用write写进文件,在hive中转换数据出现null
- git创建本地仓库并且上传到github
- VS.NET 2003 + MySQL Server 5.1 编写第一个MySQL控制台程序 (二)
- Android Linker(二) Soinfo的创建-----动态库的加载链接
- linux 下vim的使用(必看)
- JavaSE--集合Collection的结构体系知识点1