选取合适的用户标识对于提高用户行为分析的准确性有非常大的影响,也是我们进行数据埋点时需要最优先考虑的问题。因此,我们在进行任何数据接入之前,都应当先确定如何来标识用户。
很多同学看到这可能会有点纳闷,如何标识用户?难道不是通过用户的账号ID吗?
你说得没错,不过用户账号是针对于有账号体系的产品,而对于那些没有账号体系,例如官网、活动落地页,或者需要分析游客行为这样的场景下,我们怎么才能对不同的用户进行标识呢?
我们很容易发现,任何用户在获取线上服务时,都需要通过设备。
所以,我们很自然地就会想到使用设备的一些信息来近似作为用户标识。
那么,设备的哪些信息可以作为用户标识呢?
一、如何获取移动端设备唯一标识
移动端主要的设备就是手机,我们这里主要讲如何获得Android和iOS的设备ID。
1. 如何获取Android设备的唯一标识
首先我们来看下Android的设备信息。
可以看到,上述Android的设备信息中,UDID是最靠谱的,但是Android ID是最容易获取到的。
所以,一般市场上的策略,会使用 UUID。
但是App 卸载重装 UUID 会变,为了保证设备 ID 不变,可以把UUID写入.so的文件,这样即使重装APP也不会改变。
还有一种策略是使用 Android Id 作为设备 ID,虽然刷机、重装系统或恢复出厂设置会改变,但是一般用户不会这么操作。
2. 如何获取iOS设备的唯一标识
iOS设备也有IMEI、MEID、MAC地址、UDID、UUID等设备信息,前几个现在都禁止获取了,而UUID是会变化的。
iOS也有一些独有的设备信息。
所以总结起来,iOS好像没有什么靠谱的标记用户的方法,别急,牛逼的程序员们总是能想出各种骚操作。
现在iOS一般标记用户的方式是获取每台设备的UUID,将其写入keychain中进行固化,这样即使用户重装APP,保存在keychain中的UUID也不会改变了。
二、如何获取web端和微信小程序的设备唯一标识
说完移动设备的,我们再来看一下如何获取web端和微信小程序的设备唯一标识。
web端其实也分为两种访问方式,PC端浏览器和移动端浏览器,但其实都是一样的。
web端默认情况下使用 cookie_id,当用户首次访问网站时,我们会自动生成一串cookie数据,然后存贮在浏览器的 cookie 中。
cookie的生成规则可以是五段不同含义的字段拼接而成来保证唯一性,其中包括两段时间戳,一段屏幕宽高,一段随机数,一段 UA 值。
而微信小程序端,默认情况下使用 UUID,但是删除小程序,UUID 会变。
为了保证设备 ID 不变,建议获取并使用 openid。
如果选择使用 openid 的话,要注意将获取到openid之前用户的操作暂存。
因为获取 openid 是一个异步的操作,而冷启动事件等会先发生,这时候这个冷启动事件还没有获取到openid。
所以我们需要把先发生的操作暂存起来,等获取到 openid 后拼接好再发送数据。
埋点整理
一个埋点需要传输大量的用户参数(用户数据/行为数据/场景数据等),那么为什么要传输这些数据?都要传输那些数据?则需要我们产品来定义。
定义:埋点的目的是为了尽可能完整的收集可以体现用户使用场景和真实需求的行为数据。
方法:4W1H(who\when\where\what\how)—方法来自最近学习的数据课程。
某个用户在某个时间+某个地点通过某种方式完成了某个具体的事情。
A:who
目的:定位是谁完成了这个行为。用户ID应该唯一,可将行为与用户关联的指标。
常用数据:用户id(平台生成的唯一ID)、手机号、身份证、微信识别码。
B:where
目的:定位用户在什么地方完成该行为。
常用数据:IP(WEB 、手机)、GPS(手机)、自主填写位置(在乎用户希望在哪里发生这件行为,如买房/装修/当地美团)。
C:when
目的:定位用户什么时间完成该行为。
常用数据:时间戳、当地时间。
D:how
目的:定位用户发生行为时的周边环境/手段/设备等。尽可能还原用户所处环境即可。
常用数据:操作系统、设备版本、设备型号、网络环境(Wi-Fi、4g)、产品版本(用户使用的产品版本)、浏览器、上级页面。
E:what
目的:定位用户当前做了什么行为,行为记录的越具体越好。
常用数据:根据业务功能需要进行设计,常用数据如下。
交易:商品ID、商品类型、购买数量、付款方式、付款金额。
搜索:关键词、搜索类型、是否为当时热词。
内容:内容ID、内容类型、浏览数、列表位置、是否喜欢。
Tips:以上的内容为定义数据埋点需要传输的参数的方法(这个方法能够很大程度的包含埋点需要的参数内容,减少遗漏)。和开发确认参数后一定要确认这些数据是以什么更新频次传至后台。
事件发生时上报:用户产生某个行为,触发埋点后,将以上数据传输至后台;
固定时机上报:每天、每小时、数据量达到某个数值(如10MB)、有x条数据等上报一次;
这个频次一定要确认,因为对数据的及时性要求不同,数据更新频率需要根据需求设置。
文档输出
文档输出的主要目的是为了和开发对某个数据的采集有一致的理解,同时不要有遗漏数据,最好记录是哪个版本有这些数据需求,以便于维护和查找。
文档必备的要素:
- 事件名称:埋点的事件名称,如文章阅读/文章评论/关注;
- 事件定义:说明事件是什么,如何触发。如用户点击社区—内容则上报该事件;
- 包含属性:用户进行了该行为,上报事件中需要传输那些参数。如用户ID、时间、应用版本、网络环境、手机型号、IP、内容ID、内容类型、第几篇浏览;如某些属性在所有事件中都需要上传则可以整理公共属性进行管理;
- 属性定义:说明属性的定义,如用户地址为用户主动上传的地址,如没有则用用户IP代替;
- 属性值类型:说明传输至的类型,字符串、数值、bool;
- 开发名称:对应的开发变量名,可以由开发进行补充。如userID、contentID;
- 当前状态:说明当前该变量的状态。如待开发、开发中、验收中、已上线、已下线;
- 上线版本:说明该内容在那个版本进行上线。如2.3.1;
- 备注:备注中可记录该参数的变动情况和常见值等内容。
案例:如当前根据数据需求确认数据指标为内容浏览量,则需要统计用户的每一次内容浏览行为,根据上述的埋点数据整理方法整理的需收集的内容如下:
- Who:用户ID,平台的用户唯一编码;
- Where:IP(根据IP解析国家、城市、区);
- When:时间,事件触发时间;
- How:设备型号、网络环境、操作系统、使用版本;
- What:文章ID、文章类型、上级页面、文章浏览数、用户浏览数。
整理为Excel大致如下:
埋点验收
埋点验收的目的:如果埋点上线后有误,则该过程的用户数据均会丢失无法回溯。
验收方法:查看对应数据平台是否有对应事件产生,是否拿到相关参数。网页可点击F12查看数据反馈。与输出的Excel表格进行核对确认是否有遗漏。
三、最后
让我们最后来总结一下Android、iOS、web和小程序是如何获取设备唯一标识的:
- Android有两种方式,第一种是获取UUID写入.so文件固化成UDID,第二种是获取Android ID。
- iOS是获取UUID,然后写入keychain中进行保存,然后每次从keychain中取用户标识。
- web一般是生成cookie并存在设备的浏览器中。
- 微信小程序,可以使用UUID,但是用户删除小程序后会变化,建议使用openID。使用openID要注意冷启动的时候,要暂存操作事件,获取到openID后再上传。
文章由PM28网编辑,作者:海阁,如若转载,请注明出处:http://www.pm28.com/5064.html欢迎投稿