人人都是产品经理数据埋点:用户唯一标识


用户唯一标识 , 是用户唯一的身份ID , 相同的身份ID , 就会被当做是相同的一个用户 。

人人都是产品经理数据埋点:用户唯一标识
本文插图

01 为什么要建设用户唯一标识
如何区分某个用户就是他这个用户 , 而不是另一个用户 , 在数据埋点中 , 是一个非常重要的事情 。 因为如果做不到用户的唯一识别 , 那凡是涉及到用户的数据都将是错的(比如用户量、新增用户数、活跃用户数等等) 。 所以建设用户唯一标识 , 尤为重要 。
02 基本概念
设计埋点字段的时候 , 有两个字段是一定要包括的 , 即设备ID和用户ID 。 这两个字段应该纳入通用字段 , 每个埋点的事件都必须要集成收集 。
(1)设备ID
使用相应的算法 , 生成一个设备ID , 以唯一识别用户的终端设备 。 不同终端的设备ID , 其生成算法规则不一样 , 以下列举不同终端的设备ID的生成规则:
AndroidApp
安卓系统历经多次升级 , 对权限控制越来越严格 , 唯一识别手机的方法也在发生变化 。 下面整理一下安卓系统适合做设备唯一标识符的几个标识符 , 以及其特性:

人人都是产品经理数据埋点:用户唯一标识
本文插图

从表格中看出 , IMEI是最适合做设备唯一标识的 , 奈何获取IMEI需要授予权限且Android 10以后不再开放IMEI的权限 。 综合起来 , 安卓系统中 , 应该按照IMEI ->OAID -> ANDROID_ID的顺序生成设备ID 。 即先获取IMEI号 , 获取不到IMEI时获取OAID , 获取不到OAID时 , 再获取ANDROID_ID , 然后使用相关算法生成设备ID 。
IOS App
苹果系统 , 可用于识别唯一设备的标识不多 , 如下图 。 综合起来 , 苹果系统生成设备ID的标识符顺序应该是IDFA -> IDFV ->UDID , 即先获取IDFA , 获取不到在获取IDFV , 获取不到IDFV时 , 再获取UDID , 然后使用相关算法生成一个设备ID 。

人人都是产品经理数据埋点:用户唯一标识
本文插图

Web网站
Web网站 , 使用cookie_id作为设备ID , 并存储在浏览器的cookie中 。
微信小程序
通常做法使用openid作为设备ID , 当然也可以自己生产一个ID , 作为设备ID 。 如果用过openid作为设备ID , 需要注意微信小程序的冷启动问题(获取 openid 是一个异步的操作 , 所以会导致数据上报的时候 , 可能还没获取到openid , 这就是导致设备ID为空) 。
2)用户ID
用户ID , 即用户在业务产品注册的用户账号 。
收集到设备ID和用户ID后 , 就要想办法将设备ID和用户ID关联起来 , 也即用户唯一标识建模 , 详见下文 。
03 用户唯一标识建设
设计一个字段 , 比如就叫distinct_id(设备ID命名为device_id , 用户ID命名为user_id)这个字段用于识别唯一用户 。 凡是统计用户相关的数据时 , 都以distinct_id作为用户的唯一区别标识 。 下面 , 以具体案例进行阐述 。

人人都是产品经理数据埋点:用户唯一标识
本文插图

步骤说明:小明在一部手机上启动了app 。 该手机的device_id为x1 , 此时生成一个dsitinct_id为d1;小明在这个手机上用账号u1进行登录 。 此时device_id为x1 , user_id为u1 , dsitinct_id为d1;小明继续在这手机上使用app 。 此时device_id为x1 , user_id为u1 , dsitinct_id为d1;小明退出自己的账号 , 继续使用app 。 此时仍然device_id为x1 , user_id为u1 , dsitinct_id为d1;小明把手机给了小花 , 小花用自己的账号u2登录app 。 此时u2去关联x1 , 因为x1已经与u1关联 , 故关联失败 。 所以重新生成一个distinct_id为d2来标识此用户(u2);小花继续使用app 。 此时device_id为x1 , user_id为u2 , dsitinct_id为d2;小明换了部新手机 , 使用app 。 此时device_id为一个新的x2 , 后台生成一个新的dsitinct_id为d3;小明在新手机上 , 使用账号u1登录了app 。 此时u1去关联x2 , 因为x2之前没有与账号关联过 , 所以关联成功 , 但是u1已经有一个dsitinct_id为d1 , 所以此时的dsitinct_id仍然为d1;小明继续在新手机上使用app 。 此时device_id为x2 , user_id为u1 , dsitinct_id为d1 。


推荐阅读