应用每开发一个新版本时,都可能会有新特性介绍页面。所以在应用里就要判断是不是新版本,并且能判断只有第一次进入应用时,才是新版本。
//* 在delegate里判断*/
//1、 取出沙盒中存储的上次使用软件的版本号
NSString *key = @"CFBundleShortVersionString";
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *lastVersion = [defaults stringForKey:key];
// 2、获得当前软件的版本号
NSString *currentVersion = [NSBundle mainBundle].infoDictionary[key];
// 3、判断版本号
if ([currentVersion isEqualToString:lastVersion])
{// 旧版本
}else{ // 新版本
// 存储新版本
[defaults setObject:currentVersion forKey:key];
}
解释
1、CFBundleShortVersionString 标识应用程序的发布版本号
- 该标志表示就是应用的版本号,一般是由三个整数分隔组成的字符串。第一个整数代表重大修改的版本,如实现新的功能或重大变化的修订。第二个整数表示的修订,实现较突出的特点。第三个整数代表维护版本。** 该键的值不同于“CFBundleVersion”标识**
2、CFBundleVersion 标识应用的内部版本号
- 这个版本是内部自己团队使用的一个版本号,一般不对外公开。
3、区别
-
CFBundleShortVersionString
对应Xcode里项目的Version
-
CFBundleVersion
对应Xcode里项目的Build
4、AppStore 发布
每发布一个新应用或新版本,苹果都要求你输入一个版本号,这个版本号对应的是 CFBundleShortVersionString
,不要写错哦。并且,如果你上传成功后(未审核,或未通过),然后又修复了bug,或改了功能,那么在打包发布时,CFBundleVersion
必须比上一版本更大。
- 打个比方,我第一次上传的Version:1.5.1、Build:3.4.2 ,那我这个应用被拒绝,修复好后,我又打包上传时,Version还是1.5.1,但Build必须大于3.4.2,可以是3.4.3 、3.4.5、3.8.5等。 如果Version 1.5.1通过审核后,又发新版本,那个下次上传时,Version要大于1.5.1,但Build可以从新开始,比如1.1.0 。如果Version1.5.1又有问题,我又要上传修改后的应用时,Build必须大于上一个上传成功的Build,即要大于1.1.0。
5、如果还有什么不明白,可能给我留言哦
~nice
- 如果有什么疑问,可以在评论区一起讨论;
- 如果有什么不正确的地方,欢迎指导!
注:本文首发于 iHTCboy's blog,如若转载,请注明来源。