App开启深度链接

一、理解

深度链接其实就是一个可以直接打开app或者进入到app某一个落地页的url,直接在浏览器里面打开app

oh!不就是之前百度关键词”android 浏览器启动app”吗!!!

二、功能实现

废话不多说直接上代码!!! android端主要是在Manifest.xml里面配置:

<activity android:name=".BrowserLunchActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>

        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>

        <data
            android:host="blog"
            android:scheme="veidy">
        </data>
     </intent-filter>
</activity>

在项目里面新建一个BrowserLunchActivity,并在注册的时候配置如上属性。

web端的url就可以直接这样写啦:

 <a href="veidy://blog">点击打开app</a>

OK!深度链接定制成功。 实现是ok了,为什么是这么配置呐? 首先看看

<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>

直接看看官网的解释: 《App开启深度链接》 照着撸吧~ 最重要的是下面data的定义:

<data
  android:host="blog"
  android:scheme="veidy">
</data>

scheme:

url之所以能定位到我们的app就是在data里面设置的scheme 如果只设置scheme=”veidy”,在url的href里面写成href=”veidy://” 一样可能打开我们app

host:

是域名,其实就是一个适当的描述,我们可以自定义,如上我定义一个字符串”blog”,这时在url的href里面写成href=”veidy://blog”,也可以用包名定义如”com.veidy.blog.deeplinks”,那在url的href里面写成href=”veidy://com.veidy.blog.deeplinks

指定到单独的落地页:

上面已经实现的深度链接的功能,在url里面打开我们的app,接下来需求实现的是不同的url,跳转到app不通的页面(Activity) 如果我要到SecondActivity,就如下配置:

 <data
   android:host="test"
   android:path="/appsecond"
   android:scheme="veidy">
 </data>

如果我要到ThirdActivity,就如下配置:

<data
  android:host="test"
  android:path="/appthird"
  android:scheme="veidy">
</data>       

发现我们用来区分的就是通过path!!!!ps: pathPrefix、pathPattern 一样能实现

传值:

如果我在跳转到app某个落地页的时候还需要传值呢?很简单了,直接拼在url后面喽。。。 <a href="veidy://test/appthird?key=1&name=veidy&sex=男">进入到app指定页面ThirdActivity并传递数据 veidy://test/appthird</a>

然后我们在指定的落地页取值就好啦~~~直拉上debug时的一个图,很清楚 《App开启深度链接》

Demo源码(java/kotlin 两个版本):DeepLinks

    原文作者:移动开发
    原文地址: https://my.oschina.net/aibenben/blog/920462
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