android deeplink流程,Android Deeplink探究[通俗易懂]

android deeplink流程,Android Deeplink探究[通俗易懂]移动端深度链接,简称deeplink。这是一种通过uri链接到app特定位置的一种跳转技术,不单是简单地通过网页、app等打开目标app,还能达到利用传递标识跳转至不同页面的效果。参考CreateDeepLinkstoAppContent场景在推广、广告、应用间跳转的场景下,使用极多。这里将根据以下要点来介绍deeplink。intentintent-filterscheme原理介绍in…

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

移动端深度链接,简称deeplink。这是一种通过uri链接到app特定位置的一种跳转技术,不单是简单地通过网页、app等打开目标app,还能达到利用传递标识跳转至不同页面的效果。参考Create Deep Links to App Content

场景

在推广、广告、应用间跳转的场景下,使用极多。这里将根据以下要点来介绍deeplink。

intent

intent-filter

scheme

原理介绍

intent

首先我们要讲一下的是intent,在android中,intent作为“调用意图”来解释再合适不过了,其作用不用多说,就是为调用其他app所做的封装,这里就简单说一下。intent的调用有显式和隐式两种方式。

显式调用就好比你去别人家做客,显式调用类似于你知道朋友家的地址,浙江省杭州市西湖区某某小区几栋几零几,人家门牌都写的很清楚,你去找就很容易,指向性唯一。

隐式调用包含一定的条件,有action,category,data,type,extras,flags等等,每一种属性都类似于筛选条件。你说你要去杭州的山上玩,那么就会给你定位到杭州市的各种山,只要符合这个条件,他们都会一一被列出来,至于去哪里,就看你自己选。

intent-filter

intent-filter是针对你跳转的目标来讲的,就类似于门牌的修饰,他会在门牌上定义上述介绍的那些属性。当有intent发送过来的时候,就会筛选出符合条件的app来。最常见的就是

这俩属性可以说AndroidManifest.xml最常见的两行代码了,作用就是app第一个启动的activity。一个app里有很多activity,在启动的时候,系统并不知道哪个是第一个要启动的,那么他就发一个setAction为“android.intent.action.MAIN”、setCategory为“android.intent.category.LAUNCHER”的intent出来,被匹配的到Activity就会启动了。

Android Deeplink探究

deeplink所需要的几个属性大致有以下几个

android:host=”www.abc.com”

android:pathPrefix=”/work” />

这边一个个介绍过去,action.VIEW是打开一个视图,category.DEFAULT为默认,category.DEFAULT为设置该组件可以使用浏览器启动,这个是关键,从浏览器跳转,就要通过这个属性。data中的scheme、host、pathPrefix等等,这个是uri的链接,scheme可以导向app的跳转,是另一个关键。

接下来就是生成一个短链,通过浏览器打开就行了。比如”

好了,deeplink的原理及使用,就基本讲完了。

拓展

由于推广等场景的使用,许多都是由网页打开,针对一些未安装的用户进行跳转的。整个流程要求用户先去应用市场下载,下载完后再打开跳转。普通的deeplink实现方案已经不能满足,进而演化出一种延迟深度链接。

目前市场上流行的解决方案很多,类似魔窗,google的firebase dynamic-link,branch,facebook的app-links等等(我是不是要收一波广告费txtx)。翻看了一下源码及实现,大致是通过访问定向链接的时候(这个和短链不一样,短链是针对本地app的,长链是可以真正访问的http网页),会上传设备、ip、时间戳等信息,在app启动的时候,再去异步向他们服务器请求短链。也有和应用市场合作,先把信息传递给应用市场,在市场中打开也可以定向跳转。ps:iOS中的实现好像是访问浏览器中的cookie。

方案很多,各有优缺点,目前来看均可尝试,结合各平台的资源去实现。

总结

deeplink的使用大致就上述内容,还有深层次的内容,像是scheme协议等,有空深究了再做分享。

备注

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

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

(0)
上一篇 2022年6月29日 下午2:16
下一篇 2022年6月29日 下午2:36


相关推荐

  • oracle 字符串转数字

    oracle 字符串转数字字符串转成数字 CREATEORREPL to number CVARCHAR2 RETURNFLOATI BEGINBEGINN to number C RETURNN EXCEPTIONWHE END E

    2026年3月20日
    2
  • administrator改名字_计算机名和用户名

    administrator改名字_计算机名和用户名重命名计算机必须以管理员或Administrators组成员身份登录才能完成该过程。如果计算机与网络连接,则网络策略设置也可以阻止您完成此步骤。在控制面板中打开系统。在“计算机名称”选项卡,单击“更改”。在“计算机名”下键入计算机的新名称,然后单击“确定”。如果计算机是域的成员,则提示您提供用户名和用户密码才能重命名域中的计算机。注意要打开“系统”,请单击“开始”,指向“设置”,单击“控制面…

    2022年10月14日
    4
  • 等价类划分法测试用例设计举例「建议收藏」

    等价类划分法测试用例设计举例「建议收藏」一、基本概念等价类是指程序输入域的子集。等价类划分(EquivalancePartitioning)测试的思想:将程序的输入域划分为若干个区域(等价类),并在每个等价类中选择一个具有代表性的元素生成测试用例。该方法是常用的黑盒(BlackboxTesting)测试用例(Testcase)设计方法。一)划分等价类1.有效等价类与无效等价类…

    2022年10月18日
    3
  • 浅谈Spring事务隔离级别

    浅谈Spring事务隔离级别浅谈 Spring 事务隔离级别一 Propagation 事务的传播属性 Propagation key 属性确定代理应该给哪个方法增加事务行为 这样的属性最重要的部份是传播行为 有以下选项可供使用 PROPAGATION REQUIRED 支持当前事务 如果当前没有事务 就新建一个事务 这是最常见的选择 PROPAGATION SUPPORTS 支持当前事务 如果当前没有

    2026年3月26日
    3
  • UFW 修改before.rules等文件时reload无效

    UFW 修改before.rules等文件时reload无效

    2022年2月24日
    53
  • Maven安装配置及在idea中配置

    Maven安装配置及在idea中配置目录一、Maven是什么二、Maven安装及配置1.Maven本地安装2.Maven环境变量的配置3.Maven配置repository三、idea中创建mevenwebapp及配置1.配置settings2.创建mevenwebapp一、Maven是什么1.Maven是Apache下的一个纯java开发的开源项目,它是一个项目管理…

    2022年5月28日
    61

发表回复

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

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