热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深度链接、延迟深度链接、AppLinks以及关于LinkedME实现深度链接的原理解析

开始之前,我们先介绍两个概念:深度链接(DeepLinking)和延迟深度链接(DeferredDeepLinking)。深度链接我们通过例子来说明这个问题,比如说我们使用淘

开始之前,我们先介绍两个概念:深度链接(Deep Linking)和延迟深度链接(Deferred Deep Linking)。
深度链接
我们通过例子来说明这个问题,比如说我们使用淘宝,看到一个宝贝很不错,这时候呢我们会将宝贝的信息分享到朋友圈或者分享给朋友,我们的朋友点击,在Android M系统之前呢一般会打开一个H5界面,界面中会有一个按钮(像“打开手机淘宝”),如果手机上有淘宝的话会打开手机淘宝,而深度链接呢,不但要打开手机淘宝,还要跳转到手机淘宝中该宝贝的展示界面。如果是Android M系统中,就不需要再打开一个H5界面而是可以点击链接直接打开手机淘宝,因为Android M引入了App Links功能。
延迟深度链接
在深度链接的基础上,并且手机上没有指定的App,需要下载、安装之后,在定位到App中特定的界面。
App Links
我们都知道从Android M(6.0)开始,Android系统实现了App Links功能:在系统中点击URL会定位到指定的App进行处理,而不是像以前一样打开浏览器。想了解App Links的具体实现可以参考下面这篇文章:
Android M App Links: 实现, 缺陷以及解决办法
为了实现App Links,需要我们做如下配置:
1、我们需要在AndroidManifest.xml进行配置,如下:

  android:name="com.your.app.activity.ParseDeepLinkActivity"
...>

"true">
"http" android:host="yourdomain.com" />
"https" android:host="yourdomain.com" />
...

这里配置的意思是,如果在系统中点击“http[s]://youdomain.com”开头的URL,系统会打开该activity进行处理。前提是通过验证,验证什么呢,客观莫着急,我们下边会解释。android:autoVerify就是用来开启验证的,data是用来配置我们处理什么样的URL.
2、验证:当你请求成为某URL的默认处理App的时候,系统回去验证,URL所属的站点是否同意你来处理。系统会去站点的该地址https://yourdomain.com/.well-known/statements.json取一个文件,如果文件存在,并且通过验证的话,以后在系统中,你的App就会成为此URL的默认处理App。statements.json的格式为下:

[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.mycompany.myapp",
"sha256_cert_fingerprints": ["6C:EC:C5:0E:34:AE....EB:0C:9B"]
}
}]

“package_name”填写你App的包名;”sha256_cert_fingerprints”你App签名文件的SHA256指纹.TIPS:现在Android验证的时候,只支持https协议
LinkedME
从上边的介绍大家应该都对App Links有了一定的了解,App Links具有一定的局限性:
(1)App Links只能在Android M以上使用;
(2)你得有自己的Web站点,并且Web站点支持Https协议
LinkME之类的服务可以帮助我们快速搭建深度链接,下边是个人分析的LinkME原理:
原理图


推荐阅读
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
author-avatar
手机用户2502855763
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有