文档开发者中心
我的

直达应用类快服务开发指南

直达应用类快服务主要通过开发者提供每个服务deeplink进行跳转,用户点击服务通过deeplink跳转到APP或者内RPK某个指定落地页。

1. Android Deeplink 开发指南

Deep Linking(译:深度链接)它的实现原理,是使用Uri Scheme协议来实现。

1.1 Deep Linking能做什么

  1. 它可以唤起指定应用并向其传递数据,根据传递的数据显示特定内容页的详细信息;

  2. 它不再受制于应用,只通过一个链接便可唤起应用并跳转到指定页面;

  3. 它使应用之间产生了联系,使应用不再孤立存在;

  4. 它优化了用户体验,这一点是它最终要达到的目的。

1.2 官方解释

当单击链接或编程请求调用Web URI意图时,Android系统按顺序依次尝试以下每一个操作,直到请求成功为止:

  1. 打开用户首选的应用程序,它可以处理URI,如果指定的话。

  2. 打开可以处理URI的惟一可用应用程序。

  3. 允许用户从对话框中选择应用程序。

官方文档:

2. URL Scheme 协议格式

2.1 URL Schema 协议格式:

scheme: //host/path:port/path?query1=xxxx&query2=xxxx    
例如:
deeplinkapp: //com.mytest.deeplink:8080/deeplinkDetail?param1=test

上面包含了 scheme、host、port、path、query。

  • deeplinkapp:代表该 Scheme 协议名称(scheme)

  • com.mytest.deeplink:代表 Scheme 作用于哪个地址域(host)

  • 8080:代表路径端口号(port)

  • deeplinkDetail:代表 Scheme 指定的页面(path)

  • param1:代表传递的参数名称(query)

3. 使用 DeepLink

3.1 修改manifest文件

我们需要在清单文件 manifest 中对于要开放给外部的activity添加 intent-filter。配置如下:

< activity
android: name = '.******Activity' >
<
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 = '****' < !—如android: scheme = 'deeplinkapp' -->
android: host = '****' < !—如android: host = 'com.mytest.deeplink'-- >
android: port = '****' < !—如android: port = '8080'-- >
android: path = '****' < !—如android: path = 'deeplinkDetail'-- >
/> <
/intent-filter> <
/activity>

3.2 代码处理

在对应 Activity 中的添加逻辑处理代码:

if (getIntent() != null && getIntent().getData() != null) {    
Uri uri = getIntent().getData();
if (uri != null) {
// 完整的url信息
String url = uri.toString();
// scheme部分
String scheme = uri.getScheme();
// host部分
String host = uri.getHost();
//port部分
int port = uri.getPort();
// 访问路劲
String path = uri.getPath();
// Query部分
String query = uri.getQuery();
//获取指定参数值
String param1 = uri.getQueryParameter('param1');
}
}

4. 测试

4.1 使用 adb 命令

$ adb shell am start - a android.intent.action.VIEW– d
例如:
adb shell am start - a android.intent.action.VIEW– d deeplinkapp: //com.mytest.deeplink:8080/deeplinkDetail?
param1 = test com.mytest.deeplink

4.2 使用web打开

具体可参考:示例

替换deeplink.html中的deeplink地址, 拷贝文件到手机, 使用浏览器打开html即可 <    
a href = 'deeplinkapp://com.mytest.deeplink:8080/deeplinkDetail?param1=test' > 打开APP < /a>

5. Apk和Rpk的deeplink查询或获取方法

5.1 Apk(Android)的deeplink查询或获取方法

1、请跟产品经理或者开发人员确认应用的页面已经支持deeplink。

Deeplink格式如下:

[scheme]://[host]/[path]?[query]

获取应用的AndroidManifest文件,找到对应页面的Activity配置。

示例:

< activity
android: name = 'com.example.android.GizmosActivity'
android: label = '@string/title_gizmos' >
<
intent - filter android: label = '@string/filter_view_http_gizmos' >
<
action android: name = 'android.intent.action.VIEW' / >
<
category android: name = 'android.intent.category.DEFAULT' / >
<
category android: name = 'android.intent.category.BROWSABLE' / >
<
data android: scheme = 'http'
android: host = 'www.example.com'
android: pathPrefix = '/gizmos' / >

<
/intent-filter> <
intent - filter android: label = '@string/filter_view_example_gizmos' >
<
action android: name = 'android.intent.action.VIEW' / >
<
category android: name = 'android.intent.category.DEFAULT' / >
<
category android: name = 'android.intent.category.BROWSABLE' / >

<
data android: scheme = 'example'
android: host = 'testhost'
android: pathPrefix = '/gizmos' / >
<
/intent-filter> <
/activity>

2、获取应用的AndroidManifest文件,找到对应页面的Activity配置。

3、查看intent-filter标签中的data标签,标签中的scheme和host的值分别对应deeplink中的scheme和host字段。

4、对于path,data标签中共支持path,pathPattern,pathPrefix三种设置方式,其意义分别如下:

  • Path:指定了完整的path路径,必须跟配置的值完全一样,应用才会处理;

  • pathPattern:指定了完整path的正则表达式,即传入的path必须满足pathPattern指定的正则表达式应用才会处理;

  • pathPrefix:指定了path的前缀,即传入的path以pathPrefix的值为前置即可处理。

5、query代表传入到页面的参数,其为key-value值对,多个参数间用&连接。

样例:name=zhangsan&age=26

根据以上样例获得的一个deeplink:example://testhost/gizmospath? name=zhangsan&age=26

5.2 Rpk(快应用)的deeplink查询或获取方法

详情参考快应用文件组织文档。

点赞
1
收藏
回复
12
分享
举报
浏览1246 发布于2019-10-16 06:25未知归属地
全部评论
最多点赞
最新发布
最早发布

关联阅读:卡片类快服务接入指南(二)

12楼回复于2019-10-16 06:35 未知归属地

关联阅读:卡片类快服务接入指南(一)

11楼回复于2019-10-16 06:34 未知归属地

关联阅读:内容接口类快服务接入指南(二)

10楼回复于2019-10-16 06:33 未知归属地

关联阅读:内容接口类快服务接入指南(一)

9楼回复于2019-10-16 06:32 未知归属地

关联阅读:直达应用类快服务接入指南(二)

8楼回复于2019-10-16 06:31 未知归属地

关联阅读:直达应用类快服务接入指南(一)


7楼回复于2019-10-16 06:31 未知归属地

关联阅读:卡片类快服务开发指南(四)

6楼编辑于2019-10-21 07:55 未知归属地

关联阅读:卡片类快服务开发指南(三)

5楼编辑于2019-10-16 06:30 未知归属地

关联阅读:卡片类快服务开发指南(二)

4楼编辑于2019-10-16 06:30 未知归属地

关联阅读:卡片类快服务开发指南(一)

3楼编辑于2019-10-16 06:30 未知归属地
共2页
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

目录 收起
1. Android Deeplink 开发指南
1.1 Deep Linking能做什么
1.2 官方解释
2. URL Scheme 协议格式
2.1 URL Schema 协议格式:
3. 使用 DeepLink
3.1 修改manifest文件
3.2 代码处理
4. 测试
4.1 使用 adb 命令
4.2 使用web打开
5. Apk和Rpk的deeplink查询或获取方法
5.1 Apk(Android)的deeplink查询或获取方法
5.2 Rpk(快应用)的deeplink查询或获取方法
了解社区公约,与您携手共创和谐专业的开发者社区。