由于UDID和OpenUDID被禁用,系统自带的的识别唯一标识有两种

广告标示符(IDFA-identifierForIdentifier)

这是iOS 6中另外一个新的方法,advertisingIdentifier是新框架AdSupport.framework的一部分。ASIdentifierManager单例提供了一个方法advertisingIdentifier,通过调用该方法会返回一个上面提到的NSUUID实例。

NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];

跟CFUUID和NSUUID不一样,广告标示符是由系统存储着的。不过即使这是由系统存储的,但是有几种情况下,会重新生成广告标示符。如果用户完全重置系统((设置程序 -> 通用 -> 还原 -> 还原位置与隐私) ,这个广告标示符会重新生成。另外如果用户明确的还原广告(设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符) ,那么广告标示符也会重新生成。关于广告标示符的还原,有一点需要注意:如果程序在后台运行,此时用户“还原广告标示符”,然后再回到程序中,此时获取广告标示符并不会立即获得还原后的标示符。必须要终止程序,然后再重新启动程序,才能获得还原后的广告标示符。之所以会这样,我猜测是由于ASIdentifierManager是一个单例。

针对广告标示符用户有一个可控的开关“限制广告跟踪”。Nick Arnott的文章中已经指出了。将这个开关打开,实际上什么也没有做,不过这是希望限制你访问广告标示符。这个开关是一个简单的boolean标志,当将广告标示符发到任意的服务器端时,你最好判断一下这个值,然后再做决定。

示例: 1E2DFA89-496A-47FD-9941-DF1FC4E6484A

Vindor标示符 (IDFV-identifierForVendor)

这种叫法也是在iOS 6中新增的,不过获取这个IDFV的新方法被添加在已有的UIDevice类中。跟advertisingIdentifier一样,该方法返回的是一个NSUUID对象。

NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

苹果官方的文档中对identifierForVendor有如下这样的一段描述 :

The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.

如果满足这样的条件,那么获取到的这个属性值就不会变:相同的一个程序里面-相同的vindor-相同的设备。如果是这样的情况,那么这个值是不会相同的:相同的程序-相同的设备-不同的vindor,或者是相同的程序-不同的设备-无论是否相同的vindor。

看完上面的内容,我有这样的一个疑问“vendor是什么”。我首先想到的是苹果开发者账号。但事实证明这是错误的。接着我想可能是有一个AppIdentifierPrefix东西,跟钥匙串访问一样,可以在多个程序间共享。同样,这个想法也是的。最后证明,vendor非常简单:一个Vendor是CFBundleIdentifier(反转DNS格式)的前两部分。例如,com.doubleencore.app1 和 com.doubleencore.app2 得到的identifierForVendor是相同的,因为它们的CFBundleIdentifier 前两部分是相同的。不过这样获得的identifierForVendor则完全不同:com.massivelyoverrated 或 net.doubleencore。

在这里,还需要注意的一点就是:如果用户卸载了同一个vendor对应的所有程序,然后在重新安装同一个vendor提供的程序,此时identifierForVendor会被重置。

示例: 599F9C00-92DC-4B5C-9464-7971F01F8370

转载于:https://www.cnblogs.com/hxwj/p/5383671.html

iOS设备唯一标识(可以用版)相关推荐

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

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

  2. 转-ios设备唯一标识获取策略

    [http://www.2cto.com/kf/201308/237648.html] 英文原文:In iOS 7 and later, if you ask for the MAC address ...

  3. iOS设备唯一标识获取策略(不定时更新)

    在iOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,它就是苹果IOS设备 ...

  4. 获取iOS设备唯一标识

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

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

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

  6. iOS设备唯一标识符探讨

    iOS设备唯一标识符探讨 一.现有方案 1.UDID(Unique Device Identifier) 获取方法:[[UIDevice currentDevice] uniqueIdentfier] ...

  7. iOS获取设备唯一标识的各种方法?IDFA、IDFV、UDID分别是什么含义?

    http://www.ithao123.cn/content-8688001.html iOS获取设备唯一标识的各种方法?IDFA.IDFV.UDID分别是什么含义? [摘要:1.UDID (Uniq ...

  8. android获取设备唯一标识_数据埋点:用户唯一标识

    用户唯一标识,是用户唯一的身份ID,相同的身份ID,就会被当做是相同的一个用户. 01 为什么要建设用户唯一标识 如何区分某个用户就是他这个用户,而不是另一个用户,在数据埋点中,是一个非常重要的事情. ...

  9. 手机设备唯一标识相关概念

    手机设备唯一标识相关概念 IMEI 定义 IMEI(International Mobile Equipment Identity)是国际移动设备识别码的缩写.俗称"手机串号".& ...

最新文章

  1. 4.12 总结-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  2. 二叉树的二叉链表存储结构构建以及先序遍历
  3. 蓝桥杯-未名湖边的烦恼(java)
  4. 背完这444句,你的口语绝对不成问题了
  5. 你想带一顶什么样的硕士帽(转载)
  6. python接口自动化接口依赖_Python接口自动化之mock模块简单使用
  7. mui hello html5 安装,HBuilder开发App Step1——环境搭建,HelloMUI 以及真机调试(示例代码)...
  8. android抽屉风格,Android开发实战之拥有Material Design风格的抽屉式布局
  9. set.contains()分析
  10. 【课程作业】表达学习 人脸图像复原 实验记录
  11. 【工大SCIR Lab】AAAI20 基于关键词注意力机制和回复弱监督的医疗对话槽填充研究...
  12. PS小技巧 | 怎么又下雨了
  13. c语言读取tdx日线文件,***EXCEL读取通达信股票日线数据***改为读取通达信股票5分钟数据...
  14. 线性代数:特征向量和特征值
  15. 2011年Esri用户大会技术亮点总结之一:概览
  16. 塔设备设计手册_强烈推荐必备资料—化工设备设计手册 (上、下卷全)
  17. 如何(不开百度会员进行下载提速)合作双赢之路
  18. vue中使用阿里字体图标库
  19. 字幕制作 分享剪辑视频添加滚动字幕的操作步骤
  20. 计算机台式硬件排名价格,台式机电脑主板排名

热门文章

  1. 简述一下你对mysql事物的理解_面试题:说说你对数据库事务的理解
  2. sybase性能优化经验浅谈
  3. 数据挖掘方法案例介绍
  4. Eclipse常用技巧总结:热键,自定义模版及其他
  5. ADO 数据类型转换表[转]
  6. 安全测试基础 -- 概述【转载】
  7. Spark GraphX
  8. 华为上机试题:最高分是多少
  9. viewpager+fragment学习笔记
  10. 封装JDBC事务操作,执行存储过程测试