IOS检查应用更新

使用这个方法,只传入你的appId即可,在只有需要更新时才做处理。

不依赖三方,不依赖后台


/* 随便可修改的block */
typedef void(^completionHandlerSuccess)(NSDictionary *responseObject);
typedef void(^completionHandlerFail)(int code,NSString *message);
/**
 根据appid获取appstore上app的版本和当前app的版本进行对比,检查更新

 @param appId app上架后的id
 @param success
 @param fail
 */
- (void)checkAppVersionWithAppId:(NSString *)appId Success:(completionHandlerSuccess)success andFail:(completionHandlerFail)fail{
    NSString *url = [NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@",appId];
    NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:20];
    [request setHTTPMethod:@"GET"];//method
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
        NSLog(@"apiJsonResult = %@",result);
        id responseObject = result;
        if (responseObject != nil &&
            [responseObject isKindOfClass:[NSDictionary class]] &&
            [[responseObject objectForKey:@"results"] isKindOfClass:[NSArray class]] &&
            [[responseObject objectForKey:@"results"] firstObject] !=nil &&
            [[[responseObject objectForKey:@"results"] firstObject] isKindOfClass:[NSDictionary class]]) {
            
           //返回的json信息
            NSDictionary *appStoreInfo = [[responseObject objectForKey:@"results"] firstObject];
           //当前app信息
            NSDictionary *localInfo = [[NSBundle mainBundle] infoDictionary];
            
            //app在appstrore上版本
            NSString *appStoreVersion = [appStoreInfo objectForKey:@"version"];
           //app当前版本
            NSString *localVersion = [localInfo objectForKey:@"CFBundleShortVersionString"];
            
            NSInteger appStoreVersionNumber = [appStoreVersion integerValue];
            NSInteger localVersionNumber = [localVersion integerValue];
            
            if (appStoreVersionNumber<=localVersionNumber) {
                fail(0,@"暂无更新");
            }else{
                NSDictionary *updateInfo = @{@"title":@"应用更新", //标题
                                             @"version":appStoreVersion, //版本
                                             @"notes":[appStoreInfo objectForKey:@"releaseNotes"], //版本更新描述
                                             @"url":[appStoreInfo objectForKey:@"trackViewUrl"], //app页url
                                             };
                success(updateInfo);
            }    
        }
    }];
    [task resume];

}

ps:

1.只要在itunes connect里创建了应用就可以看到appId了,无需等审核完成
2.此方法检查的是version,并非build,在上架的时候控制好这个。
3.请求返回app的众多信息,需要的自己拿来用。
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 使用这个方法,只传入你的appId即可,在只有需要更新时才做处理。 不依赖三方,不依赖后台 /* 随便可修改的bl...
    博行天下阅读 2,828评论 0 0
  • 在本章节,你将学会如何将App提交到App Store,还将学习使用iTunes和苹果应用商店的管理软件(见图11...
    sing_crystal阅读 8,585评论 1 21
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,464评论 19 139
  • 2017年11月20日下午,濮阳市第四中学教学楼综合教室里,灯火通明,虽然放学铃声早已响过,但丝毫没有影响到四年级...
    浅水微波阅读 2,047评论 0 0
  • 我梦见过那个男生九次了,每一次都是他回来找我了,呵呵,我还在想啥呢,我都想嘲笑自己,嘲笑自己没骨气,没自尊,笑自己...
    tobelieve阅读 3,738评论 0 0