# Deeplink 深度链接是什么
先说一个日常场景帮大家理解下什么是深度链接(Deeplink)。最近双十一、双十二,不知道大家有没有被亲故们发的某宝、某东、或拼夕夕的各类信息轮番轰炸?此外,大家的亲友群、闺蜜群里常年有一类链接挂着小红薯的笔记分享、某宝的化妆品 / 衣服链接分享等等,这一个个的分享链接织成一张张网,真可谓是增加亲友亲密度,快速获取优质好物的利器。
深度链接(Deeplink)可能存在在以下几个场景下:
-
如果小伙伴 A 已经安装了该 App,那她只要点开链接就可以直接跳转到 App 内
-
如果小伙伴 A 没有安装相关 App,那就会跳转到应用市场指引下载 App 并安装
类型场景还有其他可能性:
- 短信,比如某宝上新发给小伙伴 A 的短信,小伙伴 A 可以点击短信内链接打开 App
- 短信,比如小伙伴 A 收到某社交平台的好友申请,需要通过短信打开手机自带浏览器,然后通过浏览器跳转指定页面
- 通过分享到微信中 h5 页面,在微信中打开 App (这个需要到微信开放平台做配置)
以上场景中有关深度链接(Deeplink)的知识点:
- 在浏览器或者短信中打开 App,如果安装了就能直接打开 App,否则引导下载。对于 Android 而言,这里主要牵扯的技术就是 deeplink,也可以简单看成 scheme。
- 其实,AppLink 就是特殊的 Deeplink,只不过它多了一种类似于验证机制,如果验证通过,就设置默认打开,如果验证不过,则退化为 deeplink,如果单从 APP 端来看,区别主要在 Manifest 文件中的 android:autoVerify=“true”。
- 还有在微信中,也可以作出这样操作。如果用户已经安装 App,点击跳转 App 则会通过应用宝打开该应用并且跳转到相应的页面,这种也是一种 AppLink
# 所以究竟什么是 Deeplink?
总结来说,Deeplink,又叫深度链接技术,是指在 App / 短信 / 广告里点击链接,能 直接跳转到目标App具体位置的技术,深度链接打破了网站与App间的壁垒,成为实现网站与App相互跳转的桥梁。 开发者不仅可以通过 deeplink 实现网站到 App 互相跳转,也可以实现从多个平台(QQ、微信、微博、Twitter、Facebook、短信、各大浏览器等)到 App 内指定页的跳转。例如用户将电商 App 内的一个详情页链接通过短信形式发送给其他亲友,用户点击短信内的链接就能打开对应的 H5 页面,然后直接跳转到电商 App 内的指定详情页,而不是 App 首页。如果用户并未安装 App,那么就会跳转到 App 下载页面。等用户安装打开 App 后仍然能跳转到指定页面。Deeplink 技术不仅可以实现场景快速还原,缩短用户使用路径,更重要的是能够用于 App 拉新推广场景,降低用户流失率。
# 不同操作系统的 Deeplink 技术有一下几种:
# 1、URL Scheme——iOS9 和安卓 6 以前
在 iOS 9 和安卓 6(M)之前,移动端实现 Deeplink 的方式都是通过 URL Scheme。URL,我们都很清楚,weixin://dl/moments 就是一个 URL,也叫它链接或网址;Scheme,表示的是一个 URL 中最初始的位置,即 😕/ 之前 的那段字符,例如这个 URL 中的 Scheme 就是 weixin 。我们可以用 Scheme 来定位对应的 App 。例如淘宝的 Scheme 就是 taobao、支付宝的 Scheme 就是 alipay,新浪微博的 Scheme 是 sinaweibo。
被打开的 App 可以向操作系统提前注册一个 URL,开头的 Scheme 用于从浏览器或其他 App 中拉起本 App。 移动操作系统提供解析 Scheme 的能力 ,判断 Scheme 属于哪个 App,打开并将参数传递给 App。 此外通过指定的 URL 中其他字段(如 path 等),可以让 App 在被打开后直接打开某些特定页面 ,比如商品详情页、活动详情页等等。
# URL Scheme 协议格式
一般来说整段的 URL Scheme 是这种的形式:Scheme://host:port/path?query=xxxxxxx。其中 path 代表了想要跳转的指定页面,而 query 代表了想要传递的参数。
# URL Scheme 缺点
- 我们只能通过固定协议格式的链接来实现跳转,而且打开 H5 页面时,会出现一个提示框:
“是否打开 XXX”。用户确认了才会跳转到 App 中,增加了用户流程。 - 微信、QQ 等把 URL Scheme 打开 App 这种方式给
禁了,但是它们都各自维护着一个白名单,如果 Scheme 不在该白名单内,那么就不能在他们的 App 内打开这个 App(如果被封锁了那么用户只能通过右上角浏览器内打开 App)
# 2、Universal link——iOS 9 以后
Universal link 是苹果公司在 2015 年推出的新一代 Deeplink 技术, iOS9 及以上 的用户可以通过点击一个 https 链接无缝的跳转到一个 App 应用内的指定页面, 不需要让用户点击“是否打开 xx” 。因为少了这个提示框,所以 Universal link 比 URL Scheme 方式体验更好, 更重要的优势是目前微信和 QQ 已经支持 Universal link 这种形式了,因此我们更推荐开发者在 iOS 端使用这种方式打开 App。
微信目前已支持通过 Universal link 方式直接打开第三方 App,要求 SDK 版本大于等于 1.8.6.1。用户主要需要配置以下几步才能使用正常功能,详情配置步骤可以参照微信 Universal link 文档:
-
首先按苹果官方文档,配置 Universal link。微信对 Universal Links 配置有以下要求:
- Universal Links 必须支持 https
- Universal Links 配置的 paths 不能带 query 参数
- 微信使用 Universal Links 拉起第三方 App 时,会在 Universal Links 末尾拼接路径和参数,因此 App 配置的 paths 必须加上通配符 /*
-
然后向微信注册自己的应用 id 和 Universal Links。
此外 QQ 也已支持 Universal link 跳转方式,要求 SDK 版本大于等于 3.3.6. 详情配置步骤可以参考QQ 配置文档
# 3、App Link——Andriod M(6)以后
App Link 是由安卓发布的,在 Andriod M 以后才能使用。用户可以点击一个 H5 链接时直接跳转到 App 指定页面,而不会让用户点击” 是否打开 xx“。所以 App Link 比 URL Scheme 方式体验更好。
对于开发者而言,要不要接第三方 Deeplink 工具
虽然开发者可以自己配置实现 Deeplink 技术,但是现实中还是会遇到很多问题。比如进行资源配置、兼容性适配、模糊匹配等事项时需要耗费大量的人力和维护成本,实现起来相当复杂。现在常用的方法,也是比较推荐的方式,即直接接入专业的第三方,这样可以大大缩短开发时间,保障服务稳定性。