iOS 个性化安装的实践三 设备唯一标识

在个性化安装的思考中,设备唯一标识识别应该是大家都最容易想到的一种匹配方案,也是最符合原生场景的,流程也相对简单:

  1. 用户浏览wap网页,服务端记录用户对应的某些行为数据信息
  2. wap引导用户去下载app,并收集设备标识发送至服务端
  3. 用户跳转至App Store下载app并第一次启动,app也收集设备的标识发送给服务端
  4. 服务端比对app上传的设备标识,找出具有相同设备标识的wap用户,并下发记录的数据信息
  5. app根据下发的数据信息还原wap之前的操作,实现无感延续性使用

从场景流程来看,关键在于设备唯一标识的选择,必须app能获取,wap也能获取,那我们先分别分析wap和app在设备唯一标识上的各自选择上有哪些


  • app 设备唯一标识
    MAC在iOS7之后返回同一值:02:00:00:00:00:00;
    UDID(IOS设备的唯一识别码-Unique Device Identifier)在iOS5后就禁止使用了,试图获取会禁止上架;
    DeviceToken在iOS9之后app卸载重装会改变,大的升级也会改变,而且用户关闭通知就获取不到。
    所以下面说下目前常用的
  1. UUID
    Universally Unique Identifier,通用唯一识别码,每次生成都会不一样,所以第一次启动获取后,存储在钥匙串Keychain中,这样app被删除了,Keychain里的数据依然存在,除非系统重置
- (NSString *)uuid {
    CFUUIDRef uuid = CFUUIDCreate( nil );
    CFStringRef uuidStr = CFUUIDCreateString( nil, uuid );
    NSString * result = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidStr));
    CFRelease(uuid);
    CFRelease(uuidStr);
    return result;
}
  1. IDFA—iOS6及之后
    广告标示符,它是由系统存储着的,但是若是用户完全重置系统或者还原广告标识,就会生成新值
    同时若用户限制此ID的使用,那ID就会取不到值,不过苹果默认是允许追踪此ID的值
- (NSString *)idfaStr {
    ASIdentifierManager *asIM = [[ASIdentifierManager alloc] init];
    if(asIM.advertisingTrackingEnabled){
        return [asIM.advertisingIdentifier UUIDString];
    } else{
        return nil;
    }
}
  1. IDFV—Vendor标示符,iOS6及之后
    来自同一个运营商的应用(com.XXX.APP这里的com.XXX一样)运行在同一个设备上,此ID的值是相同的,不同的运营商应用在同一个设备上的值不同,但是如果同一运营商的app全部删除,重新安装后的ID值会改变
- (NSString *)idfvStr {
    return [[UIDevice currentDevice].identifierForVendor UUIDString];
}

在现实项目中,唯一标识的处理一般是:

  1. 从Keychain中获取唯一标识
  2. 获取的到直接使用
  3. 获取不到就生成 UUID 或 IDFV 的值并存储在Keychain中

  • wap 设备唯一标识
    这一块偶比较不了解,所以咨询了前端的同学,说是现在一般两种方法用的比较多
  1. cookie 存储,用 cookie 存一个唯一码, 然后记录操作。但如果禁用 cookie 或者 清理 cookie, 储存的数据就没了
  2. FingerPrint (画布指纹识别),有兴趣的可以查阅FingerprintJS框架,web指纹识别技术通过提取设备的各种特征,据说能达到94%的匿名浏览器区分度,但是通过测试发现同一配置的iPhone拿到的值是一样的,重复率还是挺高的

  • 最终选择
    综上所述,发现app与wap的唯一标识并无交集点,四不四很惊(jing)喜(xia),所以才有用描述设备体征(IP、Date、操作系统,屏幕尺寸等等)的集合信息作为一个模糊匹配的选择,其实相当于确定 手机具体型号 + 访问时间 + IP + ...
  1. 操作系统(原先有想过通过UA,不过想到其实wap跟app比对也就是UA中的操作系统具有意义,iPhone的升级率高,容易都是最新系统)
  2. 设备IP(IP可能会变化,特别在wifi进入蜂窝移动网络,而且同处于一个wifi下,IP相同的的也是很多呀)
  3. Date — 访问时间(量级较大的情况下,推广过程中,同一时段安装的重复率也不低)
  4. 设备屏幕尺寸(iOS设备屏幕尺寸种类不多)
    确定手机型号还可以wap获取GPU型号,分辨率,等等,app通过获取设备型号在对应表获取GPU型号等,不过苹果手机型号较少,在访问时间容差10分钟或者更短期间内,同一 wifi 下,量级大的 app 出现误判也是容易发生,所以现在这个应该算是最不得已的方式吧

这块目前的信息整理只能得到这样的结果,有更好方式的麻烦告诉偶哟


  • 扩展,通过配置文件,wap可获取iOS设备唯一标识符
    通过集成苹果的MDM可获取设备信息(UDID、Languages、DeviceID、BatteryLevel等)等很多信息,若只想获取UDID,简单点可通过苹果配置文件获取iOS设备UDID,用户在所有操作之前需完成.mobileconfig描述文件的安装,做不到无痕,而且一般用户对于需要安装配置文件都有一种警惕心态(嗯,偶有的)
    具体查阅 Safari获取iOS设备UDID
    具体做法可参考 天狐博客:通过Safari浏览器获取iOS设备UDID(设备唯一标识符)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容