CFBundleVersion与CFBundleShortVer
2019-06-18 本文已影响0人
高思阳
CFBundleVersion:标识内部版本号,如果发包错误时可以将错误的撤回及时更改内部版本号即可。这个是开发时候用的,通过对比服务器上的这个内部版本号(也就是build version),来判断是否需要强制升级。
CFBundleShortVersionString:代表应用的发布版本号,该版本的版本号是三个时期分隔的整数组成的字符串。第一个整数代表重大修改的版本,如实现新的功能或重大变化的修订。第二个整数表示的修订,实现较突出的特点。第三个整数代表维护版本。这个是给用户看的
image如上图:Version对应的就是CFBundleShortVersionString 发布版本号 如当前上架版本为1.0.0 之后你更新的时候可以改为1.0.1)
Build 对应的就是CFBundleVersion (内部版本号,用以记录开发版本的,每次更新的时候都需要比上一次高 如:当前版本是1.0.1.1 ,下次可以改为:1.0.1.2,也可以是2019061801,也就是日期+当天发包的次数)
举例,内部版本号定为日期+当天发包的次数,如何判断是否强制升级:
+ (NSString *)currentVersion {
return [NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"];
}
+ (NSInteger)currentBuildVersion {
NSString *versionString = [NSBundle mainBundle].infoDictionary[(NSString *)kCFBundleVersionKey];
return versionString.integerValue;
}
从服务器请求当前服务器上的内部版本号serverBuildVersion,直接跟app中currentBuildVersion进行对比即可,如果服务器的内部版本号高于app的buildVersion,则强制更新。
if (serverBuildVersion > serverBuildVersion)
{
//强制更新
}
这种规定下,每次发包都要注意修改info.plist中的CFBundleShortVersionString,使其+1。
另外注意,每次发包也要清楚当前这个包的发布版本号是多少。