我從簡書搬家了
本文原位址:原位址
前人挖坑後人填。。。。 闡述一下背景:
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,希望多幾次更新能将版本回歸正常。