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:@"发现最新版本%@,需更新后才能继续使用\n更新内容:%@",[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:@"发现最新版本%@,是否更新?\n更新内容:%@",[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) {

    }];
}

原文地址:https://www.cnblogs.com/ios-wmm/p/10216070.html

时间: 2024-10-17 11:43:59

iOS实现应用更新及强制更新的相关文章

iOS客户端的在线安装和更新—针对ADHoc证书

这篇文章纯给自己留个备份,所以对AdHoc证书内部分发和对iOS客户端开发不了解的请直接无视. 一般在iOS游戏或应用开发过程中,正式发布到App Store之前,都需要内部的测试,客户端的安装是个不大不小的问题.苹果提供了AdHoc的证书(普通版可以装100台设备,企业版无限),登记设备号 的即可通过iTunes或者无线网络安装使用AdHoc证书的App.具体不多赘述. 参考资料:http://www.alexcurylo.com/blog/2010/08/27/wireless-ad-hoc

关于angularjs中路由页面强制更新的问题

有这么一个问题,在页面内路由页面跳转时,第一次跳入路由页面时是正常的,但是第二次会记住第一次时的状态,有时候并不想这样,想强制更新这个路由页面. 有一种方式就是使用 ui-sref-opts功能,我试了,结果不好使,不知道是哪里出的问题: <a class="item" ui-sref="page1({id:1})" ui-sref-opts="{reload:true, notify: true}"> 链接1</a> 在

Chrome强制更新Flash导致视频广告屏蔽扩展失效的解决办法

本文章仅对旧版本的Chrome浏览器有效.(本人环境 Chrome V31) 最近Chrome强制更新Flash至18.0.0.209,是因为Flash爆出重大漏洞,会导致运行Flash的木马网页可以入侵用户系统. 不过新版本的Flash会导致大部分的视频广告屏蔽扩展失效,而无法播放视频.那如何解决呢? 我们可以通过利用旧版本的Flash文件来覆盖新版本,让Chrome运行旧版本的Flash插件. 不过这样会让你的电脑暴露在漏洞的危险之下,本人强烈推荐你安装一款屏蔽网页Flash的插件,仅在常用

解决之前上架的 App 在 iOS 9 会闪退问题 (更新:已有 Hotfix)

解决之前上架的 App 在 iOS 9 会闪退问题 (更新:已有 Hotfix) 最新更新:(2015.10.02) 开发环境: Delphi 10 Seattle OS X El Capitan v10.11 需使用下列 HotfixID: 30398, PAServer Hotfix for Delphi, C++Builder and RAD Studio 10 Seattle Xcode v7.0.1 iOS SDK v9.0 真机测试(以下机种皆不闪退): iPhone 3GS v6.

友盟在线参数+自动更新升级SDK实现指定版本强制更新升级

项目上有这样的需求:对指定的版本要求强制升级,同时其它的版本可以选择性升级. 友盟的自动更新功能还是挺好用的,只不过对强制升级这块支持的还不到位. 不过友盟的开发人员也给出了勉强可行的方案: 使用友盟在线参数来控制哪些版本需要强制更新,哪些版本不需要 相关的内容如下: 1.在线参数配置: http://dev.umeng.com/analytics/android/advanced-integration-guide#3 2.强制更新官方代码: https://github.com/nxzhou

iOS 程序插件及功能动态更新思路

所用框架及语言 iOS客户端-Wax(开发愤怒的小鸟的连接Lua 和 Objc的框架),Lua,Objc, 服务端-Java(用于返回插件页面) 工具框架链接地址:Wax - https://github.com/probablycorey/wax  Netty - https://netty.io/  用做Http服务器,返回页面 由于Lua脚本语言,不需要编译即可运行,这点是我的这个思路可以执行的大前提,再加上苹果允许像Lua这样的脚本的存在,这一思路才能得以实现.个人感觉这一思路有点类似于

IOS常见错误分析解决(一直更新) 你值得收藏-综合贴

-来自收藏总结 综合了好多的常见错误 1:clang failed with exit code 254 一:检测代码中 是否 有 NSLog 打印了 返回 void 的值. 2:Verify exit code of build task with internal identifier 'CopyPNGFile 123.png' 一:将出错的png,用PhotoShop重新转换一次,  如果PhotoShop打不开,改后缀为Jpg 试试. 转换时,请使用 :存储为Web或设备所使用的格式格式

ios笔试题收集(持续更新)

IOS开发笔试题目 一.OC语法部分: 1. NSObject 中description属性的意义,它可以重写吗 用法举例:定义一个Person类,声明两个成员变量 @interface Person : NSObject { NSString * name; int age; } 在类的实现中,init方法初始化成员变量 @implementation Person - (instancetype)init { self = [super init]; if (self) { name = @

友盟强制更新

公司项目选择了umeng的更新功能和,统计插件,而由于版本的管理,使得需要针对某些版本进行强制更新.比如上个版本出现了重大问题,必须进行版本升级才能修复,产品架构有了重大调整,数据结构发生了变化导致原先的app无法解析等等情况.但是查过umeng的产品文档,点击跳转地址为: 坑爹的umeng竟然没有强制更新功能,在目前的方法中无法实现强制更新.想想都开始打算做一个下载接口了,自己实现强制更新了... 再查了次umeng的替代方案,发现有一个这样方式,通过在后台设置在线参数,然后在app中对在线参