Web端向App端导量神技Deferred DeepLink的实现思路

1.什么是DeepLink
2.什么是Deferred DeepLink
3.Deferred DeepLink的实现思路
Web端向App端导量神技Deferred DeepLink的实现思路_第1张图片
img

DeepLink 深度链接

简单的说就是用户点击一个链接,可以直接跳转的app里面的制定页面
使用DeepLink 点击链接-->打开App-->跳转到指定界面
不使用DeepLink 点击链接-->打开App-->只能进入app首页

这项技术在iOS App有新旧两种实现方案

Custom URL Scheme

Universal Links (iOS 9之后)

Universal Links 有许多 Custom URL Scheme不具备的优点
1.不同的App可以定义相同的URL Scheme造成冲突,Universal Links则是由server端决定呼起哪一个app
2.Universal Links本身是一个https地址,可以展示页面,更友好,同时也能被搜索引擎索引
综合这些优点,Universal Links 大有取代前者的趋势。


Web端向App端导量神技Deferred DeepLink的实现思路_第2张图片
img

Deferred DeepLink 延迟深度链接

然而以上所说的DeepLink,都建立在用户已经安装了App的前提下。
如果用户没用安装App,则需要引导用户到各种App Store去安装,等到用户安装完毕,打开App时就找不到之前的指定页面了,这条流程就被打断了。

安装之后,再一次引导用户点击链接,重走流程,这种体验显然是接受不了的。
因此,Deferred DeepLink应运而生。要解决的核心问题就是用户匹配,怎么知道现在打开App的用户就是刚才点击链接的那位用户。

常见使用场景:
1.在 Web 和 App 的切换过程中保留上下文。
(比如购物,用户在web浏览哪一件商品,跳转到App端继续浏览。记录登录信息自动登录等等)
2.好友邀请,点击链接即可,无需填写繁琐的邀请码

Deferred DeepLink的实现思路

任何匹配的问题都可以转化到获取唯一标示的问题。
很容易联想到http里面的session和cookies。

但是iOS的沙盒模式,阻断了App之间的数据共享。也就是说App的cookies跟手机浏览器的cookies是分开的,无法互通。

直到iOS 9,Apple开放了SFSafariViewControllerAPI,实现了App和Safari的cookies互通,那么一切问题迎刃而解了。首次启动App的时候,通过一个隐藏的SFSafariViewController访问server,server通过cookies拿到唯一标示sessionID,从而得知用户之前访问过什么商品,进一步跳转到一个 Universal Links,再进一步打开对应的商品详情页,完成了Deferred DeepLink的流程。

具体实现可参考 国外开源的Branch or VKSafariDomainBridge

这个方案仅仅解决了App和Safari之间的互通,手机上还有微信、手百、chrome等等第三方浏览器,并且项目还要支持iOS 9之前的系统版本。

下边讲另外一种方案,暂且叫做模糊匹配。

在用户点击web链接或打开app的时候,尽可能的收集跟设备相关的信息,例如

a.设备屏幕尺寸
b.设备操作系统版本号
c.ip地址
d.访问时间
e.使用的语言 等等

这些信息的每一项都不能作为唯一标示,但是如果把他们组合起来,作为一个集合,配合算法,进行模糊匹配,匹配成功的几率会大大提高。缺点也是显而易见的,也许世界上找不到两片同样的叶子,但是要找两部同样的手机还是挺容易的。匹配成功率取决于匹配策略,需要长期的去打磨匹配算法。

总结起来,两种方案都不是特别完美,与其自己去DIY,不如采用第三方提供Deferred DeepLink解决方案。

国内的有 魔窗 && Deepshare
国外的有 Branch

你可能感兴趣的:(Web端向App端导量神技Deferred DeepLink的实现思路)