废话不多说,直接上代码
+ (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会出现crashif (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:UIAlertActionStyleDefaulthandler:^(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