什么是Deeplink?以及Deeplink的原理

什么是Deeplink?以及Deeplink的原理先说一个日常场景帮大家理解。最近双十一、双十二,不知道大家有没有被亲友们发的某宝、某东、或拼夕夕的各类信息轮番轰炸?小编的亲友群、闺蜜群里常年有这类链接挂着,小红薯的笔记分享,某宝的化妆品、衣服链接分享等等,这一个个的分享链接织成一张张网,真可谓是增加亲友亲密度,快速获取优质好物的利器。这背后有个特别容易忽视却又极其重要的知识点。比如你在社交媒体上分享给翠花一个某App上的精选好店,翠花想要查看有几种操作方式:l如果翠花已经安装了该App,那她只要点开链接就可以跳转到App;l如果…

大家好,又见面了,我是你们的朋友全栈君。

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

 

这背后有个特别容易忽视却又极其重要的知识点。比如你在社交媒体上分享给翠花一个某App上的精选好店,翠花想要查看有几种操作方式:

l  如果翠花已经安装了该App,那她只要点开链接就可以跳转到App;

l  如果翠花没有安装相关App,那就会跳转到应用市场指引安装

 

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

l  短信,比如某宝上新发给翠花的短信,翠花可以点击短信链接打开App

l  短信,比如翠花收到领英好友申请,她就需要通过短信打开浏览器,然后通过浏览器跳转指定页面

l  通过分享到微信中h5页面,在微信中打开App(这个需要到微信开放平台做配置)。

 

以上场景中的知识点:

l  在浏览器或者短信中唤起App,如果安装了就能唤起,否则引导下载。对于Android而言,这里主要牵扯的技术就是Deeplink,也可以简单看成scheme。

l  其实,AppLink就是特殊的Deeplink,只不过它多了一种类似于验证机制,如果验证通过,就设置默认打开,如果验证不过,则退化为Deeplink,如果单从APP端来看,区别主要在Manifest文件中的android:autoVerify=”true”。

l  还有在微信中,也可以作出这样操作。如果用户已经安装App,点击跳转App则会通过应用宝,打开该应用并且跳转到相应的页面。这种也是一种AppLink。

 

所以究竟什么是Deeplink?

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

 

image

 

不同操作系统的Deeplink技术

Deeplink技术是操作系统本身就有的能力,且发展历史已经有很多年了。因此不同操作系统、不同版本都有着不同版本的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在被唤起后直接打开某些特定页面,比如商品详情页、活动详情页等等。

 

1.2  URL Scheme协议格式

一般来说整段的URL Scheme是这种的形式:Scheme://host:port/path?query=xxxxxxx。其中path代表了想要跳转的指定页面,而query代表了想要传递的参数。

 

1.3 URL Scheme缺点

URL Scheme方式优点是开发简单,但弊端也很明显:

 

l  我们只能通过固定协议格式的链接来实现跳转,而且打开H5页面时,会出现一个提示框:“是否打开XXX”。用户确认了才会跳转到App中,增加了用户流程

 

l  微信、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方式体验更好。

 

注:因为目前App Link在中国大陆内使用必须要翻墙,使用不便。所以国内的Top第三方如友盟+暂未支持AppLink这种方式,Andriod端只能使用URL Scheme这种方式。但据小编所知,后续友盟+会支持AppLink这种拉起App方式。

 

对于开发者而言,要不要接第三方Deeplink工具?

 

虽然开发者可以自己配置实现Deeplink技术,但是现实中还是会遇到很多问题。比如进行资源配置、兼容性适配、模糊匹配等事项时需要耗费大量的人力和维护成本,实现起来相当复杂。现在常用的方法,也是小编比较推荐的方式,即直接接入像友盟+这样专业的第三方,这样可以大大缩短开发时间,保障服务稳定性。更值得一提的是,比如友盟+还为开发者提供统计Deeplink带来的回流新增数据,即这个链接带来了多少的App打开次数和新增用户,非常适合高效的团队做直接接入。对此小编就不做赘述了,大家可以自行去了解~~

 

友盟+Deeplink了解请点击:https://at.umtrack.com/LLzK1r

 

 

60s手把手教你如何接入:https://at.umtrack.com/5j0T1r

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149226.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Jenkins的三种启动方式「建议收藏」

    Jenkins的三种启动方式「建议收藏」前置条件Java8环境,参考:点击查看。(所有)docker环境,下载(第二种)ApacheTomcat环境,下载(第三种)一、war包启动下载Jenkins的war包打开终端命令行,找到war所在的路径运行java-jarjenkins.war浏览器打开http://localhost:8080,将会看到下图结果二、docker启动打开命令行终端或power…

    2022年5月18日
    544
  • pycharm语法提示_python怎么调用自己的函数

    pycharm语法提示_python怎么调用自己的函数参考博客:https://www.cnblogs.com/wendj/archive/2018/09/21/9685012.html第三步:鼠标放到函数名,按住ctrl即可查看

    2022年8月25日
    8
  • 项目范围管理:范围定义[通俗易懂]

    项目范围管理:范围定义[通俗易懂]定义范围是制定项目和产品详细描述的过程。 定义范围的主要作用是:明确所收集的需求哪些将包括在项目范围内,哪些将排除在项目范围外,从而明确项目、服务或输出的边界。 范围定义的内容和作用:由于在收集需求过程中识别出的所有需求未必都包含在项目中,所以定义范围过程就是从需求文件中选取最终的项目需求,然后制定出关于项目及其产品、服务或输出的详细描述。 准备好详细的项目范围说明书,对项目成功至关重要。应根据项目启动过程中记载的主要可交付成果、假设条件和制约因素来编制项目范围说明书。在项目规划过程中,随着对项目

    2022年9月22日
    3
  • 均值归一化详解_matlab数据归一化

    均值归一化详解_matlab数据归一化数据归一化[TOC]将所有的数据映射到同一尺度。​首先,为什么需要数据归一化?举个简答的例子。样本间的距离时间所主导,这样在样本1以[1,200]输入到模型中去的时候,由于200可能会直接忽略到1的存在,因此我们需要将数据进行归一化。比如将天数转换为占比1年的比例,200/365=0.5479,100/365=0.2740。一、最值归一化最值归一化(Nor…

    2022年10月11日
    11
  • 简述Python垃圾回收机制「建议收藏」

    简述Python垃圾回收机制「建议收藏」引言许多高级语言都具有自己的垃圾回收机制,以管理计算机内存,Python也不例外。对于垃圾回收机制的了解程度,成了开发人员是否真正了解Python的检验手段,在面试的时候许多面试官也喜欢以此作为题目考察面试者Garbagecollection(GC)概述现在的高级语言如java,c#等,都采用了垃圾回收机制,而不再是c,c++里用户自己管理维护内存的方式。自己管理内存极其自由,可…

    2022年6月15日
    26
  • MyBatis模糊查询的4种实现方式

    MyBatis模糊查询的4种实现方式1、根据姓名模糊查询员工信息1.1、方式一步骤一:编写配置文件步骤二:测试步骤三:分析此种方式需要在调用处手动的去添加“%”通配符。1.2、方式二说明:使用方式一可以实现模糊查询,但是有一点不方便的地方就是:在测试类中,调用selectList()方法传参时需要调用者手动的添加%号通配符,显然是麻烦的,能否在映射配置文件中直接将%号写好呢?有的朋友可能会这么想,好办,直接在配置文件中这么写:形如1:测试后发现,程序会报错,原因是:缺少单引号。这…

    2025年7月7日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号