美文网首页
IOS检查应用更新

IOS检查应用更新

作者: 禾子_____ | 来源:发表于2016-12-27 11:51 被阅读41次

使用这个方法,只传入你的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

相关文章

  • IOS检查应用更新

    使用这个方法,只传入你的appId即可,在只有需要更新时才做处理。 不依赖三方,不依赖后台 ps: 1.只要在it...

  • 苹果审核被拒原因

    1.应用内包含检查更新内容 iOS 应用的版本更新必须通过 App Store 进行,自身 App 内不能包含提示...

  • iOS检查更新

    //以get的形式提交,get的参数就是上面的域名,parameters的参数是一个字典类型,将上面的字典作为它的...

  • iOS检查更新

    自从iOS8系统开始,用户可以在设置里面设置在WiFi环境下,自动更新安装的App。此功能大大方便了用户,但是一些...

  • iOS检查更新

  • IOS 检查更新

    #pragma mark -检查更新 -(void)checkUpdateWithAPPID:(NSString*...

  • iOS 检查更新

    1、从苹果服务器上查询已发布的最新应用版本号 请求的URL地址: 返回的数据为json格式(包括开发者ID,开发者...

  • iOS开发之获取App Store的上架信息(包括版本号)并实现

    由于iOS app不允许检查更新,凡是app在上架审核时出现“检查更新”字样的都有可能被打回,而检查更新功能是产品...

  • 【Android开发学Flutter】APP检查更新

    APP检查更新基本上是所有APP必备的功能,除了应用市场的提示更新之外,我们还希望APP有应用内检查更新功能,方便...

  • ionic2实现APP自动更新

    app版本更新可以在应用的设置里面检查版本进行更新或者进入app后自动检查更新。我这里实现的是自动检查更新。 第一...

网友评论

      本文标题:IOS检查应用更新

      本文链接:https://www.haomeiwen.com/subject/ragsvttx.html