首页 > 系统 > iOS > 正文

ios实现app强制更新功能

2020-07-26 02:49:23
字体:
来源:转载
供稿:网友

最近因项目需求,需要用到强制更新功能,网上搜了一下,挺多的,但是把网上的代码拷贝以后,发现一个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];}

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表