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
原创粉丝点击