相信很多应用都会跟踪并识别设备,如何识别一台手机呢?
1.uid是唯一标识别,它是唯一硬件标示,全球不会重复;
2.你的app若开启了广告标示符选项也可以使用广告标示符号。从idfa = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];来看它好像是UUID,那么只要是uuid那么就有可能在抹除操作系统是变更,不清楚苹果怎么生成的UUID那么也不能完全肯定。在苹果商店提交app都提示若没有设置开启广告标识符但是使用了广告标识符号查出来后会永久封研发者证书和账号。 若app开启了广告标识符但是没有投放广告讲会被拒绝。
3.使用SAMKeychain钥匙串存储设备唯一标示(本质是UUID)。
UUID的优势将更加明显。根据使用的特定机制,UUID不仅需要保证是彼此不相同的,或者最少也是与公元3400年之前其他任何生成的通用唯一标识符有非常大的区别。UUID最少在3000+年内不会重复。
大家知道uuid获取一次就会变化一次。那么如何把它当作设备的唯一标识符呢?
获取UUID判断是:首先判断本地是否存存UUID,若获取不到就通过SAMKeychain读区系统中存储的UUID,若仍旧读区不到就生成UUID,存到本地和钥匙串中。因为是存入系统中,所以删除应用再安装应用读出的设备标示不变。
那同一设备何时获取的设备标示会变呢?系统抹除。
苹果系统抹除是十分罕见的事情,正式版本的系统不允许系统回退,以下是系统抹除的情况:
1:用户的手机有问题需要苹果营业部人员返厂维修的,会抹除系统(这个我遇到过);
2:用户自己升级失败,通过iTunes和电脑抹除系统重新安装系统的(就是你手机升级失败变成板砖了,你把它抹除了操作系统,重新安装了系统。这个我遇到过)。
幸亏苹果没有克隆手机的操作系统到另一个手机(黑技术,偷用户系统数据快捷方式)。让安卓用户为克隆手机操作系统发愁去吧!
部分代码如下:

//获取设备唯一标示符
+ (NSString *)UUID;
{NSString *deviceUUId = [[NSUserDefaults standardUserDefaults] objectForKey:@"uuid"];//        NSLog(@"str = %@",str);if (deviceUUId){return deviceUUId;}else{NSString *deviceUUId = [UICKeyChainStore stringForKey:@"uuid" service:@"com.test.taxi"];if (deviceUUId) {//            [[NSUserDefaults standardUserDefaults] setObject:deviceUUId forKey:@"uuid"];[BITMobilePassword setUserDefaultsValue:deviceUUId key:@"uuid"];return deviceUUId;}else {CFUUIDRef puuid = CFUUIDCreate( nil );CFStringRef uuidString = CFUUIDCreateString( nil, puuid );NSString * result = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidString));CFRelease(puuid);CFRelease(uuidString);UICKeyChainStore *store = [UICKeyChainStore keyChainStoreWithService:@"BitInfo.Pods"];NSString *deviceUUID = [result md5String];[store setString:deviceUUID forKey:@"uuid"];//            [[NSUserDefaults standardUserDefaults] setObject:deviceUUId forKey:@"uuid"];[BITMobilePassword setUserDefaultsValue:deviceUUId key:@"uuid"];//        [store synchronizable];NSLog(@"store = %@ str = %@",store,deviceUUId);return deviceUUID;}}return nil;
}

