API参考
初始化
init
调用后开始拉取服务端配置以及监听各个事件。为了确保监听到的信息比较完善,请将init放到最前面。推荐在App初始化前调用该方法,随后在start调用后开始上报。
js
interface InitConfig {
aid: number // 项目唯一标识,必传
token: string // 项目 token,必传
userId?: string // 用户id,
deviceId?: string // 设备id
useLocalConfig?: boolean // 是否只使用本地配置,默认为false,则会和平台配置的规则进行merge操作
// 采样配置 和 插件配置 的具体配置可在详细配置中查看
sample?: SampleConfig // 采样配置
plugins?: { ... } // 插件配置,详情见 「插件配置」 页面
domain?: string// 上报域名,不建议配置, 特殊部署时需要, 不配置时使用sdk内部的默认域名 }
client.init(c: InitConfig) => void // 类型
// 调用
client.init({
aid: 66, // 替换成您的aid
token:'xxx-xxx' // 替换成您的token
})
config
更改通用属性上下文,在start之前调用可用于异步设置userId和deviceId。
js
interface MiniProgramUserConfig {
pid: string
userId: string
deviceId: string,
}
client.config(config: MiniProgramUserConfig) => void // 类型
// 调用:用于异步修改通用属性: userId & deviceId
client.config({
userId: 'userId_test',
deviceId: 'deviceId_test'
})
start
开始上报数据,一般在异步修改通用属性后触发。
js
client.start()
举个例子:如果您需要等代码某个接口下发后拿到UserId后再上报,可以像如下伪代码方式接入:
js
// 开始收集监控数据
client.init({
aid: 123, // 替换成您的aid
token:'xxx-xxx' // 替换成您的token
})
App({
onLaunch() {},
onShow() {
getUserId().then(res => {
// 设置 userId
client.config({
userId: res.userId
})
// 开始上报数据
client.start()
})
},
})
更改通用上下文
context.set
设置自定义维度,context是一个全局维度的上下文,对所有事件生效。context更新后,只对之后包装的事件生效。因为init时会发送一些事件,比如pageview。如果要设置一些初始化的上下文,需要在init之前设置context。
js
interface ContextAgent {
set: (k: string, v: any) => ContextAgent
merge: (ctx: Record<string, any>) => ContextAgent
delete: (k: string) => ContextAgent
clear: () => ContextAgent
get: (k: string) => string
toString: () => Record<string, string>
}
client.context.set('key', 'value') // 设置context中的单个key
client.context.merge({ key: 'value' }) // 将context 和 传入的对象合并,生成新的context
client.context.delete('key') // 删除context中的某个key
client.context.clear() // 清空context
主动上报
sendPageview
上报一次PV,重复上报相同PID时也会上报。
说明
程序中有relaunch事件可以重新渲染当前页面。
js
client.sendPageview(pid: string) => void //类型
client.sendPageview('pid_test') // 调用
sendPageviewWithHide
对当前的PID进行结算停留时长,调用一次就会消费掉当前PID,多次调用时,只会上报一次。
js
const enum PageviewSourceType {
init = 'init',
history = 'history',
user_set = 'user_set',
hide = 'hide',
unload = 'unload',
}
client.sendPageviewWithHide(source = PageviewSourceType.hide) => void // 类型
client.sendPageviewWithHide('hide') // 调用
sendEvent
上报一个自定义事件。
js
interface CustomEventPayload {
/** 自定义事件名称 */
name: string
/** metrics 上报的是可以被度量的值,也就是数值 */
metrics?: { [key: string]: number }
/** categories 上报的是分类,维度,用来做筛选,分组 */
categories?: { [key: string]: string }
}
client.sendEvent(data:CustomEventPayload) => void // 类型
// 调用
client.sendEvent({
name: "name_test",
metrics: {
count: 1,
},
categories: {
user: "user_x",
pathname: "xxxxx",
},
})
sendLog
上报一个自定义日志。
js
export interface CustomLogPayload {
/** 额外的附加信息, 在上报的时候 number会被分流到metric string会被分流到categories */
extra?: { [key: string]: string | number } // /** 自定义事件内容,可以是日志或者对象的 JSON 表示 */
content: string
/** 自定义事件级别,默认是 info, 可枚举项 debug | info | warn | error */
level?: 'debug' | 'info' | 'warn' | 'error'
}
client.sendLog(data: CustomLogPayload) => void // 类型
// 调用
client.sendLog({
level: 'debug',
content: 'function `test` was invoked',
extra: {
num: 1,
country: 'SomeCountry'
}
})
captureException
手动捕获JS异常,传入错误的name、message、stack即可。
js
export interface JsError {
/** 错误名称 */
name?: string
/** 错误信息 */
message: string
/** 堆栈 */
stack?: string
/** 错误文件名 */
filename?: string
lineno?: string
colno?: string
}
client.captureException(error: JsError, extra?: { [key: string]: string }) => void // 类型
// 调用
client.captureException({
name: 'Error',
message: 'Test Error'
})
addBreadcrumb
添加用户行为栈,不会单独上报,JS Error上报时携带该上报信息。
js
interface Breadcrumb {
/** route | http */
type: string
/** methodName | url */
message: string
/** errMsg | post,get | tap */
category: string
/** route {url} | http {mehtod,url,status_code} */
data?: { [key: string]: string }
}
client.addBreadcrumb(breadcrumb: Breadcrumb) => void // 类型
client.addBreadcrumb({
type: 'route',
message: 'navigateTo',
category: 'ok',
data: 'pages/index/index'
})