文章从产品经理的角度出发,简单对IOS、微信和安卓各自标识用户的常用方法展开分享。
我们每天都在接触新增用户、日活、月活这些数据,不知大家是否也会有这样的疑问:到底是通过什么方法,来判断一个用户是新用户还是老用户呢?换而言之,工程师是怎样给每个用户做标识的呢?本文从产品经理技术普及的角度,简单介绍一下IOS、微信和安卓各自标识用户的常用方法。
由于苹果公司用户隐私保护机制的种种限制,需通过idfv和Keychain配合,才能实现Ios用户唯一性识别。
IDFV(IdentifierForVendor)
IDFV是提供商标识用户用的,每个设备在所属同一个提供商的应用里,都有相同的值。准确点说,是通过BundleID的反转的前两部分进行匹配,如果相同就是同一个Vender,例如对于com.taobao.app1, com.taobao.app2 这两个BundleID来说,就属于同一个Vender,共享同一个idfv的值。idfv的值非常适合于作为内部用户行为分析的主id,来标识用户。
identifierForVendor是一种应用加设备绑定产生的标识符,相当于:
Z(identifierForVendor) = X(BundleID的反转的前两部分相同的应用) + Y(某设备)。
注意:如果用户将属于此提供商的所有App卸载,则idfv的值会被重置,即再重装此提供商的App,idfv的值和之前不同。
Keychain
我们可以把Keychain理解为一个Dictionary,所有数据都以key-value的形式存储,可以对这个Dictionary进行add、update、get、delete这四个操作。对于每一个应用来说,Keychain都有两个访问区,私有区和公共区。私有区是一个sandbox,本程序需存储的任何数据对其它程序不可见。要想在公共区存储数据,需要先声明公共区的名称,官方文档管这个名称叫“Keychain access group”。
苹果限制了你只能同公司的产品共享Keychain数据,别的公司访问不了你公司的Keychain。Keychain里保存的信息不会因为APP被删除而丢失,所以在重装APP后,keychain里的数据还能使用。
我们可以获取idfv,保存到Keychain里面,这样即时APP删除再重新安装,也可以从Keychain中读取回来。使用group还可以可以保证同一个开发商的所有程序针对同一台设备能够获取到相同的不变的UDID。
注意:刷机或重装系统后,Keychain保存的值会丢失。
获得了开放平台认证的开发者帐号,可以绑定10个手机应用、10个网站、10个公众号。同个开发账号下的不同应用的同一个用户的unionid是完全相同的。
unionid ——用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。
openid ——普通用户的标识,对当前开发者帐号唯一。一个openid对应一个公众号。
获取方法:https://mp.weixin.qq.com/wiki,微信网页开发→微信网页授权。
安卓获取设备唯一标识原本非常简单(至少不会像IOS一样各种限制),但是由于设备的多样性导致各种情况都有可能出现。常见的标识方法有以下5种:
由于任何方法来标识用户,都有失败的可能,一般工程师在写代码的时候,会通过拼接,或者拼接后的结果计算出的MD5值来标识用户,以保证效果。
写在最后:作者产品出身,无一线代码经验,这些是从资料中梳理出来的一点皮毛,如有错误,感谢斧正。