Android Deeplink配置

Android Deeplink配置Deeplink启动应用配置注意事项1.Deeplink格式说明  Deeplink是目前使用广告跟踪非常热门的一种方式,Deeplink的链接类型一般是schema://host/path?params样式。2.为接收Deeplink配置intent-filter  在Android设备中,点击Deeplink后可以打开指定应用,为了能够正确定位到需要打开的应用,并正…

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

Deeplink启动应用配置注意事项

1. Deeplink格式说明

  Deeplink是目前使用广告跟踪非常热门的一种方式,Deeplink的链接类型一般是schema://host/path?params样式。

2. 为接收Deeplink配置intent-filter

  在Android设备中,点击Deeplink后可以打开指定应用,为了能够正确定位到需要打开的应用,并正确打开指定的Activity,需要应用开发过程中对Intent进行过滤接收进行配置(就是intent-filter),具体做法是在AndroidManifest.xml中对Activity声明的时候添加<intent-filter><data>节点,配置schema和一些必要的区分属性参数(如:hostpath等)即可,配置的属性参数越多越详细,越能保证唯一性,准确打开需要打开的应用,而不是弹出打开应用选择框。

<intent-filter>标签包含以下属性

  • 动作:外部打开必须配置成ACTION_VIEW,这样外部的打开指令才能到达;
  • 范畴:必须包含DEFAULT,这个category允许你的Activity可以接收隐式Intent,如果没有配置这个,Activity只能通过指定应用程序容器名称打开;也必须包含BROWSABLE,这个category允许你的intent-filter可以在Web浏览器中访问,如果没有配置这个,点击Web浏览器中的Deeplink链接将无法解析并打开Activity;
  • 数据:需要添加一个或者多个<data>标签,每一个<data>标签都描述了什么样格式的URI将会分派到Activity进行处理。每一个<data>标签至少且必须包含一个android:schema属性。
    你可以添加更多的属性来提高Activity所能接收的URI类型的精准度。举个例子:你的应用会在多个activity中接收类似的URI(相同的schemahost),但这些URI根据有这不同的路径(path),在这种情况下,使用android:path属性,或者使用路径正则表达式(pathPattern)和路径前缀(pathPrefix)变种来区分对于不同的路径,系统需要打开哪个Activity。

测试的Deeplink链接:rsdkdemo://rs.com/test?referer=Deeplink_Test

Activity的配置intent-filter如下:

<activity  android:name="com.rastargame.sdk.oversea.demo.RSDemoActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:launchMode="singleTop" android:screenOrientation="sensor" android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <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:scheme="rsdkdemo" android:host="rs.com" android:pathPrefix="/test"/>
    </intent-filter>
</activity>

说明:
1.<data>中的属性参数配置必须要根据Deeplink来配置,尽可能配置更多属性参数保证唯一,否则点击deeplink连接会出现选择打开应用页面。
2.如果需要在浏览器中也能打开应用,需要在intent-filter中添加<category android:name="android.intent.category.BROWSABLE" />这个配置(这个属性的含义就是在特定的情况下,可以在浏览器中打开Activity)

3. intent-filter配置注意事项

  1. 在有<action android:name="android.intent.action.MAIN" /><intent-filter>中添加<data>标签配置会无法通过Deeplink正确打开相应页面。一个Activity是可以有多个<intent-filter>标签,所以添加另外的<intent-filter>标签进行配置;
  2. <category android:name="android.intent.category.LAUNCHER" /><category android:name="android.intent.category.DEFAULT" />两个是相互冲突的,同时添加这两个category会导致桌面图标无法显示的问题;

说明:如果你添加<intent-filter>Activity不包含android.intent.action.MAIN<action>标签,就无需配置多个intent-filter

4. Deeplink数据解析

  点击Deeplink打开应用的时候,会将Deeplink传入到应用,应用在Activity的onCreateonNewIntent对数据就进行处理。

