在做公司移动办公手机打卡功能时,公司要求一人只能绑定一台设备,来杜绝手机代打卡事件。所以在请求服务器接口时,我们传入了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;
【安全】保密,你懂的。