下载 SDK 脚本,解压后放置在小程序中的 hxt/ 目录中。
在 app.js 文件的开头引入 SDK 主文件:
// ESM
import "./hxt/hxt";
// CommonJS
// require("./hxt/hxt");
通过配置文件 hxt/hxt.conf.js
设置 SDK 的一些必要参数:
{
"appName": "", // 应用名称
"appVersion": "", // 应用版本
"appCode": "", // 小程序的 appid
"locationAccessible": false, // 是否自动获取位置信息
"requireUserId": false, // 是否必须有 user_id(或 openId) 才监测,默认为无需 user_id(或 openId) 即可监测
"module": {
"basic": {
"apiUrl": "https://t.hypers.com.cn/hxt", // tracker 上报地址,需在小程序后台配置域名
"appKey": "" // 在 HYPER Mobile Analytics 管理平台获取的 APP Key
}
}
}
注意:
启用 requireUserId
选项可以提高监测数据和报告的准确性,启用后监测请求将等到获取 openid 后才会上报,获取前的动作暂存至本地。但务必要注意的是,如启用用 requireUserId
选项,我们建议静默获取 openid,且在获取 openid 后立刻调用用 hxt.identify({ openid })
,避免部分游客的监测数据缺失。
请在发布生产前,务必检查是否已将数据上报的域名加入到后台的 request 域名白名单 中,否则生产数据将丢失。
支付宝开放了 openId 的使用,以替换 user_id, 详见支付宝文档
SDK 会自定记录页面活动,并且你可以为其设置自定义的页面名称
// homepage.js
Page({
name: 'Homepage', // 页面名称(可选)
...options
})
const app = getApp();
Page({
// 使用 hxt.trackAction(actionName) 来记录自定义事件
// 注:add_todo 是在 HYPER Mobile Analytics 管理平台创建的自定义事件
onSaveButtonClick() {
app.hxt.trackAction("add_todo");
},
// 或者使用 hxt.trackAction(actionName, { ...attributes }) 来记录自定义事件和自定义属性
// 注:todo_text 是在 HYPER Mobile Analytics 管理平台创建的自定义属性
onSaveButtonClick2() {
app.hxt.trackAction("add_todo", {
todo_text: this.data.inputValue
});
}
});
hxt 默认使用 uuidv4 对设备进行唯一标识,若需要记录支付宝用户唯一标识 (user_id 或 openId) 等指标,需使用 hxt.identify()
接口
具体 identify 参数为
| {
user_id: string;
cust_id?: string;
}
| {
openId: string;
unionId?: string;
cust_id?: string;
};
import hxt from './hxt/htx';
App({
onLaunch() {
getAlipayUser().then(user => {
hxt.identify(user);
});
}
});
或者直接使用 app
上挂载的 hxt
App({
onLaunch() {
getAlipayUser().then(user => {
this.hxt.identify(user);
});
}
});
注:openId、unionId 变量名兼容 全小写、驼峰、下划线
此外,
hxt.identify({
openid: 'xxxx',
cust_id: 'xxx',
mail: 'zhangsan@example.com',
gender: '男'
});
在 main.js
中引入 hxt
。
import './hxt/hxt';
hxt
允许 <web-view>
中的网页通过 js 调用小程序中的 hxt
,需用到 hxt-webview.js
SDK,集成方法如下。
根据 <web-view>
文档,首先在需要调用 hxt
的网页中引入 https://appx/web-view.min.js
hxt-webview.js
<script src="https://appx/web-view.min.js"></script>
<script src="path/to/hxt-webview.js"></script>
<web-view>
组件绑定 onMessage
事件 <web-view src="..." onMessage="handleWebviewMessage"></web-view>
const app = getApp();
Page({
handleWebviewMessage(e) {
app.hxt.onWebviewMessage(e);
},
});
网页中引入 hxt-webview.js
后,即全局挂载 hxt
对象,它具有与小程序中的 hxt
相同的方法和参数列表。
目前 hxt-webview.js
已支持的接口有 hxt.identify
和 hxt.trackAction
。
<script src="https://appx/web-view.min.js"></script>
<script src="path/to/hxt-webview.js"></script>
<script>
// ...
hxt.identify({ openid });
hxt.trackAction(actionName, props);
</script>
Webview SDK 使用 my.postMessage
接口来与小程序内的 hxt
进行通信。如果你的小程序业务本身也使用 postMessage
,有时可能会将 hxt
发送的消息当作业务消息处理,从而引发错误。你可以通过判断消息对象上的 type
字段值为 invokeHxt
来区分 hxt 发送的消息。
handleWebviewMessage(e) {
app.hxt.onWebviewMessage(e)
if(e.detail.data.type !== 'invokeHxt'){
//...
}
}
在 hxt.conf.js
配置项中添加 logLevel: "debug"
。