ios实现app强制更新功能

发布时间 - 2026-01-11 01:00:03    点击率:

最近因项目需求,需要用到强制更新功能,网上搜了一下,挺多的,但是把网上的代码拷贝以后,发现一个bug,就是进app,弹出框显示,点击现在升级,跳转到AppStore下载里面,但是我不下载,又切回到app里面,发现弹出框就不跳了,其实也简单,就是appdelegate里面有个代理方法,就是当app从后台切到前台走的方法,将强制更新方法在这里面在调用一下就行了~~~话不多说,上代码!!!用的话直接粘贴复制~

效果图:

在appdelegate里面写下面代码

  //提示版本更新
 [self VersonUpdate];
#pragma mark ------提示用户版本更新------

-(void)VersonUpdate{

  //定义app地址
  NSString *urld = [NSString  stringWithFormat:@"http://itunes.apple.com/lookup?id=%d",1178114725];

  NSURL *url = [NSURL URLWithString:urld];

  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];

  [request setHTTPMethod:@"POST"];

  NSURLSession *session = [NSURLSession sharedSession];

  NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

    NSLog(@"%@",response);

    NSMutableDictionary *receiveStatusDic = [[NSMutableDictionary alloc]init];

    if (data) {

      NSDictionary *receiveDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
      if ([[receiveDic valueForKey:@"resultCount"] intValue] > 0) {

        [receiveStatusDic setObject:@"1" forKey:@"status"];

        [receiveStatusDic setObject:[[[receiveDic valueForKey:@"results"] objectAtIndex:0] valueForKey:@"version"]  forKey:@"version"];

        [self performSelectorOnMainThread:@selector(receiveData:) withObject:receiveStatusDic waitUntilDone:NO];


      }else{

        [receiveStatusDic setValue:@"1" forKey:@"status"];


      }
    }else{


      [receiveStatusDic setValue:@"-1" forKey:@"status"];
    }


  }];

  [task resume];

}
-(void)receiveData:(id)sender
{
  //获取APP自身版本号
  NSString *localVersion = [[[NSBundle mainBundle]infoDictionary]objectForKey:@"CFBundleShortVersionString"];

  NSArray *localArray = [localVersion componentsSeparatedByString:@"."];//1.0
  NSArray *versionArray = [sender[@"version"] componentsSeparatedByString:@"."];//3 2.1.1


//  if ((versionArray.count == 2) && (localArray.count == versionArray.count)) {

    if ([localArray[0] intValue] < [versionArray[0] intValue]) {

      [self updateVersion];

    }else if ([localArray[0] intValue] == [versionArray[0] intValue]){
      if ([localArray[1] intValue] < [versionArray[1] intValue]) {
        [self updateVersion];

      }else if ([localArray[1] intValue] == [versionArray[1] intValue]){
        if ([localArray[2] intValue] < [versionArray[2] intValue]) {

          [self updateVersion];

        }
      }
    }
//  }

}

-(void)updateVersion{

  NSString *msg = [NSString stringWithFormat:@"版本过低,需要升级到最新版本"];
  UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"升级提示" message:msg preferredStyle:UIAlertControllerStyleAlert];
  UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"现在升级" style:UIAlertActionStyleDestructive handler:^(UIAlertAction*action) {

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://itunes.apple.com/cn/app/m-help/id1178114725?mt=8"]];
    [[UIApplication sharedApplication]openURL:url];
  }];
  [alertController addAction:otherAction];
  [self.window.rootViewController presentViewController:alertController animated:YES completion:nil];

}
//当app从后台切到前台时调用的方法
- (void)applicationDidBecomeActive:(UIApplication * )application
{
  [self VersonUpdate];
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ios  # app强制更新  # iosapp强制更新  # 强制更新  # android中强制更新app实例代码  # 详谈angularjs中路由页面强制更新的问题  # Android应用强制更新APP的示例代码  # php强制更新图片缓存的方法  # 弹出  # 我不  # 有个  # 在这  # 就不  # 网上  # 升级到  # 多说  # 跳了  # 最新版本  # 大家多多  # 过低  # 跳转到  # 挺多  # 就行了  # 台时  # NSURLRequestReloadIgnoringCacheData  # cachePolicy  # setHTTPMethod  # timeoutInterval 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  lovemo网页版地址 lovemo官网手机登录  浅析上传头像示例及其注意事项  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  北京网站制作公司哪家好一点,北京租房网站有哪些?  公司门户网站制作流程,华为官网怎么做?  LinuxCD持续部署教程_自动发布与回滚机制  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  JavaScript Ajax实现异步通信  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  音乐网站服务器如何优化API响应速度?  微信小程序 闭包写法详细介绍  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  javascript基于原型链的继承及call和apply函数用法分析  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel怎么在Controller之外的地方验证数据  Laravel如何处理文件下载请求?(Response示例)  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  原生JS实现图片轮播切换效果  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  黑客入侵网站服务器的常见手法有哪些?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  无锡营销型网站制作公司,无锡网选车牌流程?  zabbix利用python脚本发送报警邮件的方法  ,怎么在广州志愿者网站注册?  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel如何实现多对多模型关联?(Eloquent教程)  Laravel如何为API编写文档_Laravel API文档生成与维护方法  Laravel如何配置任务调度?(Cron Job示例)  如何做网站制作流程,*游戏网站怎么搭建?  详解Android图表 MPAndroidChart折线图  免费视频制作网站,更新又快又好的免费电影网站?  如何打造高效商业网站?建站目的决定转化率  如何在香港免费服务器上快速搭建网站?  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  Laravel如何使用Blade模板引擎?(完整语法和示例)  如何用5美元大硬盘VPS安全高效搭建个人网站?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  html5的keygen标签为什么废弃_替代方案说明【解答】  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  打造顶配客厅影院,这份100寸电视推荐名单请查收  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  如何用VPS主机快速搭建个人网站?