简介
本文主要介绍,app跨域访问app外部的浏览器的数据的方案,包括外部safari,或者QQ,微信,手百等外部app内的浏览器。
主要使用场景就是:
用户在别的wap网页上,产生了用户行为,用户数据,但是还没下载app,当用户下载app后,打算直接在app内延续之前在wap上的行为和数据的时候,就需要运用到跨越浏览器与app鸿沟的,互通方案。
简单举个例子就是:
用户在微信浏览器里,访问某个页面,感兴趣并且登陆了,然后引导下载了app,等用户下载完app后第一次打开,希望能自动就完成登陆,甚至同步下来一些刚才用户在wap页面上操作的数据
如果能发生跨浏览器与app的互通,除了这个case之外,还可以有更多地自由发挥,设计出更加舒畅的用户体验
想要实现这样目前看有2个方案,各自都有弊端,都不是完美的,本文会详细说明这两个方案
- 设备指纹唯一识别方案
- iOSSafariCookie互通方案
设备指纹唯一识别方案
<!-- more -->
如果用户在wap页面,能通过某种方式识别到唯一的设备标识,当用户离开去下载app,下载完成第一次打开app的时候,app能识别到一样的设备标识,那么就可以判断第一次打开app的用户,就是刚才浏览wap网页的用户,这样服务就可以把刚才wap上操作的数据结果,通过网络下发给app,从而让app实现,还原刚才wap的操作场景
方案流程
- 用户在wap网页上产生了行为,产生了用户个人数据
- wap网页收集了一种能够
唯一标识
设备的信息,并且发送给了服务器 - app安装完毕后第一次运行,也去通过app尝试收集
唯一标识
设备的信息,并且发给服务器 - 服务器经过对比,发现app的
唯一标识
与wap网页发上来的唯一标识
能够匹配 - 服务器判断,是同一个人操作,于是下发用户个人数据
纵观整个流程发现,一切的核心,一切的关键,就是那个唯一标示
选取唯一标识
这个唯一标识
要具备苛刻的条件,想找到其实很不容易
- 选择当做
唯一标识
的内容,必须能让app获取的到 - 选择当做
唯一标识
的内容,必须也能让wap获取的到 - 选择当做
唯一标识
的内容,还必须有能力区分出不同的设备,如果选的唯一标识
好几个设备取出来的都一样,那么就乱套了
那么我们看看遵循这几个条件,我们能选择啥?
- UDID,MAC地址啥的,别说wap了,app都不可能取到了
- JS有好几套,通过网页渲染canvas的方案获取屏幕"指纹",但这玩意app不可能拿到完全一致的东西,二者对不上,就没任何意义
- IDFA,IDFV,这玩意app是能取到了,但是wap拿不到啊
上面说的几个都是相对来说,如果能双方都拿到,是可以比较精准的进行设备唯一标识
的,但问题是,我们拿不到。。怎么办?
看看下面几个数据
- 设备屏幕尺寸(iOS设备如此的统一,一共就那么几个屏幕尺寸,重复的还不一堆一堆的)
- 设备操作系统(iOS系统碎片化如此的低,大部分几乎都升到较高级的系统版本,重复的依然一堆一堆)
- 设备IP(IP这玩意会变啊,离开WIFI进入3G,经常变,并且IP这玩意在同一WIFI下也重复的一堆一堆的啊)
- 访问时间(时间这玩意更没谱了,你们的用户量越大,某一个确定的时间段内,发生第一次安装,重复的就越多)
- 还有更多类似的数据
发现没有,上面的数据最大的特点就是,有一定的描述设备体征的信息,但是如果只靠这一个描述信息,那结果就是重复的太多太多,根本没法确定一个唯一性。
但是,如果我们把这么些描述信息做成一个合集,同一时间内满足所有的条件,那么这个设备重复的概率一下就缩减了太多太多。