iOS:不请求网络的软件版本比较
2018-11-09 本文已影响0人
jackli007
需求:最近项目开发有一新的需求:软件更新后,用户第一次登录时,如果密码是初始密码,需要提示用户去修改密码。
问题:由于公司的产品是智能控制机器,但是是未联网,APP端通过蓝牙方式同机器通讯、交互。所以不能通过网络请求的方式去比较当前软件版本,故我采取的方案是每当能获取到软件版本,就将软件版本写入到沙盒中去,通过key-value的形式存储。
代码实现:
- (BOOL)isFirstLoad {
static NSString * kCFBundleShortVersionKey = @"CFBundleShortVersionString";
//获取当前软件版本
NSString *currentVersion = [[NSBundle mainBundle].infoDictionary objectForKey:kCFBundleShortVersionKey];
//沙盒中取存储的软件版本
NSString *storageVersion = [[NSUserDefaults standardUserDefaults] objectForKey:kCFBundleShortVersionKey];
//如果不能获取到沙盒中存储的版本或者存储的版本与当前版本不相等
if (!storageVersion || [storageVersion isEqualToString:currentVersion]) {
//将当前软件版本写入到沙盒中
[[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:kCFBundleShortVersionKey];
[[NSUserDefaults standardUserDefaults] synchronize];
//TODO:如果是初始密码,提示用户修改密码
return YES;
} else {
//TODO:正常使用
return NO;
}
}