调用更新接口返回字段:
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] == &&
[[response objectForKey:@"updateurl"] length] > ) {
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 = ;
[alertView show];
}else if ([[response objectForKey:@"isupdate"] intValue] == &&
[[response objectForKey:@"updateurl"] length] > ) { 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 = ;
[alertTi show];
} }else{
//DebugLog(@"不需要更新");
}
} serverFailureFn:^(NSError *error, id response) { }];
}
 
 
 

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

  1. iOS 版本更新(强制更新)检测问题

    iOS 版本更新(强制更新)检测问题 通常iOS系统中是默认设置再wifi状态,且网络状况良好下自己更新应用的. 但是如果用户设置了不自动更新,但是我们的APP出现重要的版本,一定需要用户更新的情况下 ...

  2. iOS开发笔记10:圆点缩放动画、强制更新、远程推送加语音提醒及UIView截屏

    1.使用CAReplicatorLayer制作等待动画 CALayer+CABasicAnimation可以制作很多简单的动画效果,之前的博客中介绍的“两个动画”,一个是利用一张渐变色图片+CABas ...

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

    这篇文章纯给自己留个备份,所以对AdHoc证书内部分发和对iOS客户端开发不了解的请直接无视. 一般在iOS游戏或应用开发过程中,正式发布到App Store之前,都需要内部的测试,客户端的安装是个不 ...

  4. iOS 15 Beta升级卡死在更新进程,无法启动怎么办?

    2021苹果全球开发者大会结束后,大批果粉迫不及待的尝试升级iOS 15测试版本,想第一时间体验新功能. 但是许多用户反馈升级一直卡死在"准备更新"."验证更新" ...

  5. WPF强制更新

    ,更新的时候选择最小版本号,就是强制更新

  6. maven缺少依赖包,强制更新命令

    mvn clean install -e -U -e详细异常,-U强制更新

  7. ios开发数据库版本迁移手动更新迭代和自动更新迭代艺术(二)

    由于大家都热衷于对ios开发数据库版本迁移手动更新迭代和自动更新迭代艺术(一)的浏览下面我分享下我的源文件git仓库: 用法(这边我是对缓存的一些操作不需要可以省去):https://github.c ...

  8. git 本地代码冲突解决,强制更新

    git reset soft,hard,mixed之区别深解 git reset --hard  强制更新覆盖本地   GIT reset命令,似乎让人很迷惑,以至于误解,误用.但是事实上不应该如此难 ...

  9. Maven项目强制更新,解决Failed to read artifact descriptor for xxx.jar问题

    导入的maven项目pom.xml现红叉 分析原因:在maven本地仓库中找不到相应的jar包. 解决方案:让maven强制更新依赖. 项目右击菜单,Maven -> Update Projec ...

随机推荐

  1. 那些年我们一起追逐的多线程(Thread、ThreadPool、委托异步调用、Task/TaskFactory、Parallerl、async和await)

    一. 背景 在刚接触开发的头几年里,说实话,根本不考虑多线程的这个问题,貌似那时候脑子里也有没有多线程的这个概念,所有的业务都是一个线程来处理,不考虑性能问题,当然也没有考虑多线程操作一条记录存在的并 ...

  2. Python——错误笔记

    1.同一个项目(Project)下,不同的库(Package)之间默认不相互引用,注意这样的错误: 2.使用sklearn之前,需要安装scipy库

  3. springBoot和Mybatis输出sql日志

    利用slf4j来输出日志. 首先需要版本兼容的slf4j-log4j12.log4j.slf4j-api.slf4j-nop.slf4j-simple这5个包. 可以去maven知识库中找到这5个包的 ...

  4. GBDT原理及利用GBDT构造新的特征-Python实现

    1. 背景 1.1 Gradient Boosting Gradient Boosting是一种Boosting的方法,它主要的思想是,每一次建立模型是在之前建立模型损失函数的梯度下降方向.损失函数是 ...

  5. 电脑右键新建excel工作表,但是扩展名是.xls,而不是.xlsx

    怀疑是因为之前安装了wps,然后又卸载了,导致的.上网查阅,如下: excel默认新建xls 不是我的问题 Excel 2010/2013/2016在鼠标右键新建xls或xlsx文件后,打开报错“无法 ...

  6. Java(16)接口

    一.接口:特殊的抽象类 1.1 语法 public interface 接口名 extends 接口1,接口2{ //1.常量 //2.抽象方法 } 1.2 特点 a.用interface修饰 b.接 ...

  7. java 注意事项---避免踩坑

    1.......对象参数接收不能大写

  8. Capsules for Object Segmentation(理解)

    0 - 背景 今年来卷积网络在计算机视觉任务上取得的显著成果,但仍然存在一些问题.去年Hinton等人提出了使用动态路由的新型网络结构——胶囊网络来解决卷积网络的不足,该新型结构在手写体识别以及小图像 ...

  9. Mask_RCNN学习记录(matterport版本)

    资源链接 Mask R-CNN论文 matterport版本的GitHub 基于Keras和Tensorflow GitHub上还有Facebook的官方实现版本:Detectron maskrcnn ...

  10. 基于注解的SpringMVC自定义DispatcherServlet配置

    通过重载AbstractAnnotationConfigDispatcherServletInitializer实现类的customizeRegistration()方法来自定义DispatcherS ...