关于UUID的理解 :

英文名称是:Universally Unique Identifier,翻译过来就是通用唯一标识符。

UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。

是一个32位的十六进制序列,使用小横线来连接:8-4-4-4-12 。

代码获取的方式:

NSLog(@"uuid = %@",[NSUUID UUID].UUIDString);

但是通过运行程序可以发现,循环10次,每一次打印的值都是不一样的,当然循环的再多,这个值永远不会出现两个一样的值。

所以从某种程序上来说,UUID跟你的设备没有什么关系了。

由于UUID的本身特性,它保证对在同一时空中的所有机器都是唯一的。

所以,需要作为唯一标识码的话,你可以通过保存在keychain或者NSUserDefaults中.

关于UDID的理解 :

所谓UDID指的是设备的唯一设备识别符,移动广告商和游戏网络运营商往往需要通过UDID用来识别玩家用户,并对用户活动进行跟踪。

UDID 在 iOS5.0 的时候已经被抛弃使用了.

代码实现 : [[UIDevice cuurrent] uniqueIdenfier]

在很早之前,苹果宣称如果第三方应用开发者继续分享或者使用iPhone、Mac、AppleWatch的UDID的话,那么他们的应用将会禁止上架。

为什么苹果要在应用中禁止使用呢?那是因为隐私问题。比如我开发了5款App,很多用户都下载了这5款App并使用。

如果我能轻易的获取这些用户的UDID,其实我能拼凑出用户的很多信息。由于UDID本身的隐私属性,之前常常用来做第三方统计和其他的目的。

当然现在也有人使用MAC地址来识别设备,因为MAC地址也唯一的识别了一台设备并且不会被修改,不知道以后苹果会对此如何操作。

UDID是放弃在代码中获取,目前主要用于配置真机调试证书.

因为隐私的问题,苹果就推出了一个identifierForVendor的属性获取UDID,但获取的值只是个替代品.详细往下看

以下是苹果对于禁用UDID的声明:

UDID放弃使用.png

关于IDFV的理解 :

目前取代获取UDID的方式:

[[[UIDevice currentDevice] identifierForVendor] UUIDString];

关于identifierForVendor . 苹果官方文档有说明.

Normally, the vendor is determined by data provided by the App Store.

If the app was not installed from the app store (such as enterprise apps and apps still in development), then a vendor identifier is calculated based on the app’s bundle ID.

The bundle ID is assumed to be in reverse-DNS format.

大概的意思是:

通常, vendor的值根据已经上架到App Store的app决定.

但如果app并不是从AppStore中下载安装,比如说是依然处于开发阶段.

那么vendor这个值会根据app's bundle ID 来计算.

bundle ID是反向DNS格式。如:com.example.app

参考网上一些博客讲解理解:

此时打印出的字符串UUIDString这个东西不是真正的UDID,而是一个有一点像的替代品。如同我上面所说,UDID是只和iOS设备有关的,而这个identifierForVendor是应用和设备两者都有关的:

A应用安装到张三这台设备上,就会产生一个identifierForVendor(比如是:1234);

A应用安装到李四这台设备上,就会产生另一个identifierForVendor(比如是:5678);

B应用安装到张三这台设备上,又是一个全新的identifierForVendor(比如是:9999),

B应用安装到李四这台设备上,还是一个全新的identifierForVendor(比如是:7777)。

但是无论A应用安装卸载多少次,产生的是都是1234. 所以我们知道,这个identifierForVendor是一种应用加设备绑定产生的标识符,相当于是:Z(identifierForVendor) = X(某应用) + Y(某设备)。

当然,和真正的UDID的区别是显而易见的:也就是说App的开发者没有办法去区分某一台设备了,而是只能识别某个应用在某台设备上。

Vindor标示符,适用于对内:例如分析用户在应用内的行为等。

是给Vendor标识用户用的,每个设备在所属同一个Vender的应用里,都有相同的值。其中的Vender是指应用提供商,但准确点说,是通过BundleID的DNS反转的前两部分进行匹配,如果相同就是同一个Vender,例如对于com.somecompany.appone,com.somecompany.apptwo

这两个BundleID来说,就属于同一个Vender,共享同一个idfv的值。和idfa不同的是,idfv的值是一定能取到的,所以非常适合于作为内部用户行为分析的主id,来标识用户,替代OpenUDID。

注意:如果用户将属于此Vender的所有App卸载,则idfv的值会被重置,即再重装此Vender的App,idfv的值和之前不同。

关于IDFA的理解 :

代码实现:

#import

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

在今年iOS10推出后,苹果推出了“限制广告追踪”功能,设置的路径和iOS9一致。

不过经过实际的测试,在iOS10之前,即使用户打开这个功能,商家一样可以获取IDFA,只不过与之前的不一样了,每次切换这个开关与点击“还原广告标识符”的效果一样。

