首页 > 其他分享 >最全详解Android设备UDID还是唯一ID?

最全详解Android设备UDID还是唯一ID?

时间:2023-09-20 13:09:09浏览次数:43  
标签:UDID App IMEI Android 标识符 ID 设备


这篇文章主要介绍了Android设备UDID还是唯一ID?我觉得挺不错的,现在分享给大家,也给大家做个参考。

我想为我的 Android应用程序生成android设备唯一ID,以根据用户设备udid创建收藏夹. 所有设备都有唯一的ID. import android.provider.Settings.Secure; private String android_id = Secure.getString(getContext().getContentResolver(),,下方主要介绍关于Android设备UDID还是唯一ID?的全文内容,希望对你有所帮助。

一、ID 体系:你只是一串代码

想要了解 OAID,我们首先需要明白 ID 体系:想要追踪一个用户就必须先找到用户,在这个过程中,标识符(ID)就像我们的另一张身份证,它们就代表了数字化之后的你和我。

不同 App 可能通过某些唯一标识符对你进行强制跟踪,广告平台则会通过这个唯一标识符对你进行用户画像描绘,进而共享给相关 App 及其后台,一旦「你」打开了其中的某个 App,那么你就会被识别到——你点了什么、看过什么、可能需要什么,它们比你自己都清楚。

而在智能设备的 ID 体系中存在许许多多不同种类的标识符,下面是一小部分 Android 设备内的 ID,它们可能会用于不同方面的跟踪或标识:

1.IMEI

IMEI 应该是大家最熟悉的一种 ID了,它是手机的身份证,也是运营商识别入网设备信息的代码,是一种不可重置的永久标识符,作用域为设备。

在广告跟踪方面,由于 iOS 的权限管控,iOS 上的第三方 App 并不能通过 IMEI 跟踪用户,但目前 Android 平台中绝大部分 App(尤其是在国内)都通过 IMEI 来追踪用户,开篇所举的例子在 Android 平台上大多也通过 IMEI 跟踪来实现。

与 IMEI 类似的还有一个叫做 IMSI 的标识符,但它主要用于 SIM 卡的身份标识,这里不做展开。

2.Android ID(SSAID)

顾名思义,Android ID 是 Android 设备里不依赖于硬件的一种「半永久标识符」,在系统生命周期内不会改变,但系统重置或刷机后会发生变化,其作用域为一组有关联的应用。

Android 开发者文档和谷歌开发者中文博客对 Android 8.0 后的隐私性和 SSAID 变化做出了说明:

从图中不难看出,在 Android 8.0 以后,签名不同的 App 所获取的 Android ID(SSAID)是不一样的,但同一个开发者可以根据自己的数字签名,将所开发的不同 App 进行关联。

3.Device ID

在 Android 平台,Device ID 是一种统称,与硬件相关的 ID 都可以称之为 Device ID,一般是一种不可重置的永久标识符,作用域为设备。

根据设备、厂家或者 App 调用需求的不同,读取 Device ID 时可能会返回 IMEI 或其他硬件编码,但也有可能因为设备中没有相关硬件而无法获取 Device ID 或返回无效值;与之形成对应的,iOS 设备中也有类似的永久标识符叫做 UDID,但在 iOS 6 之后,苹果已经不允许需要获取 UDID 的 App 上架 App Store 以防止这种不可重置的 ID 被用于追踪或滥用,取而代之的是 IDFA 标识符,即 iOS 设备广告标识符。

另外还有一种叫做 openUDID 的设备唯一标识符,它在 iOS 和 Android 系统内都可以使用,但由于不是系统官方提供的 ID 体系,且依赖于第三方 App 生成,所以应用并不广泛,而随着系统迭代升级,openUDID 也逐渐被边缘化甚至被废弃。

4.UUID、GUID

UUID 也叫做实例 ID,这两个 ID 可以说是在计算机体系内的通用标识符(详细了解 UUID 和 GUID 可以阅读 维基百科 相关内容)。

根据所面向对象的不同,其意义也有微小差别。如果说前面三个 ID 可以用来识别设备,那么这两个 ID 在 Android 系统中的作用主要是识别 App 进程、元素或数据。

因为它们的作用域仅仅是单个应用内,如果用户卸载了该 App 并重新安装,那么 UUID 也会发生变化。不过 App 开发者可以通过存储 UUID 或与其他 ID、用户信息进行组合、绑定、计算等方式,实现 UUID 标识符的「准永久化」。

根据 Android 开发者指南:

标识运行在设备上的应用实例最简单明了的方法就是使用实例

ID,在大多数非广告用例中,这是建议的解决方案。只有进行了针对性配置的应用实例才能访问该标识符,并且标识符重置起来(相对)容易,因为它只存在于应用的安装期。

因此,与无法重置的设备级硬件 ID 相比,实例 ID 具有更好的隐私权属性。

5.AAID

AAID 与 IDFA 作用相同——IDFA 是 iOS 平台内的广告跟踪 ID,AAID 则用于 Android 平台。

它们都是一种非永久、可重置的标识符,专门提供给 App 以进行广告行为,用户随时可以重置该类 ID,或通过系统设置关闭个性化广告跟踪。但 AAID 依托于 Google 服务框架,因此如果手机没有内置该框架、或框架不完整、或无法连接到相关服务,这些情况都有可能导致 AAID 不可用。

除了以上这些 ID 标识符以外,某些硬件 ID(例如 MAC 地址)也可能会被用于追踪。

二、国内 Android 的广告追踪之道

这么多 ID 标识符,每一个都各司其职。而理论上来说,只有 AAID 和 IDFA 是真正用于广告行为的。

但现实状况显然不是这样。

一方面,Android 平台的不少 App 普遍存在违反 Android 开发规范、绕过 Google Play 审查,通过滥用 ID 来追踪用户,以此达到为广告流量、营销分析等商业利益服务的目的。

另一方面,由于 AAID 依托于 Google 服务框架,但在国内使用 Google 服务并不太可行,或者大部分国行手机内置的 Google 服务不完整,App 开发者需要寻找另一个方式去标识用户。

UUID、GUID 作用域太小,不适合广告跟踪;Android ID 可以通过某些方式被改变或因为 bug 导致不可用,第三方 App 无保证可用性;MAC 地址虽然精准,但在Android 6.0(API 23)到 Android 9(API 28)中,系统限制了第三方 API 获取MAC 地址;再加上早些时候,大部分「非玩机用户」对此类功能并没有太多概念,第三方 App 为了能以更加精准持久的方式来跟踪用户,将 IMEI 变成了用于广告跟踪的首选 ID(在 Google Play 帮助中心,获取永久标识符是一种有条件的、退而求其次的广告投放方法,所以在此之前这种方式也不算完全违规)。

这也是我们看到很多 App 提示必须获取「电话」权限才能运行的原因——因为获取 IMEI 必须获得「电话」权限,可是由此也带来了一些隐私问题:允许「电话」权限可能导致 App 读取到很多种其他信息,就像我需要你给我身份证来查询身份证号,但与此同时你的姓名、住址、生日也暴露给我了。

我们可以在 这个网站 查询到部分 App 所需要的权限、资源以及它可能会发送的隐私信息。例如微信,在网站中收录的 6.7.3 版本中,微信获取了如下权限,但并没有检测到发送以下隐私数据。

随着时代发展,用户逐渐认识到手机 App 疯狂获取权限的行为有可能会侵犯隐私,加之近几年 Android 系统的权限和隐私管理逐渐收紧,Android 10(API 29)终于对第三方 App 获取不可重置永久设备标识符(包括 IMEI)的行为做出了 限制。

具体到用户层面,在 Android 10 之后应用即便能够获取到「电话」权限,系统返回给应用的 IMEI 信息值也为空(你可以通过 My IMEI 这款应用进行测试)。

我想为我的 Android应用程序生成androID设备唯一ID,以根据用户设备udID创建收藏夹.

最全详解Android设备UDID还是唯一ID?_Android

 

解决方法

所有设备都有唯一的ID.

1.import androID.provIDer.Settings.Secure;
2. private String androID_ID = Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID);

