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等或自定义)