漫谈唯一设备ID,android开发工程师

本文详细讨论了Android平台下获取设备唯一标识的难题,包括IMEI、序列号、MAC地址和ANDROID_ID等API的限制。随着Android版本的升级,获取设备ID的难度增加,对统计需求、业务需求和风控需求产生影响。同时,文章提出了设备ID的构造策略,包括组合设备ID和采用容错方案以提高唯一性和稳定性。
摘要由CSDN通过智能技术生成

设备ID,简单来说就是一串符号(或者数字),映射现实中硬件设备。
如果这些符号和设备是一一对应的,可称之为“唯一设备ID(Unique Device Identifier)”

不幸的是,对于Android平台而言,没有稳定的API可以让开发者获取到这样的设备ID。
开发者通常会遇到这样的困境:
随着项目的演进, 越来越多的地方需要用到设备ID;
然而随着Android版本的升级,获取设备ID却越来越难了。
加上Android平台碎片化的问题,获取设备ID之路,可以说是步履维艰。

二、设备ID的作用

关于设备ID的作用,大概可以分为下面几点:

  • 统计需求

统计需求是设备ID最常见的用途,包括DAU, MAU的统计,行为统计,广告激活的统计等。

  • 业务需求

设备ID通常也用于业务中。
比如结合行为统计做用户画像,以为用户提供个性化的服务,大家感受比较明显的就是新闻类和电商类的APP了。
这类操作,有利有弊,仁者见仁智者见智。
又如,定向推送,不一定是广告推送,错误修复,内测推送等也会用到设备ID。
还有是一些和特定业务结合的用途,比如构造分布式ID等。

  • 风控需求

设备ID还可用于防刷单,反作弊等。
当然,风控需求仅靠设备ID是无法完成的,通常需要建立一套反作弊系统。
关于这方面的内容,难以一言以蔽之,这里我们不多作展开。

三、获取设备ID的API

获取设备标识的API屈指可数,而且都或多或少有一些问题。
常规的API有以下这些:

IMEI

IMEI本该最理想的设备ID,具备唯一性,恢复出厂设置不会变化(真正的设备相关)。
然而,获取IMEI需要 READ_PHONE_STATE 权限,估计大家也知道这个权限有多麻烦了。
尤其是Android 6.0以后, 这类权限要动态申请,很多用户可能会选择拒绝授权。
我们看到,有的APP不授权这个权限就无法使用, 这可能会降低用户对APP的好感度。
而且,Android 10.0 将彻底禁止第三方应用获取设备的IMEI, 即使申请了 READ_PHONE_STATE 权限。
所以,如果是新APP,不建议用IMEI作为设备标识;
如果已经用IMEI作为标识,要赶紧做兼容工作了,尤其是做新设备标识和IMEI的映射。

设备序列号

通过android.o

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值