5. Deeplink测试

  直接使用命令行adb测试deeplink,使用命令:

adb shell am start -a android.intent.action.VIEW -d "rsdkdemo://rs.com/test?referer=Deeplink_Test"
  1. 首先,需要编写一个简单的html文件,保存为test.html,html文件内容如下:
<!DOCTYPE html>
<head>
    <meta charset="UTF-8" />
    <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,minimal-ui">
</head>
<html>
    <input type="button" value="点击我打开Deeplink" onclick="javascrtpt:window.location.href='rsdkdemo://rs.com/test?referer=Deeplink_Test'">
</html>
  1. 然后将html文件拷贝到设备中,使用浏览器打开,点击按钮即可打开应用。

  测试Facebook deeplink需要集成Facebook SDK,然后完成相应的配置,然后通过广告助手测试DeepLinked,测试设备上必须安装了Facebook客户端,并且登录了开发者账号对应的Facebook账号。

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

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

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


相关推荐

  • 微信小程序带参数跳转页面(小程序跳转第三方网页)

    //wxml&lt;textwx:for="{{titles}}"wx:key="{{index}}"bindtap=’changeClassify’data-id="{{index}}"&gt;{{item.name}}&lt;/text&gt;//jsfunctionchangeClassify(e){//letid=e.currentTarget.da…

    2022年4月12日
    58
  • docker搭建kafka集群

    docker搭建kafka集群docker搭建kafka集群我在M1mbp上使用的以下镜像新建文件zk-kafka-docker-compose.ymlversion:”2″services:zookeeper:user:rootimage:docker.io/zookeeperports:-“12181:2181″environment:-ALLOW_ANONYMOUS_LOGIN=yesvolumes:-zoo

    2022年4月25日
    34
  • React之redux学习日志(redux/react-redux/redux-saga)

    React之redux学习日志(redux/react-redux/redux-saga)

    2020年11月19日
    161
  • html超链接悬浮,下列css代码,能控制鼠标悬浮其上的超链接样式

    html超链接悬浮,下列css代码,能控制鼠标悬浮其上的超链接样式摘要:下列不属特性品的主要质量于食。标悬置为将E1端道化的命令是非信方式口设。新中国成0年立7来,上的式特色民主协商中国局面)的成(已形,特色提供中国主义制度障要保为建完善立和了重社会。…下列不属特性品的主要质量于食。变动成本法下,制鼠包括期间成本。标悬置为将E1端道化的命令是非信方式口设。在全基础竣后的售的()内程报业务完成后交付应数据。些积制度作用建立极的有哪务员和完回避善公。特点休的公务…

    2022年7月19日
    12
  • 车载逆变器设计[通俗易懂]

    车载逆变器设计[通俗易懂]逆变器,别称为变流器、反流器,是一种可将直流电转换为交流电的器件,由逆变桥、逻辑控制、滤波电路三大部分组成,主要包括输入接口、电压启动回路、MOS开关管、PWM控制器、直流变换回路、反馈回路、LC振荡及输出回路、负载等部分,可分为半桥逆变器、全桥逆变器等。目前已广泛适用于空调、家庭影院、电脑、电视、抽油烟机、风扇、照明、录像机等设备中  逆变变压器原理  它的工作原理流

    2022年6月8日
    34
  • Oracle与MySQL区别「建议收藏」

    Oracle与MySQL区别「建议收藏」1、Oracle是大型数据库,而MySQL是中小型数据库。但是MySQL是开源的,Oracle是收费的2、Oracle的内存占有量非常大,而mysql非常小3、MySQL支持主键自增长,插入时会自动增长。Oracle主键一般使用序列。4、MySQL分页用limit关键字,而Oracle使用rownum字段表明位置5、MySQL中0、1判断真假,Oracle中truefalse6、MySQL中命令默认commit,但是Oracle需要手动提交7、MySQL在windows环境下大小写不敏感,在l

    2022年9月14日
    0

发表回复

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

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