前言
在开发的过程中,我们很容易就碰到了产品场景还原的需求。那么什么是场景还原呢?举个例子,用户A在某直播App上正在看小姐姐直播,此时他将这个直播间通过QQ/微信等分享给了用户B,用户B之前从未下载过该App,然后他打开用户A分享的链接,进入了H5页面,浏览了一会后,感觉在这个产品直播的小姐姐,很是有趣,渴望深入交流一番,所以就点了H5页面的关注按钮。跳到了App Store下载页面,下载安装注册后,App自动到达了那个小姐姐的直播间,让用户B可以继续观看。这就是典型的场景还原,它在电商,社交,直播App中非常常见。很多第三方sdk都支持这样的操作,典型的比如魔窗,LinkedME等。
那么这些第三方公司究竟是怎么做到的呢?之前笔者在做完这个需求后,也十分的好奇。做了一番了(XIA)解(CAI)后,现在跟大家分享一下,大概里面的原理和流程。有误之处,还望多指正!
- 开发人员首先在第三方公司的平台配置一些参数信息,配置通用链接,要传的参数,App下载地址等信息。
2.移动端开发人员代码集成第三方公司的sdk,web端开发人员集成第三方公司的JS sdk。
3.当用户B打开A分享的H5页面时,第三方公司的JS sdk已经开始记录了该用户手机的IP地址 时间戳 设备型号 网络等等信息, 收集完事后会把这些记录传到第三方公司的服务器上。与此同时,H5页面会把给移动端的参数也传给第三方公司的服务器上,服务器会返给H5页面一个链接。
4.当用户B点击H5页面的关注按钮时,H5页面代码执行了打开之前第三方服务器返回的那个链接,通过此链接来判断到底是该打开App呢还是跳到下载页面呢。
5.因为用户B手机之前未下载过该App,所以跳到App Store下载安装后,第一次打开App时,移动端的第三方sdk也会收集IP地址 时间戳 设备型号 网络等等 并传给第三方服务器,服务器在做特征值判断后如果能匹配上就将需要的参数返回给App端,App通过回调拿到参数后,本地保存。等用户完成注册操作后,定位到特定直播间。
以上就是场景还原的大概原理,当然具体到实际商业应用上,第三方公司肯定做了更多的一些操作,来保证这个流程的稳定性。
我在之前了解过程中,产生了以下几个问题,后来通过跟其他小伙伴交流后,有了一些想法,在这里一并记录下来,分享一下。
Q1:为什么第三方公司要记录用户手机的IP地址 时间戳 设备型号 网络等等信息?
A1: 记录的目的是为了作比较,来判断浏览H5的那个手机跟下载App的那个手机是否是同一个。之所以要这么麻烦,去获取这么多信息是为了让判断更精准一些。因为JS不能获取到手机的唯一标识,所以才需要这么麻烦。基于这种模式,会有一定的冲突率。比如我拿两台iPhone,之前都未下载过某App,一样的机型 一样的系统 同一个wifi 然后A点击H5页面,点下载按钮跳到App Store但是不下载,B直接在App Store上搜索该App,然后下载安装。很可能B发生了场景还原。从实际使用场景来看,这种事件发生的概率较小,一旦发生,也未造成任何严重损失,所以可以接受。第三方公司肯定也针对此做过一些优化来减小概率。
Q2:为什么一定要让用户点一下H5页面的那个按钮才能判断?不能直接就判断,该下载的时候下载,该场景还原就场景还原吗?
A2: 这个问题肯定不止我一个遇到过,应该有很多产品经理都会问过开发这个问题。其实这个问题,答案很明确。就是不能!必须是要用户手动去触发H5的那个点击事件后,才能做判断。这里的原因呢,是浏览器为了安全做了限制(web小伙伴告诉我的)。所以即使是他把点击事件里面的代码挪位置,也没卵用~
各位看官老爷,觉得还不错的话,点个喜欢哦~