而iOS10就不一样了,当用户打开这个功能后,商家只能获取到一连串无意义的0

idfa.jpg

总结 :

目前在项目中使用的比较多的也就数IDFV了,其他的几个基本都被苹果淘汰了.

同时关于UUID,因为保证对在同一时空中的所有机器都是唯一的,所以在程序安装的时候生成唯一的UUID并且保存在keychain中,以这个唯一的UUID作为唯一标识符,就可以用于判断唯一设备.变相的作为UDID的用法

最后 : 参考别人的GitHub代码IDFA

ios如何看idfv_iOS-理解 : UDID、UUID、IDFA、IDFV相关推荐

  1. ios如何看idfv_ios获取手机状态 idfa   idfv   网络类型   分辨率   获取运营商

    标签:ios //idfa [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]; //idfv [[[UI ...

  2. ios如何看idfv_iOS获取各种数据方法整理以及IDFA与IDFV使用环境

    APP版本号:NSString *AppVersion  =  [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleSho ...

  3. IOS - UDID IDFA IDFV MAC keychain

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

  4. swift获取openuuid_iOS获取设备唯一标识:UDID、IDFA、IDFV、OpenIDFA、SimulateIDFA等.

    1. UDID UDID全称是Unique Device Identifier,顾名思义,它就是苹果iOS设备的唯一标识码,它由40个字符的字母和数字组成.在很多需要限制一台设备一个张红的应用中经常会 ...

  5. iOS软件开发架构理解

    iOS软件开发架构理解 这个东西是硬伤,框架?自带的mvc? 自带的UIViewController UIView UINavigationController 这些算不算?当然算的,cocoa框架嘛 ...

  6. iOS 仿看了吗应用、指南针测网速等常用工具、自定义弹出视图框架、图片裁剪、内容扩展等源码...

    iOS精选源码 扩展内容的cell - folding-cell 一个近乎完整的可识别中国身份证信息的Demo 可自动快速... JPImageresizerView 仿微信的图片裁剪 带年月和至今以 ...

  7. 深度学习核心技术精讲100篇(四十)-微信“看一看“内容理解与推荐,背后深层次的技术知多少?

    前言 相信对于不少人而言微信已经成为获取资讯的主要场景.与此同时,由于微信用户群体的庞大,也吸引了大量的内容生产者在微信公众平台创造内容,以获取用户关注.点赞.收藏等.微信内的内容推荐产品:看一看应运 ...

  8. 万字长文读懂微信“看一看”内容理解与推荐

    内容理解与推荐 相信对于不少人而言微信已经成为获取资讯的主要场景.与此同时,由于微信用户群体的庞大,也吸引了大量的内容生产者在微信公众平台创造内容,以获取用户关注.点赞.收藏等.微信内的内容推荐产品: ...

  9. iOS 开发:彻底理解 iOS 内存管理(MRC 篇)

    本文首发于我的个人博客:「程序员充电站」 文章链接:「传送门」 本文更新时间:2021年08月17日17:11:59 本文是 「iOS 开发:彻底理解 iOS 内存管理」系列的「MRC 篇」. 用来对 ...

最新文章

  1. 9 大主题卷积神经网络(CNN)的 PyTorch 实现
  2. 操作系统(十二)线程的实现方式、多线程模型
  3. SQL Stored Procedure Generator
  4. NOIP2003提高组
  5. 熟练掌握git撤销命令
  6. python3识别条码_python3转换code128条形码的方法
  7. 自动驾驶,不要再杀人了
  8. 95-33-020-ChannelHandler-ChannelHandler简介
  9. 微信视频不能连接到服务器,微信无法连接到服务器
  10. java语言编译_java在线编译-编译,java
  11. jquery各种事件使用方法总结(from:天宇之游)
  12. updataxml报错注入
  13. 实现putchar put_str put_int
  14. SQL server 2005下载地址
  15. 民情二维码:居民诉求一个码收集
  16. HaaS EDU场景式应用学习 - 复古八音盒
  17. [知乎]这可能是最全面的龙芯3A3000处理器评测
  18. 读书笔记:我们为什么上班
  19. B06 - 999、大数据组件学习③ - Hive
  20. 翡翠手链华丽多彩而不庸俗

热门文章

  1. 压缩打包介绍 gip压缩工具 bzip压缩工具 xz压缩工具
  2. .url格式的文件用什么姿势打开
  3. SRS之SrsHlsCache::reap_segment详解
  4. 计算机科学的动物比喻,描写动物的比喻句
  5. 服装机械加工如何使用ERP管理系统?
  6. 机器人工作原理的超详细解析,生动、形象!
  7. open3d读取可视化npy文件
  8. 给三十而立的大龄程序员的一个建议:找三五合得来的同事约个饭,谈谈诗和远方吧。
  9. [收藏] 深入浅出存储性能评估方法论
  10. 复现Detectron2-blendmask之冰墩墩雪容融自定义数据集语义分割