一、什么是deeplink?
Deeplink技术是操作系统本身就有的能力,发展历史已经有很多年了。不同操作系统、不同版本都有着不同版本的Deeplink技术。
目前移动端 Deeplink 的说法有狭义和广义之分,分为 Deeplink 和 Deferred Deeplink。
Deeplink:深度链接,指已安装相应 App 的情况下,把特定的参数通过 url 的形式传递给 App,直接打开指定的内部页面,实现从链接直达 App 内部页面的跳转。
Deferred Deeplink:延迟深度链接,主要增加了一个是否已安装相应 App 的判断,用户点击链接时,如果未安装 App,则引导用户前往应用市场,下载完对应 App 后,首次打开该 App 时自动跳转进入指定的内部页面。
一般常说的“Deeplink”其实就是这两层含义相结合的简称。
想在 App 上开发 Deeplink 是需要一些技术支持的,首先要明白,一个 App 想要做到一键拉起 App,必须先满足两个条件:
1,具备被其他 App 打开的能力(URL Scheme)
2,具备打开其他 App 的能力(各种设备判断及跳转)
DeepLink用到的核心技术就是:URL Scheme。不论是IOS还是Android。
二、URL Scheme
在iOS 9和安卓 6之前,移动端实现Deeplink的方式都是通过URL Scheme。URL,我们都很清楚,weixin://dl/moments就是一个 URL,也叫它链接或网址;Scheme,表示的是一个 URL 中最初始的位置,即 ://之前的那段字符,例如这个URL中的Scheme就是weixin。我们可以用Scheme 来定位对应的App。例如淘宝的Scheme就是taobao、支付宝的Scheme就是alipay,新浪微博的Scheme是sinaweibo,易车的scheme是bitauto.yicheapp。
被打开的App可以向操作系统提前注册一个 URL,开头的Scheme 用于从浏览器或其他App中拉起本App。移动操作系统提供解析Scheme的能力,判断Scheme属于哪个App,唤起并将参数传递给App。此外通过指定的 URL 中其他字段(如path等),可以让App在被唤起后直接打开某些特定页面,比如视频详情页、商品详情页、活动详情页等。
一般来说整段的URL Scheme是这种的形式:Scheme://host:port/path?query=xxxxxxx。其中path代表了想要跳转的指定页面,而query代表了想要传递的参数。
URL Scheme方式优点是开发简单,但弊端也很明显:
1,我们只能通过固定协议格式的链接来实现跳转,而且打开H5页面时,会出现一个提示框:“是否打开XXX”。用户确认了才会跳转到App中,增加了用户流程
2,微信、QQ等把URL Scheme 打开App这种方式给禁了,但是它们都各自维护着一个白名单,如果Scheme不在该白名单内,那么就不能在他们的App内打开这个App(如果被封锁了那么用户只能通过右上角浏览器内打开App)
3、 Universal link
Universal link 是苹果公司在2015年推出的新一代Deeplink技术,iOS9及以上的用户可以通过点击一个https 链接无缝的跳转到一个App应用内的指定页面,不需要让用户点击“是否打开xx”。因为少了这个提示框,所以Universal link比URL Scheme方式体验更好,更重要的优势是目前微信和QQ已经支持Universal link这种形式了,因此我们更推荐开发者在iOS端使用这种方式唤起App。
流程
App第一次启动、更新版本后第一次启动,都会自动下载 apple-app-site-association 配置文件
1、下载 - App向工程里配置的域名发起Get请求拉取配置好存放在https服务器上的配置文件
2、 注册 - App将配置文件注册给手机系统
3、命中 - 由任意h5、或其他App发起的跳转url,如果命中了配置文件注册过的通用链接,就打开App
4、没命中 - 直接跳转url链接对应的h5页面
优点:
1、唯一性: 它使用标准的 https 链接到你的web站点,所以它不会被其它的App所声明。
2、安全: 只有你自己才能上传文件到你网站的根目录,所以你的网站和你的App之间的关联是安全的。iOS会去你的网站上去下载你上传上去的说明文件(这个说明文件声明了你的App可以打开哪些类型的https链接)。
3、 可变: Universal Links本身是一个 https 链接,当用户手机上没有安装你的App的时候也能够工作。此时点击链接会跳转到safari中展示你网页。
4、简单: 一个URL链接,可以同时作用于网站和App。
5、私有: 其它App可以在不需要知道你的App是否安装了的情况下和你的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。
四、 App Link
2015年5月28日,Google I/O大会上正式推出Android M(android6.0 API级别23),其中新增了一个特性叫AppLinks,它可以加强软件间的关联,可以把触屏端的流量带到移动端来。用户可以点击一个H5链接时直接跳转到 App 指定页面,而不会让用户点击”是否打开xx“。所以App Link比URL Scheme方式体验更好。
优势
1、安全且具体: Android App Links使用链接到您拥有的网站域的HTTP URL,因此没有其他应用可以使用您的链接。Android App Links的要求之一是您通过我们的网站关联方法验证您所在域的所有权。
2、无缝的用户体验:由于Android App Links对您网站和应用中的相同内容使用单个HTTP URL,因此未安装应用程序的用户只需访问您的网站而不是应用程序 - 没有404,没有错误。
3、Android Instant Apps支持:使用Android Instant Apps,您的用户无需安装即可运行您的Android应用。要为您的Android应用添加即时应用支持,请设置Android应用链接并访问g.co/InstantApps。
4、通过Google搜索吸引用户:用户可以通过在移动浏览器,Google搜索应用,Android屏幕搜索或Google智能助理中点击Google中的网址,直接在应用中打开特定内容。
网友评论