开发者可以通过创建深度链接来将用户转到应用中的特定页面。如果用户已在设备上安装您的应用,SE SDK 会转向链接中指定的页面。用户通过链接打开应用后,SDK 就可以读取深度链接数据了,具体步骤如下:
有两种方式实现深度链接
方式一: Deep linking
配置module.json5文件
如果用户已经安装了您的应用,那么在与包含深度链接信息的链接互动时,应用就会打开。SE SDK 能够解析深度链接信息,在应用中使用。要设置深度链接,请选择一个唯一的 Scheme 名称 。
开发者可以进行设置,在用户与深度链接互动时启动特定活动。为此请进行下列操作:
- 在您的 module.json5 文件中配置 actions
- 在您的 module.json5 文件中配置 Scheme
- 在您的 module.json5 文件中配置 host
以下示例展示了如何在module.json5文件中配置scheme,并以 scheme 名称 sedemo 将其打开。
{
"module": {
// ...
"abilities": [
{
// ...
"skills": [
{
"actions": [
// actions不能为空,actions为空会造成目标方匹配失败
"ohos.want.action.viewData"
],
"uris": [
{
// scheme必选,可以自定义,以link为例,需要替换为实际的scheme
"scheme": "link",
// host必选,配置待匹配的域名
"host": "www.example.com"
}
]
}
]
}
]
}
}
更详细配置步骤,请参考鸿蒙官方文档
方式二: App Linking
配置module.json5文件,更详细配置步骤,请参考鸿蒙官方文档
{
"module": {
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ts",
"icon": "$media:icon",
"label": "$string:EntryAbility_label",
//请将exported配置为true;如果exported为false,仅具有权限的系统应用能够拉起该应用,否则无法拉起应用
"exported": true,
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:start_window_background",
"skills": [
{
"entities": [
// entities必须包含"entity.system.browsable"
"entity.system.browsable",
// 此配置项为样例,请根据实际情况修改
"entity.system.home"
],
"actions": [
// actions必须包含"ohos.want.action.viewData"
"ohos.want.action.viewData",
// 此配置项为样例,请根据实际情况修改
"action.system.home"
],
"uris": [
{
// scheme须配置为https
"scheme": "https",
// host须配置为关联的域名
"host": "子域.link.solar-engine.com"//填写热力引擎后台deeplink设置中的子域,同时该域名:(子域.link.solar-engine.com)也需要在鸿蒙后台创建。具体请参考鸿蒙官方文档https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-linking-startup-V5
}
],
// domainVerify须设置为true
"domainVerify": true
}
]
}
]
}
}
通过深度链接进行再归因
要对用户进行再归因,请在 APP 收到深度链接内容时调用 SESDK 的 appDeeplinkOpenURI 方法,SESDK 就会在深度链接中寻找新的归因信息。如果 SESDK 找到新信息,会将其转发至服务器进行再归因。
方法示例:
public static appDeeplinkOpenURI(uri: string)
调用示例:
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { url } from '@kit.ArkTS';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
// 如传入的url为:link://www.example.com/programs?action=showall
let uri = want?.uri;
if (uri) {
//创建deeplink 链接监听
const deepLinkListener: DeepLinkListener = {
onReceived(code: number, deeplinkInfo?: DeeplinkInfo) {
if (code===0) {
//处理deeplink回调成功逻辑
}
}
};
//设置 deeplink 链接监听
SolarEngineManager.setDeepLinkListener(deepLinkListener);
SolarEngineManager.appDeeplinkOpenURI(uri);
}
}
}
注:setDeepLinkListener需要在appDeeplinkOpenURI方法前调用,否则无法触发DeepLinkListener回调
DeeplinkInfo类参数说明:
参数名称 | 参数含义 | 参数类型 |
sedpLink | 跳转参数 | string |
turlId | 7位短链 | string |
from | 链接类型 | string |
customParams | 自定义参数 | Record<string,Object> | undefined |
code含义说明:
错误码 | code码释义 |
0 | 成功 |
1 | URI 为空 |
2 | URI 非法 |
主动上报唤醒事件
开发者可以通过上报唤醒事件来进行拉活归因和业务分析。
注:如果使用了SDK的deeplink功能,调用了appDeeplinkOpenURL方法,则无需再手动调用trackAppReEngagement方法
方法示例:
public static trackAppReEngagement(seAppReEngagementModel: SEAppReEngagementModel)
调用示例:
import { SolarEngineManager } from '@solarengine/core'
SolarEngineManager.trackAppReEngagement(new SEAppReEngagementModel());