天天看點

iOS的xcode的version,build以及App Store的version

我從簡書搬家了

本文原位址:原位址

前人挖坑後人填。。。。 闡述一下背景:

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檔案中的

###App Store的version 則是通過調取接口: itunes.apple.com/lookup?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,希望多幾次更新能将版本回歸正常。