本文为您介绍Web端为您提供的主要API,您可以结合埋点规划调用对应API进行埋点。
作用:是对SDK实例进行初始化配置。
定义:init(options: InitParams): void
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
options |
| 是 | SDK需要明确知道上报到哪个应用,上报到哪个DataFinder服务地址,开启哪些功能模块,这些就需要在SDK进行初始化时在init接口中进行配置,init涉及的参数及配置说明见下表。 |
参数分类 | 字段 | 字段值类型 | 必填 | 字段说明 |
|---|---|---|---|---|
基础参数 | app_id | number | 是 | 应用ID,用于标识业务产品,即表明埋点采集的是哪个应用的数据。在DataFinder的控制台创建应用后会自动为您生成对应应用的应用ID。 |
log | boolean | 否 | 用于设置是否需要打开日志,设置为true后,控制台会打印调试信息,便于您在集成SDK时通过控制台的日志信息验证SDK集成是否成功。 | |
channel | string | 否 | 用于设置采集数据的上报通道,每个应用只能设置唯一一个channel,请根据您当前使用的DataFinder服务的环境类型和所在地域情况,设置合适的channel:
| |
channel_domain | string | 否 | 用于设置数据上报到DataFinder的哪个服务地址:
说明
| |
PV事件开关 | disable_auto_pv | boolean | 否 | 设置是否关闭采集预置PV事件——predefine_pageview事件。 |
全埋点事件开关 | autotrack | boolean 或 object | 否 | 设置是否开启元素自动采集能力点击/曝光能力,详情请见下文的全埋点模块。 |
停留时长开关 | enable_stay_duration | boolean | 否 | 设置是否开启统计页面级别的停留时长能力,详情请见下文的停留时长模块及API. |
打通H5开关 | enable_native | boolean | 否 | 设置是否为内嵌H5与APP进行数据打通。 |
ab实验事件开关 | enable_ab_test | boolean | 否 | 设置是否需要开启A/B实验功能。设置为true后,会开启ab实验功能,后续您需要:
|
ab_channel_domain | string | 否 | 如果开启了A/B实验,您需要设置A/B实验的分流地址。
| |
匿名ID | enable_anonymousid | boolean | 否 | 是否开启匿名id上报。详细介绍可参见下文的自定义匿名ID. |
自定义webid | enable_custom_webid | boolean | 否 | 是否设置自定义web_id。如果您不希望使用SDK自动生成的web_id,希望上报自定义web_id,您需要在初始化时开启enable_custom_webid,然后再通过config接口设置web_id,只有设置web_id后才会初始化完成,web_id的值要求必须是数字或者全是数字的字符串类型。详情请参见自定义webid。 |
二级域名 | cross_subdomain | boolean | 否 | 是否自动跨子域名识别用户,设置为true时多个子域名下使用同一浏览器访问的匿名用户会被自动识别为同一个用户,比如 a.yourdomain.com 和 b.yourdomain.com的情况。 |
cookie_domain | string | 否 | 在开启上述配置后使用,可配置存储token或者utm参数的cookie域名,如你需要'a.bytedance.com'和'b.bytedance.com'串通,则传入'.bytedance.com',不传则默认存储在当前域名下 | |
cookie_expire | number | 否 | cookie过期时间,单位为ms,默认7天 | |
单页应用 | spa | boolean | 否 | 设置是否为单页应用。 |
allow_hash | boolean | 否 | 设置单页应用是否为hash路由。 | |
加密 | enable_encryption | boolean | 否 | 是否开启数据加密上报,5.1.5以上版本的SDK支持,具体参考下文的加密上报模块。 |
crypto_publicKey | string | 否 | 数据加密上报的公钥,5.1.5以上版本的SDK支持,具体参考下文的加密上报模块。 | |
encryption_type | string | 否 | 数据加密上报的类型,5.1.5以上版本的SDK支持,具体参考下文的加密上报模块。 | |
encryption_header | string | 否 | 数据加密上报的header,5.1.5以上版本的SDK支持,具体参考下文的加密上报模块。 | |
上报通用设置 | max_report | number | 否 | 自定义埋点合并上报的最大条数,默认20条。 |
timeout | number | 否 | 埋点上报超时时间,单位ms,默认100000ms | |
disable_track_event | boolean | 否 | 是否禁用所有埋点上报。如果希望暂时不上报数据,建议使用“stop”接口。 注意 设置disable_track_event后无法恢复上报,请谨慎操作。 | |
事件补发 | enable_storage | boolean | 否 | 是否开启失败存储,开启后,失败的埋点会存储到本地,然后尝试补发。 |
enable_degrade | boolean | 否 | 是否开启失败存储的降级策略,开启后,失败补发采用退避策略,以降低流量损耗。 | |
配置下发 | enable_logsetting | boolean | 否 | 是否开启云控配置下发,可以控制事件上报黑白名单等能力。 |
SDK监控 | enablef_observe | boolean | 否 | 是否开启SDK自身监控数据采集,用于查看SDK稳定性,5.2.7版本以上支持。 |
DevTools | track_enabled | boolean | 否 | 是否开启devtools自身的埋点采集,5.2.8版本之前默认采集。 |
其他 | enable_invalid_config | boolean | 否 | 是否允许公参设置无效值,如 null,undefined,‘’等,5.2.11版本支持。 |
示例:
window.collectEvent('init', { app_id: {{APPID}}, // 注意类型是数字而非字符串 channel: 'cn', // 详情请参考上述的准备工作步骤三:获取上报地址 channel_domain: 'https://gator.volces.com', // // 详情请参考上述的准备工作步骤三:获取上报地址 log: true, // true:开启本地调试日志打印,false:关闭本地调试日志打印 ... });
window.collectEvent('start');
作用:调用config对事件进行一些设置,比如设置公共属性、设置user_unique_id等。可以调用多次,后面设置会覆盖之前相同设置项。
定义:config(configs?: ConfigParams): void
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
configs |
| 否 | config中包含预设字段,例如用户标识、用户属性、公共属性、系统占用等。您可以在config接口中设置自定义事件公共属性或用户ID相关。
|
示例:
// 设置事件公共属性,这些公共属性会在后续所有事件上报时都携带上 window.collectEvent('config', { city: '南京', nick_name: 'vikings', }); // 设置user_unique_id window.collectEvent('config', { user_unique_id: 'zhangsan' }); // 再次设置user_unique_id,会覆盖 window.collectEvent('config', { user_unique_id: 'lisi' });
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
event | string | 是 |
|
params | Record<string, string 或 number 或 boolean 或 object 或 Array> | 是 |
|
示例:
window.collectEvent('event_name', { event_key: 'value' });
逻辑说明:接受数组来上报批量事件,数组项数量大于50时,SDK会自动分多次进行上报,即单次批量最多上报50个事件。
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
events |
| 是 |
|
示例:
window.collectEvent([['test1', {name:22}], ['test2', {name:3}]])
// 异常写法 const windowTea = window.collectEvent windowTea('init') windowTea('start') windowTea('test') 这种写法在使用async异步加载SDK文件的时候,可能会导致无法上报事件,原因是: SDK有一段前置代码: (function(win, export_obj) { win['LogAnalyticsObject'] = export_obj; if (!win[export_obj]) { function _collect() { _collect.q.push(arguments); } _collect.q = _collect.q 或或 []; win[export_obj] = _collect; } win[export_obj].l = +new Date(); })(window, 'collectEvent'); 这段前置代码的作用是在SDK文件未加载的时候,使业务执行window.collectEvent不会报错 和保存业务调用的API,等SDK文件加载完成后,SDK会对window.collectEvent重新赋值成实际的方法 然后依次去执行保存的API队列。 业务在SDK未加载完成的时候将window.collectEvent赋值给windowTea,会导致 调用windowTea的值一直都是这段前置代码的,无法真正的上报事件。
window.collectEvent('stop');
window.collectEvent('reStart');
predefine_pageview事件默认调用,如需关闭:
window.collectEvent('init', { disable_auto_pv: true });
调用该方法以主动上报一次 pv 事件,参数类型同普通事件的事件属性。
如果传入了自定义的事件属性,会和预设的事件属性进行合并;如果有同名属性,则会覆盖掉预设属性。
window.collectEvent("predefinePageView") window.collectEvent("predefinePageView", {/**...*/}) // 覆盖默认的属性 window.collectEvent("predefinePageView", { url: 'xxx', url_path: 'xxx' // ... })
字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
url | string | 否 | 当前页面地址 |
url_path | string | 否 | 当前页面路径,不含协议和主机头部分,例如: |
title | string | 否 | 页面标题 |
time | number | 是 | 时间戳 |
referrer | string | 否 | 页面来源,document.referrer的值 |
因为默认情况下,SDK只会在页面加载后,并初始化完成后上报一次 pv 事件,但SPA页面会存在多个页面路由,SDK只会在主页面加载一次,所以在切换页面的时候不会再发起pv,造成后续的页面没有pv数据。因此可以开启SPA参数,SDK会在路由变化时重新上报PV:
window.collectEvent("init", { spa: true })
当然,可能会存在SDK监听到路由变化时,一些页面参数并不是最新的,您也可以手动在路由变化时去上报PV。以react示例:
// <Router history={history} onUpdate={onUpdate}> function onUpdate() { window.collectEvent("predefinePageView") }
注意
web sdk中 spa开关开启之后,在h5打通app的场景下无法触发predefine_pageview,可以通过以下步骤上报pv。
页面停留(浏览)时长是网站分析中很常见的一个指标,用于反映用户在某些页面上浏览时间的长短,体现了用户对网站的黏性。
如果您希望采集上报页面停留时长相关数据,则在web SDK初始化时需打开停留时长功能开关。
window.collectEvent('init', { // ...... 其他初始化配置 enable_stay_duration: true // true:开启停留时长 });
打开停留时长功能开关后,后续会自动在页面活跃、页面非活跃的状态下,采集相关时长数据。
开启停留时长功能之后,predefine_page_alive事件会在页面活跃状态下,每分钟定时上报一次,或者在切换为非活跃状态时上报一次。随事件上报的事件属性字段如下:
参数 | 数据类型 | 说明 |
|---|---|---|
title | string | 页面title |
url | string | 页面地址 |
url_path | string | 页面路径 |
duration | number | 正常是60000,在切换状态时小于等于60000,单位:毫秒(ms)。 |
开启停留时长功能之后,会记录用户每次【进入页面,切换状态,离开页面】的时间戳,然后在离开或者关闭页面的时候上报predefine_page_close事件,将每一段【活跃状态】的时长相加作为整体的使用时长。
说明
在App中H5场景下,predefine_page_close事件不一定能正常上报。如果是分析停留时长需要,可以考虑基于predefine_page_alive事件,具体如何分析停留长请参考下面“分析方式”章节。
随事件上报的事件属性字段如下:
参数 | 数据类型 | 说明 |
|---|---|---|
title | string | 页面标题 |
url | string | 页面url |
url_path | string | 页面url的path |
duration | number | 用户在活跃状态下的停留时长之和,单位:毫秒(ms)。 |
active_times | number | 用户在活跃状态的次数,默认为1 |
total_duration | number | 用户访问页面,从开始到关闭的整个时长,单位:毫秒(ms)。 |
当路由发生变化时,SDK自动结束当前页面的时长统计并上报alive和close事件,同时开始下一个页面的时长统计。
window.collectEvent('init', { spa: true });
如果你觉得停留时长自动重置时alive或者close埋点获取的参数不准确,或者希望自己控制此行为,可通过下面的设置关闭自动路由监听。
window.collectEvent('init', { disable_route_report: true });
或者通过在每次进入到新的页面时,调用下面的API来修复参数的问题。
// 传入将要访问的页面的参数 window.collectEvent('resetStayParams', url_path?: string, title?: string, url?: string);
在 DataFinder 上选择predefine_page_alive事件(页面活跃事件)
按停留时长求人均值(SUM/UV)按停留时长求平均值(SUM/PV)由于停留时长大多数情况下,会在页面离开或者关闭时触发,所以SDK使用了sendBeacon api 来发送,此请求需要在浏览器控制台的network(网络)分类中,选择ALL分类来查看(type类型为ping,非正常请求的xhr)。
此模块提供设置用户属性,匿名ID,用户类型等能力,并提供了一系列的方法:setAnonymousId,getToken,profileSet、profileSetOnce、profileUnset、profileIncrement、profileAppend,bindToken,setWebIDviaUnionID,setWebIDviaOpenID。
说明
此模块用于设置待采集的用户属性数据,如果您希望设置用户的实名标识user_unique_id,可使用config参数进行设置,详情请参见上文中的接口说明文档:config;场景实践文档:user_unique_id相关。
作用:上报用户属性,将属性字段用新的值覆盖,一次可以设置一个或多个属性,支持数组类型属性值。
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
params | Record<string, string 或 number 或 Array | 是 | 设置的用户属性值。将属性字段用新的值覆盖,一次可以设置一个或多个属性,支持数组类型属性值。 |
示例:
window.collectEvent('profileSet', { key: 'value' // 值支持字符串,数字,数组 })
作用:上报用户属性,按属性字段,只设置一次,如果已经有值,则不再更新。
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
params | Record<string, string 或 number 或 Array | 是 | 设置的用户属性值。按属性字段,只设置一次,如果已经有值,则不再更新。 |
示例:
// 示例:设置用户属性,属性名为key_once,属性值为value_once window.collectEvent('profileSetOnce', { key_once: 'value_once' // 值支持字符串,数字,数组 })
作用:删除某个属性的值。
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
key | string | 是 | 删除的用户属性值。 |
示例:
window.collectEvent('profileUnset', 'key')
作用:将数值型属性增加指定的值,可以为负数。
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
params | Record<string, number> | 是 | 增加的用户属性值。将数值型属性增加指定的值,可以为负数。 |
示例:
// 示例:设置用户属性,属性名为key,属性值为1 window.collectEvent('profileIncrement', { key: 1 })
作用:当属性不存在时候,创建属性,并set,如果是数组类型属性的,会把值追加进数组。
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
params | Record<string, string 或 number 或 Array | 是 | 设置的用户属性值。当属性不存在时候,创建属性,并set,如果是数组类型属性的,会把值追加进数组。 |
示例:
// 示例:设置用户属性,属性名为key,原本已有属性值,现添加属性值为value_append window.collectEvent('profileAppend', { key: 'value_append' })
获取SDK的token信息,里面包含web_id、ssid、user_unique_id信息。 如果您需要获取SDK的ID信息,进行其他设置的话,可以如下:
window.collectEvent('getToken', (token) => { //token数据内容类似如下: { "web_id":"6748002161499735560", "ssid":"579bc89a-bd45-4021-8314-669c35f38e3d", "user_unique_id":"xxx", } });
如果您的业务体系中有匿名用户ID数据,希望将此数据上报至DataFinder作为匿名用户的标识ID,而非使用DataFinder自动生成的web id来标识匿名用户,那么您可以开启匿名用户ID功能。开启匿名用户ID的功能后,后续将不再请求和上报web id,统一由您上报的匿名ID代替。
注意
匿名ID在web SDK开关设置上无环境限制,但是在最终DataFinder上使用时,有以下限制:
window.collectEvent('init', { enable_anonymousid: true })
window.collectEvent('setAnonymousId', 'xxxx')
如需更改SDK默认的web id,请在SDK初始化的时候设置enable_custom_webid: true,然后通过setWebIDviaUnionID或者setWebIDviaOpenID设置自定义web id。
window.collectEvent('init', { enable_custom_webid: true });
注意
window.collectEvent('setWebIDviaUnionID', 'ssss')
window.collectEvent('setWebIDviaOpenID', 'ssss')
如果您有多个实名ID标识的口径,可使用多ID口径功能,将多个口径的用户实名ID均上报至DataFinder,然后调用bindToken接口将多个实名id进行绑定,最终将同一个用户MAPPING到同一个用户唯一标识ssid中。
bindToken的使用示例如下,完整的多ID口径的接入实践请参见多用户口径类型处理。
window.collectEvent('bindToken', { key: value, key2: value2 }, (result) => { // 绑定返回的值 })
相较于自定义埋点,全埋点可以自动监听用户的访问、点击等行为,然后自动上报相关的埋点。
window.collectEvent('init', { // ...... 其他初始化配置 autotrack: true });
autotrack内置对象 | 数据类型 | 说明 |
|---|---|---|
text | Boolean | 是否采集元素的文本,默认采集 |
svg | Boolean | 是否采集svg元素,默认不采集 |
track_attr | [string],字符串数组 | 配置点击元素自定义的属性 |
collect_url | function, 函数 | 配置是否采集某个页面,返回真会采集当前页面的元素点击事件,返回假表示不采集当前页面,设置这个函数后,内容为空的话,是返回假的。不设置函数默认是采集所有页面。 |
pv | Boolean | 是否开启全埋点的pv事件(bav2b_page、bav2b_page_statistics)上报,默认true,false则禁用。 |
click | Boolean | 是否开启全埋点的点击事件(bav2b_click)上报,默认true,false则禁用 |
beat | int | 配置心跳事件上报的时间间隔,单位为:毫秒(ms)。 |
exposure | Boolean | 曝光事件(bav2b_exposure)采集,默认false,传入true则开启曝光事件采集,具体请查看下方详细描述。 |
window.collectEvent('init', { autotrack: { text: false, // 不采集元素文本 svg: true, // 采集svg元素 track_attr: ['attr1', 'attr2'], collect_url: () => { if (location.href === 'xxx') { // 页面地址是xxx则不采集 return false } // 其他页面采集 return true }, exposure: { ratio: 0.5, // 元素曝光面积比例0-1,默认0.5,元素面积展示超过50%后曝光 stay: 3000, // 元素曝光等待时长,单位ms,默认不等待,直接曝光 } } })
开启全埋点后,支持自定义属性的采集,代码如下:
window.collectEvent('init', { autotrack: { track_attr: ['attr1', 'attr2'] } })
// SDK会采集att1 和 attr2的属性和属性值 <div attr1='ss' attr2='ddd'></div>
window.collectEvent('init', { autotrack: { custom_attr: 'datastring' // 值可以是任何字符串,只要和元素上的对应即可 } })
<div id="test" datastring="%7B%22id%22%3A2%2C%22name%22%3A3%7D">测试属性采集</div>
datastring的原始值是 { id:2, name:3 } 经过encodeURIComponent(JSON.stringify({id:2, name:3})) 填到需要采集的dom上
在一些前端框架下,使用的某些组件,如果在组件上添加了需要采集的属性,在最终编译后,在组件内部又新生成生了一个子元素标签时,可使用。5.2.10版本开始支持
window.collectEvent('init', { autotrack: { track_attr: ['test'], track_parents: true, // 是否查找父元素的属性 track_parents_level: 2 // 查找父元素的最大层级数量,即最多往上找2层,默认为1层,最大3层 } }
开启全埋点后,支持设置哪些页面需要采集,哪些页面不需要采集
window.collectEvent('init', { autotrack: { collect_url: () => { if (location.href === 'xxx') { // 页面地址是xxx则不采集 return false } // 其他页面采集 return true } } })
如果某个元素本身不会被采集到,可以设置属性让SDK采集到
<div data-tea-container="true"></div>
如果某个元素不需要被采集到,可以设置属性让SDK过滤此元素
<div data-tea-ignore="true"></div>
window.collectEvent('init', { autotrack: { exposure: true // 可以直接传入true,走默认设置 exposure: { radio: 0.5 // 元素曝光比例,0-1,默认0.5,即元素展示面积超过50%时曝光 stay: 3000, // 元素曝光等待时长,单位ms,默认不等待,直接曝光 eventName: 'exposure', //可以自定义上报的曝光事件名,默认是bav2b_exposure //以上两个条件可以只设置一个,两个都设置的情况下需要同时满足才上报 callback: (data) => { // 可以修改data,data是曝光上报的属性, 也可以新增 data.element_class_name = 'sijie' return data } } } })
// 需要曝光的元素 <div data-exposure>我是需要曝光的元素</div>
注意
只有元素含有data-exposure属性,才会对此元素进行曝光。
除了直接在初始化的时候设置全局的曝光事件名,还可以针对每一个元素进行修改。
// 此元素将上报曝光事件名为custom_exposure <div data-exposure data-exposure-event="custom_exposure"></div>
曝光事件(exposure)数据上报时会携带$exposure_type字段,该字段代表了曝光的类型,有以下几种:
开启滑动事件采集,将会采集特定元素的滚动的行为。
window.collectEvent('init', { autotrack: { scroll: { distance: 200 // 连续滑动距离超过200px后才上报,滑一下停一下不算 callback: (data) => { // 可以修改data,data是滑动上报的属性 return data } } } })
// 需要采集滑动事件的元素 <div id="test" data-scroll='true'>我要滑动</div>
曝光事件名默认:$bav2b_slide, 自定义事件名有以下2种方式
全局生效
window.collectEvent('init', { autotrack: { scroll: { eventName: 'customscroll' } } })
绑定元素生效
// 上报自定义事件 customscroll <div id="test" data-scroll data-scroll-event="customscroll" style="width:200px;height:200px;"> <div style="width:2000px;height:200p0x;">我才是真正滑动的元素</div> </div>
滑动方向属性:direction
$direction:1 向上滑动 $direction:2 向下滑动 $direction:3 向左滑动 $direction:4 向右滑动 这里的滚动方向均代指滚动条滚动的方向
滑动偏移量属性:offset
初始化值均为0,向下滑为正,向上滑为负
全埋点事件列表 | 事件说明 | 事件触发机制 |
|---|---|---|
bav2b_page | 页面浏览事件 | 页面打开后触发上报 |
bav2b_click | 元素点击事件 | 点击页面元素后触发上报 |
bav2b_page_statistics | 页面访问事件 | 页面打开后触发上报 |
bav2b_beat | 页面心跳事件 | 页面打开,关闭,或者页面滚动停止后500ms后会触发上报 |
bav2b_exposure | 元素曝光事件 | 需要曝光的元素出现在可视区域内会触发上报 |
页面浏览事件,在页面打开,或者路由变化时上报。上报时机分独立页面和SPA(单页应用),独立页面的话则在页面打开后,SDK初始化完成后上报一次。如果是SPA页面,除了SDK初始化完成后上报一次,在点击切换页面时也会上报一次。主要采集的数据为页面浏览的一些参数,用于分析页面浏览行为。
参数 | 说明 |
|---|---|
is_html | 默认为1 |
page_key | 当前页面key,默认值为页面地址 |
url | 当前页面地址 |
page_title | 页面标题 |
page_path | 页面路径 |
page_host | 页面host |
page_total_height | 页面总高度 |
page_total_width | 页面总宽度 |
scroll_height | 页面滚动条高度 |
scroll_width | 页面滚动条宽度 |
page_manual_key | 页面manual_key,当前页面manual_key是一个闲置字段,暂无实际意义,您无需关注 |
page_start_ms | 页面打开时间 |
refer_page_title | 上一个页面标题 |
refer_page_duration_ms | 上一个页面访问时长 |
refer_page_key | 上一个页面key |
refer_page_manual_key | 上一个页面manual_key,当前页面manual_key是一个闲置字段,暂无实际意义,您无需关注 |
is_first_time | 是否首次访问 |
元素点击事件,在页面发生点击时上报。
参数 | 说明 |
|---|---|
is_html | 默认为1 |
page_key | 当前页面key,默认值为页面地址 |
page_title | 页面标题 |
element_path | 元素路径 |
positions | 元素位置 |
element_title | 元素标题 |
element_id | 元素id |
element_class_name | 元素class名 |
element_type | 元素类型 |
element_width | 元素宽度 |
element_height | 元素高度 |
touch_x | 点击位置X坐标 |
touch_y | 点击位置Y坐标 |
page_start_ms | 页面打开时间 |
since_page_start_ms | 点击发生时距离页面打开的时间 |
page_path | 页面标题 |
page_host | 页面host |
页面访问事件,在页面访问时上报。上报时机为页面打开后,SDK初始化完成后上报一次(独立页面和SPA都只上报一次),采集的数据主要是页面加载耗时、页面宽高等统计信息,用于分析页面加载统计等信息。
参数 | 说明 |
|---|---|
is_html | 默认为1 |
page_key | 当前页面key,默认值为页面地址 |
page_title | 页面标题 |
page_manual_key | 页面manual_key,当前页面manual_key是一个闲置字段,暂无实际意义,您无需关注 |
page_start_ms | 页面打开时间 |
page_init_cost_ms | 页面打开的耗时 |
refer_page_key | 上一个页面key |
refer_page_manual_key | 上一个页面manual_key,当前页面manual_key是一个闲置字段,暂无实际意义,您无需关注 |
页面心跳事件,分别在页面访问,滚动页面后停止500ms,离开页面时上报各上报一次。
参数 | 说明 |
|---|---|
is_html | 默认为1 |
page_key | 当前页面key,默认值为页面地址 |
beat_type | beat类型,0:离开页面,1:滚动停止,3:访问页面 |
page_title | 页面标题 |
page_viewport_width | 页面可视窗口宽度 |
page_viewport_height | 页面可视窗口高度 |
page_total_height | 页面总高度 |
page_total_width | 页面总宽度 |
scroll_height | 页面滚动条高度 |
scroll_width | 页面滚动条宽度 |
page_manual_key | 页面manual_key,当前页面manual_key是一个闲置字段,暂无实际意义,您无需关注 |
page_start_ms | 页面打开时间 |
since_page_start_ms | 事件发生时距离页面打开的时间 |
元素曝光事件,当一个元素滚动到可视区域内,且符合曝光比例时,则上报一个曝光事件。在可视区域内的反复滚动,只会算一次,直到移出可视区域后,再滚动出现才会再次曝光。
注意
V5.1.1以上版本支持。

参数 | 说明 |
|---|---|
is_html | 默认为1 |
page_key | 当前页面key,默认值为页面地址 |
page_title | 页面标题 |
element_path | 元素路径 |
positions | 元素位置 |
element_title | 元素标题 |
element_id | 元素id |
element_class_name | 元素class名 |
element_type | 元素类型 |
element_width | 元素宽度 |
element_height | 元素高度 |
touch_x | 点击位置X坐标 |
touch_y | 点击位置Y坐标 |
page_start_ms | 页面打开时间 |
since_page_start_ms | 点击发生时距离页面打开的时间 |
page_path | 页面标题 |
page_host | 页面host |
元素类型 | 是否采集 |
|---|---|
html,header,body,footer,script,link,ifram,svg等 | 不采集 |
div,span,a,p,img,ul,li等 | 采集 |
元素nodeType不等于1(非可视元素标签) | 不采集 |
display为none | 不采集 |
点击的元素层级超过2层(有多层子元素) | 不采集 |
当元素层级超过2层,但元素为容器元素(a,button,或者用户指定了标签属性 'teaContainer','data-tea-container') | 采集 |
此模块提供AB实验能力,并提供了一系列的方法:getVar、getAllVars、getAbSdkVersion、setExternalAbVersion。
使用此模块,在SDK初始化时,在init接口中除了通用参数需要配置外,还需打开A/B实验的模块开关:enable_ab_test: true,同时配置A/B实验的分流地址(ab_channel_domain字段)。
window.collectEvent('init', { enable_ab_test: true, ab_channel_domain: 'https://tab.volces.com', enable_multilink: false,// 是否开启多链接实验,默认false enable_ab_visual: false, //是否开启可视化实验,默认false ab_timeout: 10000// 分流请求的超时时间,默认10000ms disable_ab_reset: false // 是否禁止切换用户时重新获取A/B实验的配置信息,默认false ... });
作用:获取AB实验配置中的实验对应的配置项值,同时SDK会收集对应的vid(业务一般不用直接关心该vid),命中实验后,会自动上报一个abtest_exposure事件。
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 实验配置中的key。 说明 提示:业务调用getVar方法,SDK发现实验配置中有对应的key时,会上报一个预置事件 |
defaultValue | any | 是 | 兜底值,当实验配置中没有相应的key的配置项,该方法会返回这个兜底值。 |
callback | (value: any) => void | 否 | 当获取到实验配置项值时,如果有设置callback就会执行该callback,并把实验配置项值作为callback的参数。 |
示例:
```TypeScript
window.collectEvent('getVar',' color', 'red', (value) => { // 当配置中存在color实验,value值为配置中的color对应的值,否则值为red }); ```
作用:获取ab实验所有配置信息。
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
callback | (data: any) => void | 否 | 如果有设置callback就会执行该callback,并把实验配置全部数据作为callback的参数。
|
示例:TypeScript window.collectEvent('getAllVars', (data) => { // 获取所有实验配置信息 // data值大概如下: /* { aa: { val: 'aa-value', vid: '11' }, test_before_6d: { val: 'test_before_6d-value', vid: '22' }, bb: { val: 'bb-value', vid: '33' }, } */ });
作用:获取已曝光的实验,返回的结果是所有曝光实验的vid,使用逗号连接起来,格式例如:123,234,678
返回值:
类型 | 说明 |
|---|---|
string | 所有曝光实验的vid,使用逗号连接起来,格式例如:123,234,678 |
示例:
// vids值类似 123,234,678 const vids = window.collectEvent('getAbSdkVersion');
作用:手动设置额外的AB实验配置。
参数:
参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
vids | string 或 null | 是 | vids的格式要求:使用逗号将vids值连接起来,大概这样'123,234,678'。
|
示例:
// 手动设置额外的 window.collectEvent('setExternalAbVersion', '25,225,2225');
接入Web SDK时,如果您希望对上报数据进行加密,可使用数据加密上报功能,当前支持使用国密加密。
注意
接入Web SDK时使用加密功能需满足以下条件:
// 以下参数都必须要设置 window.collectEvent('init', { enable_encryption: true, crypto_publicKey: 'xxxxx', //加密公钥,公钥需以04开头 encryption_type: 'sm', // 加密类型,目前只支持 sm 类型 encryption_header: 'gm_sm2' // 加密request header类型,目前只支持 gm_sm2 类型 })
开启加密后,数据将以国密加密的方式上报
此功能适用于以下接口
1.数据上报 /list
2.用户属性上报 /profile/list
3.设备注册 /webid
4.ab实验 /abtest_config
5.请求ssid /tobid
可以在此网站,解密加密的数据在线解密。
您可以配置是否监听监听某个SDK生命周期的广播,适用于SDK运行时的消息用来获取SDK状态。
监听某个SDK生命周期的广播
window.collectEvent('on', 'ready', (data) => { // 监听到sdk ready了,do something // 有的消息有data,有的没有 })
取消监听广播
// 取消监听ready广播 window.collectEvent('off', 'ready')
此模块提供了追踪某个事件的能力。
例如,追踪视频播放耗时相关数据,但不希望每次视频的操作都触发数据上报,仅需要在视频完播时上报视频播放过程中的数据,此时可以用追踪事件模块,在视频点击时标注Start完播时标注End,在end时上报所有中间过程的数据。
开始追踪一个事件。
// 开始追踪play事件 window.collectEvent('startTrackEvent', 'play')
调用此方法,不会上报play事件。
结束追踪一个事件,可以传入事件和事件属性。
// 开始追踪play事件 window.collectEvent('endTrackEvent', 'play', { name: '播放结束了' })
调用此事件后才会最终上报play事件,并带上duration参数,参数值为整个play事件发生期间的耗时。
暂停监听某个事件。
// 暂停追踪play事件 window.collectEvent('pauseTrackEvent', 'play')
重新开始监听某个事件。
// 重新追踪play事件 window.collectEvent('resumeTrackEvent', 'play')