DeepLink深度链接


先说一个日常场景帮大家理解下什么是深度链接(Deeplink)。最近双十一、双十二,不知道大家有没有被亲故们发的某宝、某东、或拼夕夕的各类信息轮番轰炸?此外,大家的亲友群、闺蜜群里常年有一类链接挂着小红薯的笔记分享、某宝的化妆品 / 衣服链接分享等等,这一个个的分享链接织成一张张网,真可谓是增加亲友亲密度,快速获取优质好物的利器。

深度链接(Deeplink)可能存在在以下几个场景下:

  1. 如果小伙伴 A 已经安装了该 App,那她只要点开链接就可以直接跳转到 App 内

  2. 如果小伙伴 A 没有安装相关 App,那就会跳转到应用市场指引下载 App 并安装

类型场景还有其他可能性:

  1. 短信,比如某宝上新发给小伙伴 A 的短信,小伙伴 A 可以点击短信内链接打开 App
  2. 短信,比如小伙伴 A 收到某社交平台的好友申请,需要通过短信打开手机自带浏览器,然后通过浏览器跳转指定页面
  3. 通过分享到微信中 h5 页面,在微信中打开 App (这个需要到微信开放平台做配置)

以上场景中有关深度链接(Deeplink)的知识点:

  1. 在浏览器或者短信中打开 App,如果安装了就能直接打开 App,否则引导下载。对于 Android 而言,这里主要牵扯的技术就是 deeplink,也可以简单看成 scheme。
  2. 其实,AppLink 就是特殊的 Deeplink,只不过它多了一种类似于验证机制,如果验证通过,就设置默认打开,如果验证不过,则退化为 deeplink,如果单从 APP 端来看,区别主要在 Manifest 文件中的 android:autoVerify=“true”。
  3. 还有在微信中,也可以作出这样操作。如果用户已经安装 App,点击跳转 App 则会通过应用宝打开该应用并且跳转到相应的页面,这种也是一种 AppLink

总结来说,Deeplink,又叫深度链接技术,是指在 App / 短信 / 广告里点击链接,能 直接跳转到目标App具体位置的技术,深度链接打破了网站与App间的壁垒,成为实现网站与App相互跳转的桥梁。 开发者不仅可以通过 deeplink 实现网站到 App 互相跳转,也可以实现从多个平台(QQ、微信、微博、Twitter、Facebook、短信、各大浏览器等)到 App 内指定页的跳转。例如用户将电商 App 内的一个详情页链接通过短信形式发送给其他亲友,用户点击短信内的链接就能打开对应的 H5 页面,然后直接跳转到电商 App 内的指定详情页,而不是 App 首页。如果用户并未安装 App,那么就会跳转到 App 下载页面。等用户安装打开 App 后仍然能跳转到指定页面。Deeplink 技术不仅可以实现场景快速还原,缩短用户使用路径,更重要的是能够用于 App 拉新推广场景,降低用户流失率。

# 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 文档:

  1. 首先按苹果官方文档,配置 Universal link。微信对 Universal Links 配置有以下要求:

    • Universal Links 必须支持 https
    • Universal Links 配置的 paths 不能带 query 参数
    • 微信使用 Universal Links 拉起第三方 App 时,会在 Universal Links 末尾拼接路径和参数,因此 App 配置的 paths 必须加上通配符 /*
  2. 然后向微信注册自己的应用 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 技术,但是现实中还是会遇到很多问题。比如进行资源配置、兼容性适配、模糊匹配等事项时需要耗费大量的人力和维护成本,实现起来相当复杂。现在常用的方法,也是比较推荐的方式,即直接接入专业的第三方,这样可以大大缩短开发时间,保障服务稳定性。


文章作者: Mrr-cxh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Mrr-cxh !
赏
 上一篇
Sentry Sentry
Sentry 是一个开源的实时错误监控的项目,它支持很多端的配置,包括 web 前端、服务器端、移动端及其游戏端。支持各种语言,例如 python、oc、java、node、javascript 等。也可以应用到各种不同的框架上面,如前端框架中的vue 、angular 、react 等最流行的前端框架。
2022-07-12
下一篇 
移动端适配你需要知道的 移动端适配你需要知道的
移动端适配,是我们在开发中经常会遇到的,这里面可能会遇到非常多的问题:1px问题,UI图完美适配方案,iPhoneX适配方案,横屏适配,高清屏图片模糊问题。上面这些问题可能我们在开发中已经知道如何解决,但是问题产生的原理,以及解决方案的原理可能会模糊不清。在解决这些问题的过程中,我们往往会遇到非常多的概念:像素、分辨率、`PPI`、 `DPI`、 `DP`、 `DIP`、 `DPR`、视口等等,你真的能分清这些概念的意义吗?本文将从移动端适配的基础概念出发,探究移动端适配各种问题的解决方案和实现原理。
2022-06-28
  目录