HarmonyOS NEXT 部署
环境需求
最低支持: API 12 Release
安装SDK
进入项目的根目录,执行以下命令
ohpm install @tingyun/sdk-core
安装指定版本SDK命令示例
ohpm install @tingyun/sdk-core@1.2.0
确认项目适配字节码格式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'
import axios from '@ohos/axios'
export default class MyAbilityStage extends AbilityStage {
onCreate(): void {
tingyun.init({
// redirect服务器地址, 在控制台设置页面获取
redirectHost: '<Redirect服务器地址>',
// appKey, 在控制台设置页面获取
appKey: '<AppKey>',
// 上下文
context: this.context,
// 如果使用axios, 可传入axios对象采集axios发送的网络请求
axios: axios
})
}
}
设置用户ID(可选)
import tingyun from '@tingyun/sdk-core'
tingyun.init({
// ...
})
// 设置应用的用户ID
tingyun.setUserId('<userId>')
验证数据上报
嵌码完成后,启动APP,在IDE中打开Log -> HiLog菜单,选择对应的APP,查看日志,搜索tag为Tingyun
的日志,如果存在init success
关键字的日志说明数据上报成功。
SDK 配置选项
import common from '@ohos.app.ability.common'
export enum LogLevel {
DEBUG,
INFO,
WARN,
ERROR,
NONE
}
export type RecordRule = {
// 需要采集此参数的域名/URL配置。目标URL包含于这项配置才会采集,如果不配置本条规则会对所有URL生效
url?: string
// 获取全部请求头, 默认空
reqHeaders?: string[]
// 请求体配置, 默认空
reqBody?: string[]
// 获取全部返回头, 默认空
resHeaders?: string[]
// 返回体配置, 默认空
resBody?: string[]
}
export type NetworkConfig = {
// 网络请求采集开关, 默认false
enabled?: boolean
// 跨应用追踪开关, 默认false
trackingEnabled?: boolean
// 采集header body开关, 默认false
recordEnabled?: boolean
// 采集数据白名单
recordConfig?: RecordRule[]
// 采集数据黑名单
recordBlockConfig?: RecordRule[]
// 采集的body截断长度, 单位KB
bodyMaxSize?: number
// 第三方apm请求头支持
apms?: string[]
// trace propagators
propagators?: string[]
}
export type CrashConfig = {
// 崩溃采集总开关, 默认true
enabled?: boolean
// js崩溃采集开关, 默认true
jsCrashEnabled?: boolean
// cpp崩溃采集开关, 默认true
cppCrashEnabled?: boolean
}
export type FreezeConfig = {
// 卡死监控开关, 默认false
enabled?: boolean
}
export type LaunchWaitingPolicy = {
cold?: {
// 启动耗时事件等待时间, 默认30000ms
launchEvent?: number
// ability生命周期等待时间, 默认10000ms
ability?: number
// page生命周期等待时间, 默认15000ms
page?: number
},
hot?: {
// 启动耗时事件等待时间, 默认15000ms
launchEvent?: number
// 启动耗时事件等待时间, 默认10000ms
ability?: number
}
}
export type UserExperienceConfig = {
// 总开关, 默认false
enabled?: boolean
// 启动监控开关, 默认true
launchEnabled?: boolean
// 页面监控开关, 默认true
pageEnabled?: boolean
// 操作监控开关, 默认true
userActionEnabled?: boolean
// 自定义启动时间结束点开关, 默认false
customLaunchEnd?: boolean
// 全量trace采集开关, 默认false
traceEnabled?: boolean
// 慢操作阈值, 默认3000ms
slowUserActionThreshold?: number
// 慢启动阈值, 默认3000ms
slowLaunchThreshold?: number
// 热启动阈值, 默认30s
hotStartThreshold?: number
// 慢可交互阈值, 默认1000ms
slowPageLoadThreshold?: number
// 慢首屏阈值, 默认3000ms
slowPageDurationThreshold?: number
// 启动耗时计算等待策略
launchWaitingPolicy?: LaunchWaitingPolicy
// 判断为操作错误的错误请求占比, 默认为100
actionFailureThreshold?: number
}
export type UserActionConfig = {
// 总开关, 默认false
enabled?: boolean
}
export type WebviewConfig = {
// 总开关, 默认false
enabled?: boolean
// web sdk注入开关, 默认为true
webSdkEnabled?: boolean
// 注入jsProxy开关, 默认true
jsProxyEnabled?: boolean
// JS片段注入开关, 默认为true
jsSnippetEnabled?: boolean
}
/**
* 应用配置
*/
export type InitConfig = {
// redirect服务器地址
redirectHost: string
// 应用appKey
appKey: string
// 上下文
context: common.Context
// 日志级别, 默认LogLevel.INFO
logLevel?: LogLevel
// 数据是否使用http发送数据, 默认false, 使用https发送
httpEnabled?: boolean
// axios对象, 需要拦截axios时需要传入
axios?: any
// 最大获取的栈深度, 默认20
stackDepth?: number
// 是否使用历史数据协议上报(听云3.8.0.0和以下版本平台需要设置为true),默认为false
legacyDataProtocol?: boolean
// 构建ID
buildId?: string
// init内部部分逻辑是否采用异步初始化, 默认为false
asyncInit?: boolean
// 网络请求采集配置
network?: NetworkConfig
// Crash监控配置
crash?: CrashConfig
// AppFreeze监控配置
freeze?: FreezeConfig
// 用户体验配置
ue?: UserExperienceConfig
// 用户行为分析配置
ua?: UserActionConfig
// webview配置
webview?: WebviewConfig
}
注: init传入的配置为SDK初始配置,在SDK与服务端通信后会优先以服务端下发的配置为准