iOS 强制更新

废话不多说,直接上代码

+ (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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值