本文主要介绍,app跨域访问app外部的浏览器的数据的方案,包括外部safari,或者QQ,微信,手百等外部app内的浏览器。
主要使用场景就是:
用户在别的wap网页上,产生了用户行为,用户数据,但是还没下载app,当用户下载app后,打算直接在app内延续之前在wap上的行为和数据的时候,就需要运用到跨越浏览器与app鸿沟的,互通方案。
简单举个例子就是:
用户在微信浏览器里,访问某个页面,感兴趣并且登陆了,然后引导下载了app,等用户下载完app后第一次打开,希望能自动就完成登陆,甚至同步下来一些刚才用户在wap页面上操作的数据
如果能发生跨浏览器与app的互通,除了这个case之外,还可以有更多地自由发挥,设计出更加舒畅的用户体验
想要实现这样目前看有2个方案,各自都有弊端,都不是完美的,本文会详细说明这两个方案
本文相关link
iOS9下SafariCookie与app互通
VKSafariDomainBridge Github
如果用户在wap页面,能通过某种方式识别到唯一的设备标识,当用户离开去下载app,下载完成第一次打开app的时候,app能识别到一样的设备标识,那么就可以判断第一次打开app的用户,就是刚才浏览wap网页的用户,这样服务就可以把刚才wap上操作的数据结果,通过网络下发给app,从而让app实现,还原刚才wap的操作场景
这个过程大致如下
唯一标识
设备的信息,并且发送给了服务器 唯一标识
设备的信息,并且发给服务器 唯一标识
与wap网页发上来的 唯一标识
能够匹配 纵观整个流程发现,一切的核心,一切的关键,就是那个 唯一标示
这个 唯一标识
要具备太多太多的条件,想找到其实很不容易
唯一标识
的内容,必须能让app获取的到 唯一标识
的内容,必须也能让wap获取的到 唯一标识
的内容,还必须有能力区分出不同的设备,如果选的 唯一标识
好几个设备取出来的都一样,那么就乱套了 那么我们看看遵循这几个条件,我们能选择啥?
上面说的几个都是相对来说,如果能双方都拿到,是可以比较精准的进行设备 唯一标识
的,但问题是,我们拿不到。。怎么办?
看看下面几个数据
发现没有,上面的数据最大的特点就是,有一定的描述设备体征的信息,但是如果只靠这一个描述信息,那结果就是重复的太多太多,根本没法确定一个唯一性。
但是,如果我们把这么些描述信息做成一个合集,同一时间内满足所有的条件,那么这个设备重复的概率一下就缩减了太多太多。
举个例子,到app安装完毕第一次打开的时候,所有访问过wap的设备信息,把他们的信息全都收集起来,找到同样的屏幕尺寸,同样的操作系统版本,同样的IP地址,访问时间相差不超过10min(暂定)的设备,在如此多得限定条件下,我们近乎可以认定为,是具有唯一性的设备,是同一个人
可以看到这里面众多的信息一起去过滤,比较强的过滤条件就是IP,但因为IP存在频繁变化,所以追加了时间条件,IP也可能因为WIFI路由器的原因导致,IP也存在重复和误伤,这时候,又辅助了简单的设备信息进行二次过滤。
这样我们就找到了一个并不完美的 唯一标识
,有了这个唯一标识,就可以实现我们的跨浏览器和app的互通。
其实友盟的SDK就是这么做的
友盟 SDK文档
友盟通过这个方法,知道了用户是从哪个网页看到的app下载的广告,然后发生的去appstore下载并运行的行为,从而有效的能核算广告的收益
a.通过对应用appstore URL进行封装,获取分渠道点击用户的相关信息,包括:时间、IP、设备类型、操作系统版本;
b.通过在应用中集成代码,获取初次打开应用的用户信息,包括:时间、IP、设备类型、操作系统版本;
c.实时对比不同渠道点击用户和应用激活用户信息,区分不同渠道带来的激活用户;
d.此统计方式不用媒介提供统计数据,实时自动对比,会存在一定误差,但可以基本衡量各渠道间及不同时期的渠道激活转化数据。
他有什么弊端吗?弊端还是挺明显的,因为他是不完美的 唯一标识
,所以就存在着误伤。
什么是误伤?用户A浏览了WAP界面,用户B恰巧用同一屏幕,同一操作系统版本,同一网段出口IP,在既定时间内,B用户下载并运行了APP,这样我们这套方案,会把B识别成A,等到A真的下载完APP后再来运行,数据可能已经失效了
这种误伤是概率存在的,在现有的限定条件下,随着app的用户体量越来越大,这种误伤将会越来越明显。