SDK 初始化参数
参数 | 类型 | 默认值 | 含义 | 备注 |
---|---|---|---|---|
name | String | sensors | SDK 使用的一个默认的全局变量,会注册在 App 全局函数内,在 Page 中可以通过 getApp()[name] 来获得 SDK 实例 | |
server_url | String | 数据接收地址 |
| |
autoTrack | Object | 无 | 是否开启自动采集 |
|
show_log | Boolean | true | 是否打印 log |
|
max_string_length | Number | 300 | 通用字符串最大长度,超过部分会被截取丢弃(url 太长可能会导致数据发送失败,所以限制长度) | |
batch_send | Boolean | true | 小程序中是否使用批量发送数据功能 |
|
datasend_timeout | Number | 3000 | 请求发送取消时间 |
|
全埋点采集逻辑
事件名称 | 生命周期 | 采集时机 | 说明 |
---|---|---|---|
$MPLaunch(小程序启动) | App.onLaunch | 小程序冷启动。小程序进程被杀死,重新打开时会触发 |
|
$MPShow(小程序显示) | App.onShow | 小程序热启动。或从后台进入前台显示,首次触发也会显示 |
|
$MPHide(小程序进入后台) | App.onHide | 点击小程序右上角退出按钮、微信进入后台、手机锁屏、小程序进程被杀死时 |
|
$MPViewScreen(小程序页面浏览) | Page.onShow | 小程序启动打开页面、小程序内打开页面、从后台进入前台打开页面时触发 |
|
$MPShare(小程序分享) | Page.onShareAppMessage | 设置这个函数后,点击分享按钮触发 |
|
$MPClick(小程序元素点击) | 在 Page 中定义的事件处理函数 | 当 Page 中定义的事件处理函数被触发时采集 |
|
$MPPageLeave(小程序页面离开) | page.onHide 或 page.onUnload | 小程序页面隐藏或卸载时触发 |
各小程序全埋点支持情况
小程序 | $MPLaunch | $MPShow | $MPHide | $MPViewScreen | $MPClick | $MPPageLeave | $MPShare |
---|---|---|---|---|---|---|---|
支付宝 / 钉钉 | 支持 | 支持 | 支持 | 支持 | 支持(默认关闭) | 支持(默认关闭) | 不支持 |
百度 | 支持 | 支持 | 支持 | 支持 | 支持(默认关闭) | 不支持 | 不支持 |
字节 / 抖音 | 支持 | 支持 | 支持 | 支持 | 支持(默认关闭) | 不支持 | 不支持 |
飞书 | 支持 | 支持 | 支持 | 支持 | 支持(默认关闭) | 不支持 | 不支持 |
淘宝 | 支持 | 支持 | 支持 | 支持 | 支持(默认关闭) | 支持(默认关闭) | 不支持 |
小红书 | 支持 | 支持 | 支持 | 支持 | 支持(默认关闭) | 不支持 | 不支持 |
京东 | 支持 (默认关闭) | 支持(默认关闭) | 支持(默认关闭) | 支持(默认关闭) | 支持(默认关闭) | 不支持 | 不支持 |
快手 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
标记为默认关闭的需要手动配置为 true 开启(配置方式参考 autoTrack ),不支持的配置为 true 了也无效。
设置事件公共属性
设置事件静态公共属性
// 注册事件公共属性
sensors.registerApp({
userLever: 'VIP3',
userSex: '男'
});
sensors.init();
设置事件动态公共属性
当设置动态公共属性的时候,注意使用函数类型作为属性值,函数的返回值应当是神策支持的类型,请参考数据格式,否则会被过滤掉。
var i=0
sensors.registerApp({
index: function() {
return ++i; // 返回数字
},
istrue: function() {
return i<10 ? true : false; // 返回bool
},
isEmptyString: function() {
return ""; // 返回字符串
},
isDate: function() {
return new Date('December 17, 1995 03:24:00'); // 返回日期类型
},
isArrayOfStr: function() {
return ["1","2","3"] // 返回元素是字符串的数组
}
})
另外如果函数在异步回调中返回值,这种情况也是会被过滤掉。
sensors.registerApp({
num:function(){
setTimeout(()=>{
return 100
},500)
}
})
用户属性设置
保留初次属性
对于需要保证只有首次设置时有效的属性,如用户首次充值金额、首次设置的昵称等,可以使用 setOnceProfile 接口进行记录。与 setProfile 方法不同的是,如果被设置的用户属性已存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建。
// 设置用户属性 subscribers 为 7277
sensors.setOnceProfile({
email:'xxx@xx',
favoriteFruits: ['苹果', '油桃'],
subscribers: 7277
});
// 再次设置用户属性 subscribers 为 7278 不生效,属性值仍然是 7277
sensors.setOnceProfile({
subscribers: 7278
});
获取预置属性
某些情况下可能需要在前端获取 SDK 预置属性,SDK 支持使用 getPresetProperties 方法获取部分事件预置属性。
// 获取事件预置属性
sensors.getPresetProperties();
清除公共属性
对于调用 registerApp 设置的公共属性,SDK 提供 clearAppRegister 接口清除这些属性。
// 清除设置的 current_url 和 referrer 公共属性
sensors.clearAppRegister(['current_url', 'referrer']);
获取匿名 ID
小程序 SDK 提供了 getAnonymousID 接口来获取匿名 ID。
sensors.getAnonymousID();
本地用户信息加密
注意:暂不支持 京东、快手、QQ 。
目前 SDK 保存在 storage 中的信息主要是用户信息,可以对 storage 中的数据进行加密,保证安全性。功能配置:
// app.js
sensors.init({
name: 'sensors',
server_url: '数据接收地址',
encrypt_storage : true // 是否开启本地加密存储
});