总结

收集整理的Android设备UDID还是唯一ID?全部内容,希望文章能够帮你解决Android设备UDID还是唯一ID?所遇到的程序开发问题


标签:UDID,App,IMEI,Android,标识符,ID,设备
From: https://blog.51cto.com/u_15344421/7536245

相关文章

  • iOS开发证书、bundle ID、App ID、描述文件、p12文件,及企业证书打包发布详述
    引言  此操作手册用于提供客户进行企业发布299美金的账户发布非AppStore的app程序的CSR证书,distribution证书以及p12证书导出用。2.iOS开发证书,描述文件,bundleID的关系苹果为了控制应用的开发与发布流程,制定了一套非常复杂的机制。这里面的关键词有:个人开发者账号,企业开发者账......
  • 2022最新手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)教程
    Android篇 1IMEI和MEID(1)IMEI(InternationalMobileEquipmentIdentity)是国际移动设备身份码的缩写,国际移动装备辨识码,只有Android手机才获取的到,是由15位数字组成的"电子串号",比如像这样359881030314356,它与每台移动电话机一一对应,而且该码是全世界唯一的。它是GSM设备返......
  • 2022Android设备唯一标识(AndroidID,OAID等 )
    一、ID体系:你只是一串代码想要了解OAID,我们首先需要明白ID体系:想要追踪一个用户就必须先找到用户,在这个过程中,标识符(ID)就像我们的另一张身份证,它们就代表了数字化之后的你和我。不同App可能通过某些唯一标识符对你进行强制跟踪,广告平台则会通过这个唯一标识符对你进行用户画......
  • 最新苹果开发者账号添加设备UDID
    苹果开发时,只有在开发者后台添加过UDID的设备,其信息才能包含在.mobileprovision配置文件中,才能配合证书进行真机调试。开发者后台-Devices管理页面一、单个添加UDID 点击添加按钮⊕,在注册单个设备区域填写设备信息并依次完成Continue→Register→Done即可。添加设备页面.png......
  • pyside 信号(Signal)和槽(Slot)以及装饰器 Property和setter
    1.Property的使用classBackend(QObject):def__init__(self)->None:super().__init__()self._hello='hello_world'@Property(str)defhello(self):returnself._helloqml:text:backend.hello2.Slot函数方法@Slo......
  • Tangram Tutorial 1:映射小鼠皮层 MOp 的 snRNAseq 数据到 Slide-seq2 数据
    写在前面学习一个软件最好的方法就是啃它的官方文档。本着自己学习、分享他人的态度,分享官方文档的中文教程。软件可能随时更新,建议配合官方文档一起阅读。推荐先按顺序阅读往期内容:文献篇:1.文献阅读:使用Tangram进行空间解析单细胞转录组的深度学习和比对:::block-1目......
  • 没有Android开发的工作经验,该如何求职?
    前言找工作是每一个新毕业生都要面临的难题,尤其是在如今竞争激烈的社会环境下。无工作经验的应届生想要获得心仪Offer无疑更加困难。但是,没有经验并不代表没有机会。推推教你做好以下几点准备,依然可以在求职中脱颖而出!第一,要明确自己的专业方向和职业规划。根据自己的专业知识、技......
  • 金九银十就业季,Android工程师如何在面试中提升印象分?
    又到了金九银十的就业季,在面试过程中提升印象分是非常重要的。想要在面试中脱颖而出吗?下面是几个建议,小编希望大家可以借鉴一下。一、提前做足准备在参加面试之前,你应该做足准备。这包括了解公司的背景、业务模式、文化和价值观,以及与招聘的职位相关的技能和职责。刷刷该公司历年的......
  • Android 10 设置kernel log level
    有时候kernellog内容过多/过少影响我们分析问题,因此需要对kernellog进行设置。查看平台默认kernelloglevel$cat/proc/sys/kernel/printk6617kernlelog级别为6617关闭所有kernellog$echo"0617">proc/sys/kernel/printk //往printk文件写入“......
  • Android Launcher apk 授信安装
    对安装的apk进行校验,除了系统应用市场中下载的,其它渠道的apk都进行安装拦截,并且弹框提示。首先需要把验证的证书保存在数据库本地,后面需要用到然后注册系统广播,用于接收apk安装时的监听,这个广播由系统发出新装时的action‘android.intent.action.PACKAGE_ADDED替换时的actionan......