iOS检查版本更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS检查版本更新相关的知识,希望对你有一定的参考价值。

项目原来的检查代码适用于1.2 1.3格式。一般正常的项目格式应该是1.2.2 ,如此大版本.小版本格式。

贴下代码

-(void)onCheckVersion
{
    dispatch_queue_t queue =  dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(queue, ^{
        NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
        NSString *currentVersion = [infoDic objectForKey:@"CFBundleShortVersionString"];
        NSString *URL = @"http://itunes.apple.com/lookup?id=xxx";
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        [request setURL:[NSURL URLWithString:URL]];
        [request setHTTPMethod:@"POST"];
        NSHTTPURLResponse *urlResponse = nil;
        NSError *error = nil;
        NSData *recervedData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
        NSString *results = [[NSString alloc] initWithBytes:[recervedData bytes] length:[recervedData length] encoding:NSUTF8StringEncoding];
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:[results dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:nil];
        NSArray *infoArray = [dic objectForKey:@"results"];
        if ([infoArray count]) {
            NSDictionary *releaseInfo = [infoArray objectAtIndex:0];
            NSString *lastVersion = [releaseInfo objectForKey:@"version"];
            if (([self versionNumberConVersion:lastVersion] >[self versionNumberConVersion:currentVersion])) {
                alert = [UIAlertController alertControllerWithTitle:@"发现新版本" message:[releaseInfo objectForKey:@"releaseNotes"] preferredStyle:UIAlertControllerStyleAlert];
                UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"暂不" style:UIAlertActionStyleCancel handler:nil];
                [alert addAction:cancelAction];
                UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"更新" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
//                    NSURL *url = [NSURL URLWithString:@"https://itunes.apple.com/cn/app/xxname/idxxx?l=en&mt=8"];
                    NSURL *url = [NSURL URLWithString:@"itms-apps://itunes.apple.com/cn/app/xxname/idxxx?mt=8"];
                    [[UIApplication sharedApplication]openURL:url];
                }];
                [alert addAction:sureAction];
                dispatch_async(dispatch_get_main_queue(), ^{
                     [self presentViewController:alert animated:YES completion:nil];
                });

            }
        }
    });
}
-(int)versionNumberConVersion:(NSString*)version{
    //假如版本号1.5.1 截图如下 这边需要确定几位小数,来确定数组个数。
    int num1 = 0;
    NSArray *ary = [version componentsSeparatedByString:@"."];
    if (ary.count) {
        for (int i = 0; i<ary.count; i++) {
            if (i==0) {
                num1 = [ary[0] intValue]*10000;
            }else if (i==1){
                num1 = [ary[0] intValue]*10000+[ary[1] intValue]*100;
            }else if (i==2){
                num1 = [ary[0] intValue]*10000+[ary[1] intValue]*100+[ary[2] intValue];
            }else if (i>=3){
                num1 = [ary[0] intValue]*10000+[ary[1] intValue]*100+[ary[2] intValue];
            }
        }

    }
    //NSLog(@"版本号%d",num1);
    return num1;
}

  技术分享

  

以上是关于iOS检查版本更新的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 socket.io 的版本并更新它

iOS快速集成检查更新

使用objective-c检查iOS更新是不是可用?

如何检查 iOS 是不是有可用更新?

iOS Appstore 版本更新

如何为 XSLT 代码片段配置 CruiseControl 的 C# 版本?