版本号

规则

版本号的格式:v<主版本号>.<副版本号>.<发布号>
如版本号为2.3.6
1. 我一般把第一位作为大版本号。如出现重大更新,如果用户不更新,这个app都用不下去了。这个时候就要强制用户更新。
2. 第二位作为功能版本号。比如增加了一些新的功能。这个时候通过增加这个版本号,来添加功能。
3. 第三位作为修订版本号。如,上线后出现了一个bug,这个bug需要及时修复,这个时候就增加这个修订版本号。

更新思路

强制更新:

在出现第一位版本号变化的时候,强制更新。通过appStore上的版本和当前的版本对比。

可选更新:

在非第一位版本号变化的时候,用户可以选择暂时忽略(下次还会出现这个弹窗),跳过(下次打开不出现),或者更新app。

具体看后面代码⤵️

效果

  1. 强制更新
  2. 可选更新

部分代码段

1.获取appstore上的内容

- (void)checkVersion{AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];[manager GET:[LGAppInfo appUrlInItunes] parameters:nil progress:nil success:^(NSURLSessionDataTask *task,id responseObject) {LGLog(@"%@",responseObject);//1.是否请求成功if (((NSArray *)responseObject[@"results"]).count<=0) return;//2.获取appstore版本号和提示信息self.storeVersion = [(NSArray *)responseObject[@"results"] firstObject][@"version"];NSString *releaseNotes = [(NSArray *)responseObject[@"results"] firstObject][@"releaseNotes"];//3.获取跳过的版本号NSString *skipVersion = [[NSUserDefaults standardUserDefaults] valueForKey:skipVersionKey];//4.比较版本号LGLog(@"%@--%@",self.storeVersion,skipVersion);if ([self.storeVersion isEqualToString:skipVersion]) {//如果store和跳过的版本相同return;}else{[self compareCurrentVersion:[LGAppInfo appVersion] withAppStoreVersion:self.storeVersion updateMsg:releaseNotes];}} failure:nil];
}

2.比较版本

/**当前版本号和appstore比较@param currentVersion 当前版本@param appStoreVersion appstore上的版本@param updateMsg 更新内容*/
- (void)compareCurrentVersion:(NSString *)currentVersion withAppStoreVersion:(NSString *)appStoreVersion updateMsg:(NSString *)updateMsg{NSMutableArray *currentVersionArray = [[currentVersion componentsSeparatedByString:@"."] mutableCopy];NSMutableArray *appStoreVersionArray = [[appStoreVersion componentsSeparatedByString:@"."] mutableCopy];if (!currentVersionArray.count ||!appStoreVersionArray.count) return;//修订版本号int modifyCount = abs((int)(currentVersionArray.count - appStoreVersionArray.count));if (currentVersionArray.count > appStoreVersionArray.count) {for (int index = 0; index < modifyCount; index ++) {[appStoreVersionArray addObject:@"0"];}} else if (currentVersionArray.count < appStoreVersionArray.count) {for (int index = 0; index < modifyCount; index ++) {[currentVersionArray addObject:@"0"];}}//大版本必须强制更新<及 第一位表示大版本>if ([currentVersionArray.firstObject integerValue] > [appStoreVersionArray.firstObject integerValue]) {//强制更新---[self showUpdateAlertMust:YES withStoreVersion:appStoreVersion message:updateMsg];}else{//不需要强制更新 检查后面的版本号,如果比appstore大  则更新for (int index = 0; index<currentVersionArray.count; index++) {if ([currentVersionArray[index] integerValue]> [appStoreVersionArray[index] integerValue]) {[self showUpdateAlertMust:NO withStoreVersion:appStoreVersion message:updateMsg];return;}}}
}

3.跳转界面

/**打开appstore 执行更新操作*/
- (void)openAppStoreToUpdate{LGLog(@"打开到appstore");NSURL *trackUrl = [NSURL URLWithString:self.trackViewUrl];if ([LGApplication canOpenURL:trackUrl]) {[[UIApplication sharedApplication] openURL:trackUrl];}
}

使用方法

在appdelegate.m中,程序唤醒后调用如下:

- (void)applicationDidBecomeActive:(UIApplication *)application {[[LGCheckVersion shareCheckVersion] checkVersion];}

demo地址

https://github.com/LGLee/LGCheckUpdate.git

点个赞送大胸美女一枚

iOS-app更新和强制更新相关推荐

  1. 方舟服务器维护公告11月19日,明日方舟11月19日更新总结 强制更新补偿5源石

    明日方舟将于11月19日迎来版本更新维护,本次的维护时间从10点持续到下午4点,本次的更新属于强制更新,玩家需要重新下载,不过会补偿5个源石,来看看本次具体的更新总结内容吧. 主要更新内容 1.开放喧 ...

  2. XZ_iOS 之企业版APP安装和强制更新

    企业版的安装流程: 1.打包企业版证书的ipa包,放在 https 服务器上,把下载的链接地址,放在plist文件中: 2.把plist也放在服务器上面,plist中的代码如下所示: 3.根据下载下面 ...

  3. 我为什么没有加入苹果的iOS APP移动大军?[最近更新:2015-02-03]

    [作者] 网名: 猪头三 站点: http://www.x86asm.com Email: pliceman_110@163.com QQ: 643439947 编程生涯: 2001-至今[共14年] ...

  4. maven 强制更新_Android App内部更新Library的方法

    超详细!安卓巴士开发者大会嘉宾及主题介绍 AutoUpdateProject 最新版本及说明请关注GitHub,欢迎Star. 有什么意见与建议欢迎交流! github地址: https://gith ...

  5. 对APP强制更新的思考

    "作为一名产品人员,要永远保持好奇心",这句话,一直烙印在我心里 今天,在体验一款金融型APP的时候,遇到了一个平时比较少遇到的问题--APP强制更新,不更新就不能用.我不信这个邪 ...

  6. 强制更新客html页面,强制更新

    强制更新 1. 什么是强制更新 当某个qp包希望用户快速下载到时,可以使用强制更新. 强制更新是为了解决出了故障或者希望某个版本(业务做活动)的QP 包能快速被更新到而设计的功能,使用起来也相当简单, ...

  7. iOS APP功能测试(个人总结完整版)

    1-APP的安装和卸载 1.1安装 软件在不同操作系统(iOS 9.0/iOS 10.0/iOS 11.0/iOS 12.0及其他小迭代系统版本)上是否正常安装 软件在不同的手机型号(iPhone 5 ...

  8. android 更新平台,Android更新平台架构方案

    这篇文章是去年写的,我们的两款app一直这使用umeng的更新服务,但是16年umeng开始放弃更新服务,考虑到切换到其他更新平台也会面临这样的问题,我开始着手自己搭建一个更新平台.整体方案包含前后端 ...

  9. iOS 规避苹果审查,实现app store上的app版本强制更新

    要想规避苹果审查,我们需要通过调用数据接口来控制调用app 版本强制更新功能:当苹果在审查的时候,我们可以通过后台数据控制关闭版本强制更新功能,等苹果审核通过以后我通过后台控制打开版本强制更新功能.下 ...

最新文章

  1. 看清头秃元凶,腾讯AI首度揭示真相
  2. ios手机连接远程服务器,04-iOS逆向工程使用SSH通过USB远程登录越狱iPhone
  3. Activity LaunchMode验证
  4. Android Toolbar Padding
  5. 11 个 Visual Studio 代码性能分析工具
  6. 第二届战神杯线上编程挑战赛月赛第一题:回文数
  7. Linux Kernel ‘_xfs_buf_find()’函数空指针引用拒绝服务漏洞
  8. python常问问题_Python新手在作用域方面经常容易碰到的问题
  9. Oracle:lsnrctl start Timeout or Adapter error
  10. 后台执行命令的工具screen
  11. 录屏软件电脑_电脑录屏用什么软件?电脑录屏软件集锦
  12. JQuery Easyui/TopJUI表格基本的删除功能(删除当前行和多选删除)
  13. 蜗居(露骨争议电视剧《蜗居》...
  14. DNN常见激活函数与其求导公式及来源
  15. Paper intensive reading (六):Altered Interactions between the GM and Colonic Mucosa Precede Polyposis
  16. 华图教育计算机基础知识,公共基础知识备考:计算机辅助制造
  17. java web QQ(三)
  18. MAC安装jmeter以及JDK配置
  19. chrome linux 64 deb,在Arch Linux下安装Chrome的DEB包
  20. python b站 排行_Python爬虫抓取B站小视频排行榜,新手也可以跟着做哦!

热门文章

  1. Greasy Fork、GitHub、OpenUserJS
  2. RPLIDAR思岚雷达学习记录--1--初识a1并跑通
  3. 干货!必看创意按钮设计,打造真正的按钮诱惑
  4. 读书笔记--认知突围
  5. ThrottleStop CPU频率调节
  6. 12306泄露数据可视化分析
  7. tcpdump 文件权限相关问题
  8. radeon r600 hpd中断处理
  9. 用矩形法求定积分,分别求sin x dx ,cos x dx,e exp x;
  10. Android图片之svg