获取设备唯一标识符
可作为设备唯一标识的几种方法:
- ** UDID(Unique Device Identifier)**。iOS5以后不可用。
- CFUUID。获得的这个CFUUID值系统并没有存储。每次调用CFUUIDCreate,系统都会返回一个新的唯一标示符。
- NSUUID。跟CFUUID一样,这个值系统也不会存储,每次调用的时候都会获得一个新的唯一标示符。
- MAC Address。iOS7以后不可用,取不到正确的值,都是相同的值。
- OPEN UDID。生成码-剪贴板,iOS7以后不能用,GitHub中已启用。
- 广告标示符(IDFA-identifierForIdentifier)。返回NSUUID实例,用户还原广告,会重置,还原系统会重置。审核规定,获取IDFA而不使用广告功能会被拒。
- Vindor标示符 (IDFV-identifierForVendor) 。返回NSUUID实例,相同供应商下所有APP删除,会变
-
推送token+bundle_id 。依靠APNS,需要网
关于这几种标识符的介绍可以看这篇文章,也可以看《The Developer’s Guide to Unique Identifiers》 (中文翻译)
下图是总结的几种标识符的情况。
唯一标识符获取策略
直接使用NSUUID,获取方法:
NSString *uuid = [[NSUUID UUID] UUIDString];
使用苹果提供的Vindor标示符,获取方法
NSString *IDFVString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
如果用户卸载了同一个vendor对应的所有程序,然后在重新安装同一个vendor提供的程序,此时identifierForVendor会被重置。
因此,为了使唯一标识符保存更持久,将IDFV(或UUID)存储到钥匙串中,下次使用先从钥匙串取。
关于钥匙串的使用,可以看《iOS安全-钥匙串服务(iOS Keychain Services Tasks)》
新设备识别
关于新设备识别,分为两种,APP新设备和账户新设备:
- APP新设备,即第一次安装当前APP。识别方法:钥匙串中存储UUID,启动时先检查钥匙串,如果取不到存储的UUID,即视为新设备,生成UUID,存储到钥匙串中。后台记录启动的UUID,可用来统计下载转化率等数据。
UUID生成记录流程如下图所示:
- 账户新设备,跟用户账户关联。即当前账户第一次在这个设备上登录,视为用户的新设备。后台记录用户登录设备信息,可用做登录的二次验证。
设备锁登录流程如下图所示:
后台记录
后台记录APP相关信息,用作安全管理和统计。
下图列出部分常用统计信息,
下图是之前关于数据统计分析的整理:
统计策略
关于统计策略,参考第三方统计,列出几点。
上报策略
- 统计数据启动发送。(DEBUG时,实时发送)
- 默认开始crash收集。
- log收集,log加密,发送间隔。
页面计时
页面进入时,开始计时,退出页面记录时长。
事件统计
后台设置事件ID,前端根据ID统计上报。