美文网首页
iOS的xcode的version,build以及App Sto

iOS的xcode的version,build以及App Sto

作者: 无星灬 | 来源:发表于2017-10-09 13:14 被阅读63次

    前人挖坑后人填。。。。
    阐述一下背景:
     App更新迭代,需要跟后台做一个版本控制更新的开关。正常来说应该是将xcode的version与App Store的version对应,并通过该值判断开关是否打开。
     但是问题来了。。上一位iOS工程师一直是使用的build进行版本控制,本地xocde的version比App Store的version高出不少。
     先说一说Version。分为xcode的version和App Store的version。理论上应该两者一致。方便维护。

    xcode的version

    可以通过

    //  获得version号
      NSString *versionCode =[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
    

    获取,获取的是info.plist文件中的


    335E8913-16AA-4B95-B4CB-63B50AEF28F6.png

    App Store的version

    则是通过调取接口:
    https://itunes.apple.com/lookup?id=你的app的id号;
    调用方式:post
    返回结果:

    NSArray *array = responseObject[@"results"];
    NSDictionary *dict = [array lastObject];
    NSLog(@"当前版本为:%@", dict[@"version"]);
    

    代码如下:

        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
        [manager POST:@"https://itunes.apple.com/lookup?id=414478124" parameters:nil success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {
            NSArray *array = responseObject[@"results"];
            NSDictionary *dict = [array lastObject];
            NSLog(@"当前版本为:%@", dict[@"version"]);
        } failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {
            NSLog @"请求失败";
        }];
    }
    

    正常来说都是对外暴露的版本,xcode与App Store的版本理应一致。方便维护。

    build:

    开发内部测试版本号,写多少都行,内部开发测试用的,写多少都行,最好是不要对外暴露。因为每次打包都需要往上+,所以用于版本控制效果不好。

    //获得build号:
      NSString *versionName =[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    

    由于不可逆的缘故,version是没办法往下降了。我只能将错就错,尽量更新大版本,去追xcode的version,希望多几次更新能将版本回归正常。

    相关文章

      网友评论

          本文标题:iOS的xcode的version,build以及App Sto

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