iOS实现应用更新及强制更新

Posted 小、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS实现应用更新及强制更新相关的知识,希望对你有一定的参考价值。

调用更新接口返回字段:
result =     {
            descr = "";
            isupdate = 1;//是否更新
            qzupdate = 0;//是否强制更新
            updateurl = "http://www.baidu.com";//更新地址
            versioncode = "2.0";//版本号
        };
 
根据获取的是否更新、强制更新以及新版本的序号进行判断
(1)强制更新:无论如何弹出提示框且只有一个选项,点击跳转更新
(2)普通更新:弹出提示框有“取消”和“确定”两个选项:点击确定跳转更新;点击取消本地保存待更新版本号,再次进入时则和本地保存的待更新版本号进行判断,如果相同则弹出提示框,不相同则不操作(例如V1.1版本普通更新选择”取消”后,后面V1.1的版本不会再次提示,但V1.2版本更新仍会提示)
(3)无更新:不操作
 
 
本地保存数据:
待更新的版本序号:@“Version_To_Update"

AppDelegate:
//检查版本更新
-(void)checkVersionUpdate{
   
    //检查更新
    NSString *stringVer = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kCFBundleVersionKey];
    [[NetWorkRequest shareRequest]updateNewVersionWithversioncode:stringVer serverSuccessFn:^(id response) {
        if ([[response objectForKey:@"qzupdate"] intValue] == 1 &&
            [[response objectForKey:@"updateurl"] length] > 0) {
            DebugLog(@"需要强制更新");
            NSString *mes = [NSString stringWithFormat:@"发现最新版本%@,需更新后才能继续使用
更新内容:%@",[response objectForKey:@"versioncode"],[response objectForKey:@"descr"]];
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示"
                                                                message:mes
                                                               delegate:self
                                                      cancelButtonTitle:nil
                                                      otherButtonTitles:@"确定", nil];
            alertView.tag = 1001;
            [alertView show];
        }else if ([[response objectForKey:@"isupdate"] intValue] == 1 &&
                  [[response objectForKey:@"updateurl"] length] > 0) {
           
            NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
            NSString *version = [userDefaults objectForKey:@"Version_To_Update"];//待更新的版本
            version_to_update = [response objectForKey:@"versioncode"];
            if ([stringVer floatValue] < [version floatValue] &&
                [version_to_update floatValue] <= [version floatValue]) {
                //当前待更新版本已点击取消并在本地保存的待更新版本,不弹出提示框
               
            }else {
                //弹出提示框进行更新
               
               
                NSString *mes = [NSString stringWithFormat:@"发现最新版本%@,是否更新?
更新内容:%@",[response objectForKey:@"versioncode"],[response objectForKey:@"descr"]];
                UIAlertView *alertTi = [[UIAlertView alloc] initWithTitle:@"提示"
                                                                  message:mes
                                                                 delegate:self
                                                        cancelButtonTitle:@"取消"
                                                        otherButtonTitles:@"确定", nil];
                alertTi.tag = 1002;
                [alertTi show];
            }
           
        }else{
            //DebugLog(@"不需要更新");
        }
    } serverFailureFn:^(NSError *error, id response) {
       
    }];
}

 

 

 
 
 

以上是关于iOS实现应用更新及强制更新的主要内容,如果未能解决你的问题,请参考以下文章

强制核心数据更新模型

干货| 动态更新(热更新)机制及技术原理分享

如何为 iTunes 连接提供强制更新?

安卓app去除强制更新弹窗代码

滑动时 ViewPager 更新片段

如何强制重绘列表视图?