設(shè)備碼做為激活碼的綁定特征锰蓬,很多時(shí)候因?yàn)橛脩舻牟僮鞑划?dāng)或者作者的寫法邏輯不對(duì)邻储,導(dǎo)致激活碼容易掉授權(quán)赋咽。
最好的方法還是用手機(jī)的UDID作為設(shè)備碼,因?yàn)閁DID刷機(jī)也不會(huì)改變吨娜,因免越獄的限制脓匿,必須安裝描述文件才能獲取到UDID,所以還是有部分用戶嫌麻煩或者不會(huì)使用宦赠。
下面說下怎么使用CFUUID作為設(shè)備碼陪毡。
因?yàn)镃FUUID是自己生成的,每次打開APP會(huì)變勾扭,所以我們把生成的CFUUID保存到Keychain里毡琉,以便作為唯一設(shè)備碼使用。(不可刷機(jī)妙色,恢復(fù)出廠或者一鍵新機(jī))
從Keychain里獲取CFUDID桅滋,沒有則新生成CFUDID并保存到Keychain
+(NSString*) GetIOSUUID
{
NSError *error;
NSString * string = [SFHFKeychainUtils getPasswordForUsername:@"UUID" andServiceName:@"com.cxkj.597131035" error:&error];
if (!string) {
}
if(error || !string){
NSLog(@"獲取密碼出錯(cuò):%@", error);
[self saveUUID];//保存
string = [SFHFKeychainUtils getPasswordForUsername:@"UUID" andServiceName:@"com.cxkj.597131035" error:&error];
}
else{
NSLog(@"獲取密碼成功!密碼為%@",string);
}
return string;
}
+(void)saveUUID
{
CFUUIDRef puuid = CFUUIDCreate( nil );
CFStringRef uuidString = CFUUIDCreateString( nil, puuid );
NSString * result = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidString));
CFRelease(puuid);
CFRelease(uuidString);
NSError *error;
BOOL saved = [SFHFKeychainUtils storeUsername:@"UUID" andPassword:result
forServiceName:@"com.cxkj.597131035" updateExisting:YES error:&error];
if (!saved) {
NSLog(@"保存密碼時(shí)出錯(cuò):%@", error);
}else{
NSLog(@"保存密碼成功身辨!%@",result);
}
}