Appearance
落地页 SDK
具体的事件上报参数说明,参考文档:Lark 链接 密码:
@8228T56
下载 SDK
v2.0.0(新版,支持 encryptedConfig 密文注入链路):
v1.1.1(旧版,仅支持 domain / endpoint 直连上报):
版本区别:v2.0.0 新增
encryptedConfig配置,通过 AES-GCM 加密配置串下发域名列表和事件白名单,走密文注入链路,可动态切换上报地址,无需发版升级。v1.1.1 仅支持domain/endpoint直接上报,上报地址在初始化时固定。
SDK 初始化说明
当前工程已提供静态文件:
/sdk/landing/landing-sdk-v2.0.0.js(新版,支持encryptedConfig)/sdk/landing/landing-sdk-v1.1.1.js(旧版,仅domain/endpoint)
配置 encryptedConfig 后走密文注入链路,优先级高于 domain 和 endpoint;不配置则默认走 domain / endpoint 直接上报事件。
注意:
encryptedConfig仅 v2.0.0 及以上版本支持,v1.1.1 及以下版本请使用domain/endpoint。
环境说明
接入文档中的配置服务环境如下:
| 环境 | 域名 |
|---|---|
| 测试环境 | https://api.shuifeng.cc |
| 正式环境 | https://ap.dc-report.cc |
接入前提
在接入前请确认:
- [ ] 已获取
appId和channel(渠道码,必填,可填空字符串)
v2.0.0(encryptedConfig):上报地址由 SDK 通过密文注入内部解析,无需额外配置代理和上报地址。
v1.1.1(domain / endpoint):
- [ ] 当上报地址中包含
/dcserv路径时,已将该路径代理到https://ap.dc-report.cc - [ ] 最终上报地址为
https://ap.dc-report.cc/api/eventTracking/report.json
| 接入方式 | 上报地址规则 | 说明 |
|---|---|---|
encryptedConfig | 密文注入,由 SDK 内部解析出上报地址和事件白名单 | 优先级最高,配置后走密文注入链路(仅 v2.0.0+) |
domain | domain + /dcserv/api/eventTracking/report.json | 推荐用于落地页同域代理接入;页面域名需将 /dcserv 代理到 https://ap.dc-report.cc |
endpoint | 直接使用 endpoint 完整地址 | 优先级高于 domain,适合需要显式指定完整上报地址的场景 |
如果开启批量上报(batch: true),接口路径会切换为 /dcserv/api/eventTracking/batchReport.json 或 endpoint 指定的完整地址。
基础接入方式
推荐使用"占位队列 + 异步加载 SDK"的方式,确保 SDK 脚本尚未加载完成时调用的事件不会丢失。
html
<script>
(function (i, s, o, g, r) {
// 在 SDK 加载完成前,将所有调用暂存到占位队列(返回 Promise,保持调用方接口一致)
i[r] =
i[r] ||
function () {
var args = Array.prototype.slice.call(arguments);
return new Promise(function (resolve, reject) {
(i[r].q = i[r].q || []).push({
args: args,
resolve: resolve,
reject: reject,
});
});
};
i[r].l = 1 * new Date();
// 异步插入 SDK 脚本标签,不阻塞页面渲染
var a = s.createElement(o);
var m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = "/sdk/landing/landing-sdk-v1.1.1.js";
m.parentNode.insertBefore(a, m);
})(window, document, "script", "/sdk/landing/landing-sdk-v1.1.1.js", "tracker");
var config = {
appId: "your_app_id",
domain: "https://ap.dc-report.cc",
channel: "your_channel",
};
// 轮询等待 SDK 加载完成(每 30ms 检测一次)
var timer = setInterval(function () {
if (window.LandingSDK) {
clearInterval(timer);
window.LandingSDK.init(config);
// 将占位队列中暂存的调用回放到真实 SDK
var queued = (window.tracker && window.tracker.q) || [];
var real = window.LandingSDK.track;
real.q = [];
window.tracker = real;
queued.forEach(function (item) {
real.apply(null, item.args).then(item.resolve).catch(item.reject);
});
queued.length = 0;
}
}, 30);
</script>初始化配置
javascript
LandingSDK.init({
appId: "your_app_id",
encryptedConfig: "jzzemX+UqICBr9/PIK62ENqIEXIa...", // 加密配置串(v2.0.0+ 支持),配置后走密文注入链路
domain: "当前落地页域名",
channel: "your_channel",
});| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
appId | string | 是 | - | 应用 ID |
encryptedConfig | string | 否 | - | AES-GCM 加密配置串,包含域名列表和事件白名单;配置后走密文注入链路,优先级高于 domain 和 endpoint(仅 v2.0.0+ 支持) |
domain | string | 否 | 当前页面域名 | 上报域名 |
endpoint | string | 否 | - | 直接指定完整上报地址,优先级高于 domain |
channel | string | 是 | - | 渠道码 |
appVersion | string | 否 | "1.0.0" | 业务应用版本号,随每条事件上报 |
batch | boolean | 否 | false | 是否批量上报,默认 false |
deviceId | string | 否 | - | 自定义设备 ID,传入后覆盖本地生成的值 |
batch会改变上报接口路径(false→report.json,true→batchReport.json),两种模式适用场景不同,详见 batch 参数说明。
上报地址说明
最终上报地址按以下优先级确定:
- 初始化时配置的
encryptedConfig(密文注入,由 SDK 内部解析出上报地址和事件白名单;仅 v2.0.0+ 支持) - 初始化时配置的
endpoint(完整地址) - 初始化时配置的
domain(域名) - 当前页面域名(兜底)
当代理链路中包含
/dcserv时,需确保最终代理到https://ap.dc-report.cc/api/eventTracking/report.json。
手动上报事件
SDK 提供两个专用事件方法,event 字段由 SDK 内部自动设置,无需手动传入。
落地页展示:
javascript
LandingSDK.track.landingPageView({
landing_page_id: "123",
});落地页点击:
javascript
LandingSDK.track.landingPageClick({
landing_page_id: "123",
tab_key: "tab_001",
tab_name: "登录",
click_coordinates_x: 100,
click_coordinates_y: 200,
click_x_percent: 50,
click_y_percent: 60,
screen_width: 1920,
screen_height: 1080,
trace_id: "trace123",
});完整参数说明请参见 API 说明。
接入验证
接入完成后,可通过浏览器开发者工具验证事件是否成功上报:
- 打开 DevTools → Network 面板
- 触发页面展示或点击操作
- 过滤请求,找到包含
report.json的请求 - 检查请求体是否包含对应事件字段(如
landing_page_id) - 确认响应状态码为
200,且响应体包含成功标识