采用SAMKeychain钥匙串存储设备唯一标示与何种情况下同一个手机它存储的值会变化相关推荐

  1. IOS设备唯一标示符的方案比较

    现有IOS设备唯一标示符的方案比较 UDID [[UIDevice currentDevice] uniqueIdentfier] iOS官方最早提供的UDID方案,根据某一公式,使用设备序列号.网卡 ...

  2. ios 设备获取idfa_获取iOS设备唯一标示UUID

    在开发过程中,我们经常会被要求获取每个设备的唯一标示,以便后台做相应的处理.我们来看看有哪些方法来获取设备的唯一标示,然后再分析下这些方法的利弊. 具体可以分为如下几种: UDID IDFA IDFV ...

  3. swift获取openuuid_获取iOS设备唯一标示UUID——Swift版

    在开发过程中,我们经常会被要求获取每个设备的唯一标示,以便后台做相应的处理.我们来看看有哪些方法来获取设备的唯一标示,然后再分析下这些方法的利弊. 具体可以分为如下几种: UDID IDFA IDFV ...

  4. 关于苹果设备唯一标示uuid

    UDID被弃用,使用UUID来作为设备的唯一标识.获取到UUID后,如果用NSUserDefaults存储,当程序被卸载后重装时,再获得的UUID和之前就不同了.使用keychain存储可以保证程序卸 ...

  5. 存储设备唯一标识(浏览器指纹库)

    https://github.com/fingerprintjs/fingerprintjs 1.npm安装 or yarn npm i @fingerprintjs/fingerprintjs # ...

  6. linux挂载华为存储设备,Centos 6.5挂载华为赛门铁克存储(Oceanspace S6800E存储系统)...

    Centos 6.5挂载华为赛门铁克存储(Oceanspace S6800E存储系统) 一.存储端配置 1.Oceanspace S6800E ISCSI主机端口配置流程图 2.创建LUN 事例说明: ...

  7. iOS设备唯一标识符解决方案

    iOS设备唯一标识符解决方案 最近在公司的项目中有记录设备唯一标识符的需求,通过唯一标识符去识别设备的注册类别从而进行角色的切换,在这个过程中查找了一些资料,在此稍作总结,留下一些痕迹,当然能给有同类 ...

  8. [转]iOS设备唯一标识探讨

    转自:http://www.jianshu.com/p/b83b0240bd0e iOS设备唯一标识探讨 为了统计和检测应用的使用数据,几乎每家公司都有获取唯一标识的业务需求,在iOS5以前获取唯一标 ...

  9. android下存储设备的使用

    本文转自android官网,原文地址:https://source.android.google.cn/devices/storage 1.概览 1.1.存储 Android 一直在不断发展,可支持各 ...

最新文章

  1. 算法之智能搜索(下)
  2. 类加载器-双亲委派-源码分析1
  3. Redis面试常问4-- 如何实现异步队列 Blpop key timeout
  4. 计算机动画专业哪个大学排名,哪些大学院校数字媒体艺术、动画专业比较排名...
  5. 零基础学python难吗-学习python12小时后,告诉你,学python真没你想的那么难!
  6. 深度竞品分析:阿里旗下闲鱼与58旗下转转
  7. 小涴熊漫画CMS一款不错的开源免费的漫画连载系统带采集API
  8. 74xx系列芯片类型及功能概览
  9. iredmail mysql 配置_Iredmail各大组件连接Mysql配置说明
  10. 地狱已满 服务器无响应,steam地狱已满怎么联网
  11. 边境的悍匪—机器学习实战:第十九 大规模训练和部署TensorFlow模型
  12. 硬盘和硬盘驱动器的区别
  13. Spring Boot3.0正式发布及新特性解读
  14. 智能客服工单系统与工单管理系统的区别
  15. 超级玛丽游戏(C语言)
  16. Python攻关之文件操作
  17. 记-微服务CPU100%排查之windows版
  18. linux环境怎么更新离线rpm包,SUSE Linux 11系统rpm包离线安装GCC
  19. 11.9-11.13宁阳东平五日
  20. javascript学习_真正学习javascript

热门文章

  1. jest 客户端 实现 Sliced+Scroll并行查询
  2. 全国增值税发票查验平台 | 免验证码
  3. 阿里云服务器调用阿里云企业邮箱
  4. layui登陆验证页面模板(滑块学习)
  5. <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇
  6. WEBSHELL姿势之SQL一句话
  7. 垃圾邮件识别-朴素贝叶斯算法
  8. Java培训班靠谱吗?
  9. 计算机论文的致谢部分写什么,毕业论文致谢部分怎么写
  10. 第十届蓝桥杯大赛个人赛省赛(软件类)真题