//判断是否首次下载
在程序启动的时候app delegate 中先判断
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
BOOL isFirst=[[NSUserDefaultsstandardUserDefaults] boolForKey:@"firstDownload"];
if(!isFirst){//如果不存在,则是第一次下载
NSLog(@"第一次下载");
[[NSUserDefaultsstandardUserDefaults] setBool:YESforKey:@"firstDownLoad"];
//执行相应的操作,如第一次下载发红包,给优惠券等
}else {
NSLog(@"不是第一次下载");
}
returnYES;
}
//这个是用本地偏好设置存储的,会存在一个问题,如果应用删除了,又重新下载,(当iCloud不存储时)会清除缓存。吧数据保存到服务器,根据手机唯一的标志,保存;下次登陆的时候从服务器取出判断;
手机标识的方法:1.钥匙串保存(不存app的删除要消失,一直在电脑中);
1.钥匙串KeyChian 是保存在沙盒之外的存储数据,相当于Dictionary, 所有应用都可以获取和保存,因此当一个软件卸载之后完全不影响里面的数据,这样当软件重新安装之后,还可以获取里面的原数据。
钥匙串的第三方框架SFHFKeychainUtils:
//保存数据
BOOL s = [SFHFKeychainUtils storeUsername:name andPassword:pswd forServiceName:server updateExisting:NO error:nil];
//获取密码
NSString * psw = [SFHFKeychainUtils getPasswordForUsername:name andServiceName:server error:nil];
SSKeyChains
KeychainItemWrapper
#pragma mark - 判断是不是首次登录或者版本更新
-(BOOL )isFirstLauch{
//获取当前版本号
NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
NSString *currentAppVersion = infoDic[@"CFBundleShortVersionString"];
//获取上次启动应用保存的appVersion
NSString *version = [[NSUserDefaults standardUserDefaults] objectForKey:kAppVersion];
//版本升级或首次登录
if (version == nil || ![version isEqualToString:currentAppVersion]) {
[[NSUserDefaults standardUserDefaults] setObject:currentAppVersion forKey:kAppVersion];
[[NSUserDefaults standardUserDefaults] synchronize];
return YES;
}else{
return NO;
}
}