#pragma mark - 检查版本更新
+(void)checkVersion {//    if (![self judgeNeedVersionUpdate]) {//        return;//    }NSString *localVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];NSString *urlStr = @"https://itunes.apple.com/cn/lookup?id=xxx"; //xxx-你的Appid,iTunes可查看[[HDNetworking sharedHDNetworking] GET:urlStr parameters:nil success:^(id  _Nonnull responseObject) {int code = [responseObject[@"resultCount"] intValue];if (code == 1) {NSArray *sourceArray = responseObject[@"results"];if (sourceArray.count >= 1) {//AppStore内最新App的版本号NSDictionary *sourceDict = sourceArray[0];NSString *newVersion = sourceDict[@"version"];if ([self judgeNewVersion:newVersion withOldVersion:localVersion]){UIAlertController *alertVc = [UIAlertController alertControllerWithTitle:@"版本更新" message:sourceDict[@"releaseNotes"] preferredStyle:UIAlertControllerStyleAlert];UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"暂不更新" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {}];UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"去更新" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {//跳转到AppStore下载界面[[UIApplication sharedApplication] openURL:[NSURL URLWithString:sourceDict[@"trackViewUrl"]]];}];[alertVc addAction:action1];[alertVc addAction:action2];[[UIApplication sharedApplication].delegate.window.rootViewController presentViewController:alertVc animated:YES completion:nil];}}}} failure:^(NSError * _Nonnull error) {}];
}
//每天进行一次版本判断
- (BOOL)judgeNeedVersionUpdate {NSDateFormatter *formatter = [[NSDateFormatter alloc] init];[formatter setDateFormat:@"yyyy-MM-dd"];NSString *dateString = [formatter stringFromDate:[NSDate date]];NSString *currentDate = [UserDefaultsUtils getCurrentDate];if ([currentDate isEqualToString:dateString]) {return NO;}[UserDefaultsUtils setCurrentDate:dateString];return YES;
}
/*!@brief 判断当前app版本和AppStore最新app版本大小@param newVersion AppStore版本号@param oldVersion 本地APP版本号@return YES为AppStore版本大于本地APP版本*/
- (BOOL)judgeNewVersion:(NSString *)newVersion withOldVersion:(NSString *)oldVersion {NSArray *newArray = [newVersion componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"."]];NSArray *oldArray = [oldVersion componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"."]];if (oldArray.count == newArray.count) {for (NSInteger i = 0; i < newArray.count; i ++) {if ([newArray[i] integerValue] > [oldArray[i] integerValue]) {return YES;} else if ([newArray[i] integerValue] < [oldArray[i] integerValue]) {return NO;}}}return NO;
}

