热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS开发中常用的设备标识符(IDFA、IDFV、MAC地址、UDID、openUDID)及其应用场景

在iOS开发过程中,了解并合理使用各种设备标识符对于数据统计和用户分析至关重要。本文详细介绍了几种常用的设备标识符及其应用场景:IDFA(广告标识符)用于广告追踪和归因;IDFV(供应商标识符)适用于同一应用或同一开发者旗下的应用内识别用户;MAC地址和UDID(唯一设备标识符)虽然已被弃用,但在某些历史场景下仍有参考价值;而openUDID作为一种开源解决方案,提供了一种替代UDID的方法。这些标识符各有特点,开发者应根据具体需求选择合适的标识符。


最近做数据统计,详细了解了各个id的意义,做了如下整理:


IDFA:广告标示符(IDFA-identifierForIdentifier)

[objc] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. "white-space:pre">    NSString *IDFA = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];  

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

[objc] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. "white-space:pre">        //1532FF70-7792-4A1B-9D75-8F67A7672649  

//1532FF70-7792-4A1B-9D75-8F67A7672649

ios6新增方法可以得到NSUUID实例。

自己理解:同一手机的不同app获得的的值相同,一般用于app推广,

用户可通过以下步骤进行重置

1、设置-->隐私---->广告-->还原或限制

2、设置--->设置--->通用--->还原--->还原位置与隐私

IDFV:Vindor标示符
(IDFV-identifierForVendor)

[objc] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. "white-space:pre">    NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];  

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

该方法返回的是一个NSUUID对象。



个人理解:该值取CFBundleIndentifier的头两部分,所以一般同一公司(开发者)发布的app
一般CFBundleIndentifier设置比较类似

如:com.autoradio.MyRadio,com.autoradio.MyRadioYB获取的都是com.autoradio

UDID

在iOS5及之后的版本中废弃

OpenUDID
业内通用,但非官方提供 gitHub可进行下载

由第一个使用openudid的app生成,并存放到系统粘贴版(具体也不理解什么原理),之后安装的其他app去粘贴版取,若所有使用openudid的app都删除了,会被重置

但据说ios7之后苹果做了相关限制,还没做详细了解,在ios7之后意义不大


推荐阅读
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 在 Android 开发中,通过 Intent 启动 Activity 或 Service 时,可以使用 putExtra 方法传递数据。接收方可以通过 getIntent().getExtras() 获取这些数据。本文将介绍如何使用 RoboGuice 框架简化这一过程,特别是 @InjectExtra 注解的使用。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
  • 本文详细探讨了Android Activity中View的绘制流程和动画机制,包括Activity的生命周期、View的测量、布局和绘制过程以及动画对View的影响。通过实验验证,澄清了一些常见的误解,并提供了代码示例和执行结果。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • InmyapplicationIhaveQGraphicsScenewithpixmapaddedandallisviewedinQGraphicsViewwithsc ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
  • 本文介绍了如何通过在数据库表中增加一个字段来记录文章的访问次数,并提供了一个示例方法用于更新该字段值。 ... [详细]
author-avatar
怕疼不怕死
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有