iOS 程序员O~1iOS Developer

app强制更新功能

2017-05-04  本文已影响1786人  晨阳聊电影
项目截图

最近因项目需求,需要用到强制更新功能,网上搜了一下,挺多的,但是把网上的代码拷贝以后,发现一个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 ([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 (versionArray.count > 2) {
                    if (localArray.count > 2) {
                        if ([localArray[2] intValue] <  [versionArray[2] intValue]) {
                            [self updateVersion];
                        } else {
                            NSLog(@"已经是最高版本了");
                        }
                    } else {
                        [self updateVersion];
                    }
                }else {
                    NSLog(@"已经是最高版本了");
                }
                
            }else if ([localArray[1] intValue] >  [versionArray[1] intValue]){
                NSLog(@"已经是最高版本了");
            }
     
        }else if ([localArray[0] intValue]  >  [versionArray[0] intValue]){
            
             NSLog(@"已经是最高版本了");
        }
}
}

-(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];
}
上一篇下一篇

猜你喜欢

热点阅读