以下获取 uuidString 的方法,每次重启都会改变。
创新互联公司是一家集网站建设,大邑县企业网站建设,大邑县品牌网站建设,网站定制,大邑县网站建设报价,网络营销,网络优化,大邑县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
但是项目的要求是不变,并且删除app 只有也有有保留的需求。显然这个无法满足我们的需求。
使用KeyChain保存到系统钥匙串中,然后再去获取相应的值,就可以保证删除app新装的app也能获取到第一次安装存储的值。显然是可以满足我们的需求的。
下面使用 KeychainAccess 的第三方类库来实现。
开箱即用!
使用方法:
大功告成!
参考文章 iOS唯一标识符(IDFAIDFV)
依赖: AdSupport.framework
系统支持: iOS6及以上系统
获取方式: [ASIdentifierManager sharedManager].advertisingIdentifier.UUIDString
定义: 由数字和字母组成的用来标识唯一设备的字符串。
特点:
依赖: UIKit.framework
系统支持: iOS6及以上系统
获取方式: [UIDevice currentDevice].identifierForVendor.UUIDString
定义: 由数字和字母组成的用来标识唯一设备的字符串。
特点: 根据vendor的值,如果vendor相同,则返回同一字符串;如果vendor不同,则返回不同的字符串。
vendor解释: 英文解释为卖家,小贩。根据xcode文档解释,正常情况下,会根据App Store提供的数据进行判断。但是如果app不是通过app store进行安装的(如企业应用或开发调试阶段),那么会根据bundle ID判断。
判断准则:
如:com.example.app1和com.example.app2,只有最后的后缀不同,所以会产生相同的vendor ID
在这里,还需要注意的一点就是:如果用户卸载了同一个vendor对应的所有程序,然后在重新安装同一个vendor提供的程序,此时identifierForVendor会被重置。
1.安装应用到手机A,获取UUID,UUID字符串是:5115e5a0a5464fcca1445fdb73e528b8,同时把UUID保存到钥匙串。
2.卸载应用重新安装,获取钥匙串里保存的UUID是否有值。通过测试验证,钥匙串里有对应保存的UUID,并且UUID字符串是:5115e5a0a5464fcca1445fdb73e528b8(同第1步保存的一样)。
3.反复卸载、安装进行多次,得到的结果(同第2步一样)。
4.恢复出厂设置(跟着提示进行就行,有点繁琐)
4.1把手机恢复出厂设置(抹掉所有内容和设置),抹掉时不进行备份操作,选择立即抹掉。
4.2进行重新设置手机,设置手机时有一步骤是选择恢复备份的界面,选择设置新的iPhone。(就是不选择恢复备份的iCloud备份的数据)。
5.完成第4步以后,手机恢复正常使用。在进行安装应用到手机A。这时,通过测试验证钥匙串里已经没有了之前保存的UUID。这时是重新获取一个新的UUID进行保存到Keychain(钥匙串),UUID字符串是:e56b79c897c847dc82461bad40937cbd。
6.这时把iCloud里的钥匙串打开,进行iCloud数据备份。
7.再次进行恢复出厂设置(换个方式进行)
7.1把手机恢复出厂设置(抹掉所有内容和设置),抹掉时进行备份操作,备份以后进行抹掉。
7.2进行重新设置手机,设置手机时有一步骤是选择恢复备份的界面,这时选择恢复iCloud备份的数据。
8.在次进行安装应用到手机A。这时,通过测试验证,钥匙串里有对应保存的UUID,并且UUID字符串是:e56b79c897c847dc82461bad40937cbd(同第5步保存的一样)。
1.打开手机的iCloud云盘进行数据备份
2.打开iCloud里的钥匙串选项
3.在重新恢复出厂设置的时候(抹掉所有内容和设置),要选择iCloud备份的数据后,在进行抹掉操作。
4.在重新设置手机的时候要保证填写iCloud备份是时对应的iCloud账号(第3步的iCloud账号)。
5.要选择iCloud备份数据恢复设置。
6.不能对手机进行刷机操作。
(通过测试,我个人认为,手机本人刷机后(非一般操作),重新开机,填写iCloud账号同一个的情况下,也可以恢复钥匙串,得到用户应用和设备的唯一性)。