在做公司移動辦公手機打卡功能時,公司要求一人只能綁定一臺設備,來杜絕手機代打卡事件。所以在請求服務器接口時,我們傳入了UUID這個參數,當第一次打卡時,后臺把這個UUID保存到數據庫。當以后打卡,服務器判斷這個參數是否跟第一次綁定的UUID相同,不相同則認為你設備換了,不能打卡。
本來這個功能用的好好的,但是這段時間發現公司有的設備在卸載程序,再次安裝移動辦公的時候,它的UUID會變化,上網查了一下,確實會變化。
這就尷尬了。
解決方法是UUID還是通過下面方法獲取
NSString *uuidVendor = [[UIDevice currentDevice].identifierForVendor UUIDString];
NSString *uuidStr = [uuidVendor stringByReplacingOccurrencesOfString:@"-" withString:@""];
不過在獲取到這個UUID以后,保存到鑰匙串中,這樣的話,不管是否卸載程序,每次都先去鑰匙串中取值,如果鑰匙串中有值的話,直接使用。沒有的話,再去獲取設備UUID
鑰匙串按我理解就是一個字典,里面就保存著UserName和Password,我是把userID當成用戶名,把UUID當成password,如下:
// 取UUID 從鑰匙串
NSString *uuidFromKeyChain = [SFHFKeychainUtils getPasswordForUsername:g_loginUser.userName
andServiceName:SERVICE_NAME error:nil];
//把UUID存入到鑰匙串
[SFHFKeychainUtils storeUsername:g_loginUser.userName andPassword:uuidStr forServiceName:SERVICE_NAME updateExisting:1 error:nil];
這樣就OK了
知行辦公,專業移動辦公平臺https://zx.naton.cn/
【總監】十二春秋之,3483099@qq.com;
【Master】zelo,616701261@qq.com;
【運營】狼行天下,897221533@qq.com;****
【產品設計】流浪貓,364994559@qq.com;
【體驗設計】兜兜,2435632247@qq.com;
【iOS】淘碼小工,492395860@qq.com;iMcG33K,imcg33k@gmail.com;
【Android】人猿居士,1059604515@qq.com;思路的頓悟,1217022114@qq.com;
【java】首席工程師MR_W,feixue300@qq.com;
【測試】土鏡問道,847071279@qq.com;
【數據】喜樂多,42151960@qq.com;
【安全】保密,你懂的。