我从简书搬家了
本文原地址:原地址
前人挖坑后人填。。。。 阐述一下背景:
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,希望多几次更新能将版本回归正常。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101374.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...