仅供参考:如有问题请留言。如有更好的写法--请告诉我
版本更新中需要开发人员自己维护, 将配置文件写好, 给后台放在服务器中做好软件升级工作,软件更新是重中之重, 需要认真做好!不然会出大问题!
在这里介绍一下两个key值 一定不要混淆了!
CFBundleShortVersionString //对应的发布的版本号 对应上图的—————Version
CFBundleVersion // 对应的应用程序的内部版本号对应上图的—————Build(为什么有应用内部版本号呢—————因为上架的应用程序可能出现应用被拒的情况。比如我上架的1.0版本被拒绝了(应用内的版本号为1),需要重新打包在上传AppStore,这时候我们上传的版本一定还是1.0的,但是1.0的版本中有一个是已经被拒绝的,为了区分拒绝的和新上传的这时候我们将build 改的比之前的大就好—————1.1(反正比之前的大就好))
这里是对配置文件的介绍:
//versionArray 这里是保存的版本号数组
//versionDicArr 是一个字典, key————— 值为对应的版本号,Value 是一个数组—————对应的版本中需要提示升级的描述,其中在versionDicArr 中每一个版本的数组中最后一位有一个标识符位改标志服非空(YES)或者(NO)—————YES 表示强制更新, NO —— 表示不强制跟新
//updateAll 0 部分跟新 1 所有的强制更新2所有不更新 appstore的时候选择2,3 所有版本都不需要强制跟新
//如果选择0的话, 返回的数据中最后一位是YES, (改版本)表示强制跟新, 返回的是NO的话 (改版本)表示不强制跟新
//选择1的话, 所有版本都要强制更新
// 选择2的话所有都不显示更新的的提示框
// 选择3的话所有版本都不需要强制更新,显示的带有可以取消的箭头的问题
这里是版本更新的逻辑判断和显示可以放在appDelegate里面具体视情况而定。
获取版本应用的版本号
- (NSString *)getVersion {
return [NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"];
}
/** 版本更新**/
- (void)showVersion {
NSDictionary * dic = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@""]];// 这里是网络请求
SystemUpModel *systemUpModel = [SystemUpModel new];
[systemUpModel setValuesForKeysWithDictionary:dic];
if ([systemUpModel.updateAll isEqualToString:@"1"]) {// 所有强制更新
self.upSystem.dataArray = systemUpModel.versionDicArr[[self getVersion]];
self.upSystem.deleteBtn.hidden = YES; // 隐藏
[self VersionButton];
} else if ([systemUpModel.updateAll isEqualToString:@"0"]) { // 部分跟新 我们现在总共有5个版本
if ([systemUpModel.versionArray containsObject:[self getVersion]]) {
self.upSystem.dataArray = systemUpModel.versionDicArr[[self getVersion]];
if ([self.upSystem.dataArray.lastObject isEqualToString:@"YES"]) { // 部分强制跟新
self.upSystem.deleteBtn.hidden = YES; //隐藏
} else if ([self.upSystem.dataArray.lastObject isEqualToString:@"NO"]) {// 部分不需要强制更新
self.upSystem.deleteBtn.hidden = NO; // 显示
}
[self VersionButton];
}
} else if ([systemUpModel.updateAll isEqualToString:@"2"]) {// 所有不跟新
} else if ([systemUpModel.updateAll isEqualToString:@"3"]) {// 版本不强制跟新显示❌号
if ([systemUpModel.versionArray containsObject:[self getVersion]]) {
self.upSystem.deleteBtn.hidden = NO;
self.upSystem.dataArray = systemUpModel.versionDicArr[[self getVersion]];
[self VersionButton];
}
}
}