1. SDK 初始化参数

参数类型默认值含义备注
nameStringsensorsSDK 使用的一个默认的全局变量,会注册在 App 全局函数内,在 Page 中可以通过 getApp()[name] 来获得 SDK 实例
server_urlString数据接收地址
  • 请在小程序管理平台  → 开发设置 → 服务器域名中,把这个地址添加上。
autoTrackObject是否开启自动采集
  • 六个属性参数( appLaunch、 appShow、 appHide、 pageShow、 pageShare、mpClick、pageLeave)
  • 其中 mpClick、 pageLeave 默认是 false 关闭的,需要手动配置成 true,其他默认是 true
  • init:{
      autoTrack:{
        appLaunch: true,
        appShow: true,
        appHide: true,
        pageShow: true,
        pageShare: true,
        mpClick: false,
        pageLeave: false
      }
    }
    CODE
show_logBooleantrue是否打印 log
  • 设置 true 后会在模拟器控制台打 log,会显示发送的数据,设置 false 表示不显示。
max_string_lengthNumber300通用字符串最大长度,超过部分会被截取丢弃(url 太长可能会导致数据发送失败,所以限制长度)
batch_sendBooleantrue小程序中是否使用批量发送数据功能
  • 默认都是批量发送。
datasend_timeoutNumber3000请求发送取消时间
  • 单位为毫秒,请求发送后,在规定时间内未返回结果,则取消请求。

2. 全埋点采集逻辑

事件名称生命周期采集时机说明
$MPLaunch(小程序启动)App.onLaunch小程序冷启动。小程序进程被杀死,重新打开时会触发
  • 小程序初始化完成时,全局只触发一次;
$MPShow(小程序显示)App.onShow小程序热启动。或从后台进入前台显示,首次触发也会显示
  • 启动小程序时;
$MPHide(小程序进入后台)App.onHide点击小程序右上角退出按钮、微信进入后台、手机锁屏、小程序进程被杀死时
  • 小程序从前台进入后台;
$MPViewScreen(小程序页面浏览)Page.onShow小程序启动打开页面、小程序内打开页面、从后台进入前台打开页面时触发
  • 每次打开页面都会调用一次;
$MPShare(小程序分享)Page.onShareAppMessage设置这个函数后,点击分享按钮触发
  • 暂时只能获取到用户触发分享,无法监听是否分享成功的反馈;
$MPClick(小程序元素点击)在 Page 中定义的事件处理函数当 Page 中定义的事件处理函数被触发时采集
  • 目前只支持 tap/ longtap / longpress 三类事件;
$MPPageLeave(小程序页面离开)page.onHide 或 page.onUnload小程序页面隐藏或卸载时触发

3. 各小程序全埋点支持情况

小程序

$MPLaunch

$MPShow

$MPHide$MPViewScreen$MPClick$MPPageLeave$MPShare
支付宝 / 钉钉支持支持支持支持支持(默认关闭)支持(默认关闭)不支持
百度支持支持支持支持支持(默认关闭)不支持不支持
字节 / 抖音支持支持支持支持支持(默认关闭)不支持不支持
飞书支持支持支持支持支持(默认关闭)不支持不支持
淘宝支持支持支持支持支持(默认关闭)支持(默认关闭)不支持
小红书支持支持支持支持支持(默认关闭)不支持不支持
京东支持 (默认关闭)支持(默认关闭)支持(默认关闭)支持(默认关闭)支持(默认关闭)不支持不支持
快手不支持不支持不支持不支持不支持不支持不支持
QQ支持支持支持支持支持不支持不支持

标记为默认关闭的需要手动配置为 true 开启(配置方式参考 autoTrack ),不支持的配置为 true 了也无效。

4. 设置事件公共属性

4.1. 设置事件静态公共属性

// 注册事件公共属性
sensors.registerApp({
	userLever: 'VIP3',
	userSex: '男'
}); 
sensors.init();
JS

4.2. 设置事件动态公共属性

当设置动态公共属性的时候,注意使用函数类型作为属性值,函数的返回值应当是神策支持的类型,请参考数据格式,否则会被过滤掉。

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"] // 返回元素是字符串的数组
  }
})
JS

另外如果函数在异步回调中返回值,这种情况也是会被过滤掉。

sensors.registerApp({
    num:function(){
        setTimeout(()=>{
            return 100
        },500)
    }
})
JS

5. 用户属性设置

5.1. 保留初次属性

对于需要保证只有首次设置时有效的属性,如用户首次充值金额、首次设置的昵称等,可以使用 setOnceProfile 接口进行记录。与 setProfile 方法不同的是,如果被设置的用户属性已存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建。

// 设置用户属性 subscribers 为 7277
sensors.setOnceProfile({
	email:'xxx@xx',
	favoriteFruits: ['苹果', '油桃'],
	subscribers: 7277
});

// 再次设置用户属性 subscribers 为 7278 不生效,属性值仍然是 7277
sensors.setOnceProfile({
    subscribers: 7278
});

JS

6. 获取预置属性

某些情况下可能需要在前端获取 SDK 预置属性,SDK 支持使用 getPresetProperties 方法获取部分事件预置属性。

// 获取事件预置属性
sensors.getPresetProperties();
JS

7. 清除公共属性

对于调用 registerApp 设置的公共属性,SDK 提供 clearAppRegister 接口清除这些属性。

// 清除设置的 current_url 和 referrer 公共属性
sensors.clearAppRegister(['current_url', 'referrer']);
JS

8. 获取匿名 ID 

小程序 SDK 提供了 getAnonymousID 接口来获取匿名 ID。

sensors.getAnonymousID();
JS

9. 本地用户信息加密

注意:暂不支持 京东、快手、QQ 。

目前 SDK 保存在 storage 中的信息主要是用户信息,可以对 storage 中的数据进行加密,保证安全性。功能配置:

// app.js
sensors.init({
	name: 'sensors',
	server_url: '数据接收地址',
	encrypt_storage : true // 是否开启本地加密存储
});
JS