Android用户设备唯一标识

方案

方案1:UUID + SharePreference(存取)

APP首次使用时,创建UUID,并保存到SharePreference中。
以后再次使用时,直接从SharePreference取出来即可;
优点:数据唯一、不需要权限;
缺点:会随APP一起删除,即:重新安装APP,DeviceId值会改变(新UUID);

方案2:UUID + SD卡(存取)

APP首次使用时,创建UUID,并保存到SD卡中。
以后再次使用时,直接从SD卡取出来即可;
很多APP就是这么做的;
 优点:数据唯一、不随APP一起删除;
缺点:需要SD卡读写权限;防不住用户手动删除SD卡的文件;

方案3:imei + android_id + serial + 硬件uuid(自生成) 推荐

不依赖随机的UUID,咱们根据硬件标识来创建唯一的数据;
 我们可以将多个可获得的硬件标识拼接起来(尽可能不依赖权限),最大程度上降低重复性。
以imei、android_id、serial为例,如果能取到值,每个数据几乎可以代表唯一。
如果这些数据都能获取到,拼起来的数据重复性降到极低(UUID也存在重复性,重复性极低而已)最后统一md5加密成32位字符。
AndroidId : 如:df176fbb152ddce,无需权限,极个别设备获取不到数据或得到错误数据,

serial:如:LKX7N18328000931,无需权限,极个别设备获取不到数据;

IMEI : 如:23b12e30ec8a2f17,需要权限;

Mac: 如:6e:a5:....需要权限,高版本手机获得数据均为 02:00.....(不可使用)

Build.BOARD  如:BLA  主板名称,无需权限,同型号设备相同

Build.BRAND  如:HUAWEI  厂商名称,无需权限,同型号设备相同

Build.HARDWARE  如:kirin970  硬件名称,无需权限,同型号设备相同

Build......更多硬件信息,略

方案4、借助其他id与后台建议映射表关系

OAID:OAID字段是由中国信通院联合华为、小米、OPPO、VIVO等厂商共同推出的设备识别字段,具有一定的权威性,可满足用户行为统计的使用场景

GAID:Google 广告id 海外设备才有,高版本设备可关闭。

adjustID:第三方adjust id

账号id(bid):登录账号id(google、Facebook、微信、qq等或自定义)

android 唯一标识 最佳实践 安卓设备唯一性_android