HarmonyOS NEXT 部署
基调听云用户体验监控 SDK Harmony端集成部署说明
环境需求
最低支持: HarmonyOS开发者版本(即API版本)5.0.0(API 12 Release)
安装SDK
远程安装
进入工程 根目录,执行以下命令
ohpm install @tingyun/sdk-core
如果需要安装指定版本的SDK, 可手动指定版本(<version>为具体的版本号)
ohpm install @tingyun/sdk-core@<version>
内网仓库安装
内网环境用户建议将涉及到的har包上传至企业内网仓库后,通过内网仓库完成安装操作
在听云控制台管理-下载中心-App端-Harmony中下载最新SDK,解压下载的zip,将tingyun-core_version.har上传至企业内网仓库
进入工程根目录,执行以下命令
ohpm install @tingyun/sdk-core
如果需要安装指定版本的插件, 可手动指定版本(<version>为具体的版本号)
ohpm install @tingyun/sdk-core@<version>
确认项目适配字节码格式HAR包
SDK HAR包为字节码格式, 需要将工程级build-profile.json5中useNormalizedOHMUrl设置为true
{
"app": {
"products": [
{
"buildOption": {
"strictMode": {
"useNormalizedOHMUrl": true
}
}
}
]
}
}
权限配置
| 权限名称 | 用途 | 是否必须 |
|---|---|---|
| ohos.permission.INTERNET | SDK发送数据。不配置SDK无法启动 | 是 |
| ohos.permission.GET_NETWORK_INFO | 获取网络连接信息。配置后可以获取网络类型和连接方式信息 | 否 |
| ohos.permission.STORE_PERSISTENT_DATA | 存储设备ID。配置后SDK可以更准确的获取到设备ID | 否 |
初始化SDK
在entry类型模块AbilityStage的onCreate方法中初始化SDK
import tingyun from '@tingyun/sdk-core'
export default class MyAbilityStage extends AbilityStage {
onCreate(): void {
tingyun.init({
// redirect服务器地址, 在控制台设置页面获取
redirectHost: '<Redirect服务器地址>',
// appKey, 在控制台设置页面获取
appKey: '<AppKey>',
// 上下文
context: this.context
})
}
}
注:
- 从
1.7.0版本开始,tingyun.init返回值类型由Promise<void>改为void,避免误用await导致阻塞应用启动流程。如果历史代码中存在await调用,IDE会提示无效,请及时移除 - SDK内部启动流程为异步,部分API需要等待SDK启动完成后才能调用。如需在SDK启动后执行逻辑,请参考SDK启动状态管理章节
可选设置
配置首次启动模块开关
默认情况下,SDK首次启动仅开启崩溃数据采集,其他功能模块需要与服务端交互后开启。
如需在首次启动时就启用其他功能模块,可以在tingyun.init时手动配置对应模块的开启状态。
示例:
import tingyun from '@tingyun/sdk-core'
tingyun.init({
// 其他配置...
network: {
// 打开网络请求采集
enabled: true
},
ue: {
// 打开用户体验数据采集,包括启动、页面、操作采集
enabled: true
},
webview: {
// 打开webview数据采集
enabled: true
}
})
更多配置选项请参考API文档中的"SDK配置选项"章节
网络请求采集
SDK支持多种网络请求数据采集方式,其中Axios和RCP需要进行相应配置。
Axios
SDK支持@ohos/axios库,主要包括两种配置方式:
- 在
tingyun.init时传入axios实例:import tingyun from '@tingyun/sdk-core'
import axios from '@ohos/axios'
tingyun.init({
// 其他配置...
// 传入axios实例对象
axios: axios
}) - 使用
tingyun.registerAxiosInstance注册axios实例(可通过多次调用注册多个):import tingyun from '@tingyun/sdk-core'
import { axiosInstance } from './your-axios-config'
// 普通注册(等待网络开关初始化完成)
tingyun.registerAxiosInstance(axiosInstance)
// 立即注册(不等待网络开关初始化完成)
// 使用场景:当用户需要控制拦截器注入时机,希望提前注入听云拦截器以确保拦截器执行顺序时,可以使用此选项
tingyun.registerAxiosInstance(axiosInstance, { immediate: true })
RCP
RCP数据采集需要在调用createSession时加入SDK提供的拦截器:
import tingyun from '@tingyun/sdk-core'
const session = rcp.createSession({
// 其他配置...
// 加入拦截器
interceptors: [new tingyun.RCPInterceptor()]
})
首次启动采集配置
如需采集首次启动时的网络请求数据,需要在tingyun.init时开启网络请求采集:
import tingyun from '@tingyun/sdk-core'
tingyun.init({
// 其他配置...
network: {
enabled: true
}
})
用户体验监控
用户体验监控包括启动监控、页面监控和操作监控。
启动监控配置
如需采集首次启动数据,需要在tingyun.init时开启用户体验监控:
import tingyun from '@tingyun/sdk-core'
tingyun.init({
// 其他配置...
ue: {
enabled: true
}
})
页面和操作监控配置
页面和操作监控已支持自动采集,无需手动调用 API。