在 app.js 文件的开头引入 SDK 主文件:
import "./htt/htt";
或者使用 CommonJS 模块规范导入:
require("./htt/htt");
兼容其他第三方 SDK
在集成了小程序插件的情况下,需要使用 htt 导出的 App 和 Page 构造器。
如果需要同时使用除 htt 以外的其他监测 SDK,并且其文档中也要求使用它们导出的构造器,可使用 htt.useApp() 和 htt.usePage() 方法来进行兼容。
// app.js
import htt from "./htt/htt";
import thirdPartySDK from "./utils/3rdPartySDK";
// 传入第三方 SDK 文档中要求使用的 App 构造器
htt.useApp(thirdPartySDK.App);
// 传入第三方 SDK 文档中要求使用的 Page 构造器
htt.usePage(thirdPartySDK.Page);
// 最终创建 App 和 Page 时仍然使用 htt 提供的构造器
htt.App({
// ...options
});
修改 SDK 的配置文件 htt.config.js
{
"appName": "", // 应用名称
"appVersion": "", // 应用版本
"appCode": "", // 小程序的AppID
"locationAccessable": false, // 是否获取位置信息,默认为关闭
"usingPlugins": false, // 如果使用了小程序插件,应设置为 true
"requireOpenid": false, // 是否必须有 openid 才监测,默认为无需 openid 即可监测
"module": {
"basic": {
"apiUrl": "https://t.hypers.com.cn/htt", // 小程序 SDK 上报地址
"appKey": "" // Mobile Analytics管理平台获取的 APP Key
}
}
}
**注意:**appKey 是通过 Modile Analytics 管理平台获得的 App Key, locationAccessable 是通过小程序位置接口获取位置信息的配置项。因此在小程序未获取位置授权的情况下不要将 locationAccessable 设置为 true,否则会导致用户在启动程序时弹出授权框。
除了基本的应用打开和页面访问的采集外,SDK 还支持自定义的事件的统计分析,例如可以上报某个按钮的点击事件。在应用的任何地方,都可以通过通过微信小程序的实例对象 App 来取得 SDK 的实例 app.htt,并调用 SDK 提供的接口。
我们以一个按钮点击事件为例,调用 sendAction 接口发送自定义事件,示例如下:
Page({
buttonEvent() {
// 获取微信小程序实例
const app = getApp();
// 可以根据需要选择以下几种传值方式
// 1. 仅上报事件名称
app.htt.sendAction('eventName');
// 2. 带自定义属性
app.htt.sendAction('eventName', {
prop1: 'propValue1',
prop2: 'propValue1'
});
}
});
注意: 需要采集的自定义事件和属性需要预先在管理平台中创建,以上述例子为例,需要我们事先在管理平台 "设置-自定义事件" 里添加自定义事件 eventName ,同样在 "设置-自定义属性" 里分别添加自定义属性 prop1,prop2。 否则未知的事件和属性将会被计算平台过滤,从而不会体现在事件和属性的报告中。
SDK 中默认使用随机生成的 UUID 对设备进行唯一标识,若需要统计登录用户或会员这类的指标,需要使用更准确的用户标识方法。用户在字节跳动小程序在登录时,可以获得 openid 作为用户唯一标识,从而更准确的识别用户身份。
调用 htt.identify
接口设置用户唯一标识,示例如下:
// 调用小程序的 identify 接口,设置 openid
app.htt.identify({
openid: 'ohEjxfakmgpilre',
});
用户唯一标识会被小程序缓存,若用户登出,需要传 null
清除
app.htt.identify(null)
htt.identify
仅用于设置用户的 openid
和 isNewAccount
,如果想进一步针对用户属性做分析,可以使用 htt.setUserInfo
接口设置用户信息。
// 调用小程序的 setUserInfo 接口,设置用户信息
app.htt.setUserInfo({
cust_id: "100", // 用户唯一标识
mail: "zhangsan@example.com",
gender: "男",
login_type: 'client',
isNewAccount: true, // 是否是新账户
// ... 字段可以扩展
});
同用户唯一标识一样,用户信息也会被小程序缓存,若用户登出,需要传 null
清除用户信息:
app.htt.setUserInfo(null);
注意: 多次调用 identity ,传入字段已存在,则会覆盖原有信息;若不存在则会追加字段。切换用户时,需要格外注意这一点。
字节跳动小程序通过【复制链接】的形式进行分享,会生成一个 https://m.zjbyte.net/share/douyin/?token=xxxxx&share_channel=copy 类似的链接这个链接 网页(抖音的服务端生成的)里面 会 有一段script 记录 小程序的appId, 打开的小程序页面等等信息 (下面的start_page=user/index/index)。SDK层面无法直接操作token和token解析的结果。
参考开发文档 开发者最终可以给 onShareAppMessage 返回这样一个对象,这个里面有一个参数是query,在shareParams 里面 的 query 增加一些utm参数,然后打开小程序点击分享,复制带token链接。传给分享接口的返回值设置 query?utm_source=xx&utm_bbb=yyy 等等,这时候分享链接的token解析出来的start_page也是带参数的。