iOS 怎么在app里提示版本更新相关推荐

  1. ios浏览器打开app页面提示“浏览器打不开该网页,因为网址无效”

    在一次开发app中实现遇到的问题,实现H5页面唤醒app并跳转到指定页面,手机没有此app就跳转到商城下载页面,安卓手机有无app进行的跳转都在自己意料之中,毫无问题,但是iOS在有app的时候正常跳 ...

  2. iOS中文件连接群晖服务器,教你使用群晖怎么在ios的“家庭‘’App(HomeKit)里添加Hom...

    教你使用群晖HomeKit 怎么在ios的"家庭"App(HomeKit)里添加HomeBridge设备 此篇作为<群晖Docker快速搭建HomeBridge和HomeAs ...

  3. app里的“搜索提示“是如何实现的?

    用程序员的角度科普生活知识 hello 兄弟们 我是浩说 今天研究个什么事儿呢? 咱就是说:我们在浏览器或者app里搜索的时候 为什么我只输入了一两个字,下面就已经给我罗列出来我想搜的具体内容了 这是 ...

  4. (0003) iOS 开发之App 适配iOS 10

    iOS  10 给开发者带来的变化 顺便加一句:我是第一时间更新Xcode 8正式版的,一切正常,注释快捷键也没有网上说的问题.运行速度更快了,不容易崩溃了! App 做了哪些兼容: 1.UI 兼容, ...

  5. iOS杂谈15—APP被苹果APPStore拒绝的各种原因

    转载:dApps开发者 1.程序有重大bug,程序不能启动,或者中途退出. 2.绕过苹果的付费渠道,我们之前游戏里的用兑换码兑换金币. 3.游戏里有实物奖励的话,一定要说清楚,奖励由本公司负责,和苹果 ...

  6. iOS上的APP纷纷绕过苹果支付躲避30%抽成:“热更新”“马甲包”

    候维科技 近日,有业内人士向手游那点事爆料,有游戏厂商在产品中暗自嵌入第三方支付系统,试图绕过苹果支付,以避免分成.这其实并不是一件新鲜事,在业内早有发生,甚至被俗称为"切支付". ...

  7. Windows申请iOS证书上架App Store详细教程 (有这一篇就够了)

    Windows申请iOS证书上架App Store详细教程 上架基本需求资料 1.苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2.开发好的APP 通过本篇教程,可以学习到ios证书申请 ...

  8. iOS 应用提交 App Store 上架被拒的原因收集

    2019独角兽企业重金招聘Python工程师标准>>> App Store审核指南中文版(2014.10.11更新) 前言 感 谢您付出宝贵的才华与时间来开发iOS应用程程序.从职业 ...

  9. 25个增强iOS应用程序性能的提示和技巧 — 中级篇

    本文由破船译自:raywenderlich 转载请注明出处:BeyondVincent的博客 _____________ 在开发iOS应用程序时.让程序具有良好的性能是非常关键的.这也是用户所期望的. ...

最新文章

  1. python 密度聚类 使用_使用wgd进行全基因组复制分析
  2. TCP/IP 基础知识总结
  3. java开发和测试开发,附小技巧
  4. ubuntu下apache rewrite的设置
  5. Redis 分布式方案Redis Cluster
  6. XLNet(Generalized Autoregressive Pretraining for Language Understanding) 论文笔记
  7. java hashmap putall_Java ConcurrentHashMap.putAll方法代码示例
  8. linux目录大小从大到小,linux系统下如何将当前目录下的文件从小到大排列
  9. MyBatis使用动态SQL语句
  10. java数字后面加f_java 数字后面 f 和 l
  11. IAR编译32K限制
  12. 记忆网络之Dynamic Memory Networks模型介绍及代码实现
  13. 解决yum安装gcc报错:Error: Package: glibc-headers-2.17-317.el7.x86_64
  14. 关于windows密码加密算法的说明
  15. JAVA#泛型'学习札记
  16. 使用docker安装kurento
  17. 港股暴涨利好有哪些板块?
  18. qpainter可以设置某像素点的颜色吗_你知道人类眼球的内在价值高达35亿美金吗?...
  19. 简单了解HTTP协议与HTTPS协议
  20. 抚仙湖,一个亦梦亦幻的地方,这个五一节,我们骑友′的诗和远方

热门文章

  1. Android 代码 空格处理
  2. Echart 图表模板变量 {a}, {b},{c},{d},{e}
  3. mdb数据库连接代码_重用与MDB2的现有数据库连接
  4. Windows控制面板中英文对照表
  5. aigo U盘修复 被分成3个区,插入就显示格式化,raw无法修复系列问题一并解决
  6. 权健涉嫌传销犯罪被立案侦查,周洋父亲:很快会提起诉讼
  7. 高考平行报志愿计算机录取规则,高考录取这件事儿 平行志愿录取规则及填报技巧...
  8. 一个用Dijkstra算法实现的路由算法的java程序——2 GraphFromFile类
  9. Java复习五:抽象类+模板设计方法+接口+三种工厂模式
  10. 计算机三级考试中哪个更有价值?