dndc-wxmp-analytics

微信小程序用户数据统计工具

Usage no npm install needed!

<script type="module">
  import dndcWxmpAnalytics from 'https://cdn.skypack.dev/dndc-wxmp-analytics';
</script>

README

[TOC]

安装

$ npm install dndc-wxmp-analytics@2.10.8 -D

配置文件

# 域名配置
development_host:
  trackENV: dev
production_host:
  trackENV: prod

初始化

dndc-wxmp-analytics 需在 App 的 onLaunch 生命周期执行前配置初始化参数:

/** app.js */
import Statistics from 'dndc-wxmp-analytics';

const dndcAnalytics = new Statistics({
  site_code: '', // 咨询数据组
  app_id: '',
  app_name: '小程序',
  track_ali_env: '',  // 测试环境 'dev' 生产环境 'prod'
  event_code_url: '', //page平台生成-直接使用page生产地址
  show_log: false,
  black_pv_list: [],
})

// 神策配置
dndcAnalytics.loadSensorsData({
  // 测试环境 `server_url:'https://dongfengrichan-production.datasink.sensorsdata.cn/sa?token=17906b5c9eb1cda1&project=default'`
  // 生产环境 `server_url:'https://dongfengrichan-production.datasink.sensorsdata.cn/sa?token=17906b5c9eb1cda1&project=nissan_production'`
  server_url: '' // 根据环境使用上面的地址,
});

App({
  /** 为了方便后续页面的行为采集,请将 Statistics 的实例赋值给 App 的属性 */
  sa: dndcAnalytics,
});

参数列表

参数 类型 必填 默认值 说明
site_code string - 站点编码(咨询数据组获取)
app_id string - appid
app_name string - 小程序名称
event_code_url string - 事件码JSON
black_pv_list Array - 收集页面浏览事件的路径黑名单
show_log boolean False 设置为 true 时,会在控制台打印 log 信息(用于开发模式)
send_timeout number 60000 数据上报接口超时时间,单位为毫秒
source_channel Array 否 w [] 需要解析的渠道参数名称
track_ali_env dev | prod prod 日志接口环境

神策配置mid

业务如有要求的情况下,当用户注册成功或者登录成功时,需要调用login()方法传入mid

const app = getApp();

app.sa.login("登录 ID");

点击事件采集

静态事件码

/** page.js */
const app = getApp();

Page({
  onClick() {
    app.sa.track({
       hit_type: 'click',
       event_id: 'chebaba-app-20210105164547-1di0'
    });
  },
});

动态事件码

/** page.js */
const app = getApp();

Page({
  onClick() {
    app.sa.track({
      hit_type: 'click',
      event_id: 'chebaba-web-20210308084439-l9so-{carseries_id}-{cartype_id}',
      event_info: {
        dynamic: {
          carseries_id: 17,
          cartype_id: 279244,
        },
      },
    });
  },
});

target字段

特殊情况只能使用id并需要知道具体的名称可以使用target字段 用target字段必须要有动态参数id

id可以传具体有意义的值、如商品ID、活动ID、广告ID,没有实际ID情况可以用序号

/** page.js */
const app = getApp();

Page({
  onClick() {
    app.sa.track({
      hit_type: 'click',
      event_id: 'chebaba-web-20210308084439-l9so-{id}',
      event_info: {
        dynamic: {
          id: 11,
          target: '海蓝色'
        },
      },
    });
  },
});

如下图,如果数据组要求只有{序号}不需要具体名称,target可以不传。 非序号情况,都需要传target字段 image.png

令牌获取(特征编码)

业务如有要求的情况下,根据数据组要求特殊场景需要获取令牌后传给接口存储到业务表

const app = getApp();

Page({
  onClick() {
    const resFeatureID = app.sa.track({
      hit_type: 'feature'
    });
    console.log('resFeatureID', resFeatureID)
  },
});

特殊业务场景追加参数使用feature_extra

Page({
  onClick() {
    const resFeatureID = app.sa.track({
      hit_type: 'feature',
      feature_extra: {
        custom: 'test',
      }
    });
    console.log('resFeatureID', resFeatureID)
  },
});

弹窗事件

业务如有要求的情况下,根据数据组要求特殊场景发送popup事件

/** page.js */
const app = getApp();

Page({
  onClick() {
    app.sa.track({
      hit_type: 'popup',
      event_id: 'chebaba-app-20210105164547-1di0'
    });
  },
});

页面标题

在Page中配置saTitle

Page({
  saTitle: '页面标题',
  onShow() {
  // 页面代码
  }
})

在Component中配置saTitle(没有Page的情况)

Component({
  data: {
    saTitle: '页面标题',
  },
  methods: {},
});

秒针

秒针小程序API文档 传送门 秒针通码已封装到自建SDK,业务项目无需再引入秒针(历史项目需要移除秒针通码)。

/** app.js */
import Statistics from 'dndc-wxmp-analytics';

const dndcAnalytics = new Statistics({
  // ...
})
// 初始化秒针通码
dndcAnalytics.loadMiaozhen({
  appid: '',
  trackid: '', // 咨询数据组
})

App({
  sa: dndcAnalytics,
});

设置用户openid

const app = getApp();
app.sa.setOpenId('');

设置用户unionid

const app = getApp();
app.sa.setUnionId('');

设置用户信息

业务如有要求的情况下使用

const app = getApp();
wx.getUserInfo({
  success: res => {
    app.sa.setUser(res.userInfo)
  }
})

设置is_oneid (pz1a联友ID)

业务如有要求的情况下使用

const app = getApp();
app.sa.setIsOneId('');

手动发送pageView事件

当同一个Page通过URL参数或者状态控制不同模块的展示,需要关闭当前页面pavaView自动触发,调整为手动触发

// app.js文件 埋点初始化配置关闭自动触发pageView
black_pv_list: ['pages/index/index']

// 手动触发pageView
app.sa.pageView({
  title: '首页-车系',
  pageid: 'pages/index/index'
})

查看black_pv_list是否有效

配置pages/index/index,搜索ali刷新页面没有pageview事件触发即可 image.png

查看手动发送pageView事件是否有效

调用app.sa.pageView方法,搜索ali参数pagetitlepageid与发送的参数一致即可 image.png

秒针热力图

无需加载秒针通码,已在SDK加载

业务如有要求的情况下使用 因为微信小程序的限制,无法采集到控件的内容和结构数据,因此SDK无法自动收集用户的点击行为,所以我们采取的是声明式编程,需要小程序开发者绑定touchend事件

// 需要热图分析页面的顶层 View 控件
<view bindtouchend="handleTouchEnd">
...
</view>

const app = getApp()
Page({
  handleTouchEnd: (e) => {
    app.smwt.heatmap(e);
  }
})


// 将"test"替换为实际切片名称
app.smwt.setSection("test");

秒针通码修改内容

  • 变更初始化方法 init
  • 变更titleKey
  • 增加component构造器获取title

初始化样例

/** app.js */
import Statistics from 'dndc-wxmp-analytics';

const dndcAnalytics = new Statistics({
  track_ali_env: mc.$hosts.track,
  event_code_url: '', //page平台生成-直接使用page生产地址
  show_log: false,
  site_code: '', // 咨询数据组
  app_id: '',
  app_name: '小程序',
  black_pv_list: [], // 收集页面浏览事件的路径黑名单
})

// 初始化秒针通码
dndcAnalytics.loadMiaozhen({
  appid: '',
  trackid: '', // 咨询数据组
})

// 初始化神策通码
dndcAnalytics.loadSensorsData({
  server_url: '',
});

App({
  sa: dndcAnalytics,
  onLaunch(options) {},
});

采集字段

字段 字段说明 来源方式
site_code 主站编码 事件公共属性
site_channel 渠道 事件公共属性
openid 微信小程序用户 openid 事件公共属性
unionid 微信小程序用户 unionid 事件公共属性
unionid 微信小程序用户 unionid 事件公共属性
is_oneid 联友oneid 事件公共属性
app_id 微信小程序 app_id 事件公共属性
app_name 微信小程序名称 事件公共属性
scene 场景值 自动读取
path 页面路径 自动获取
pagetitle 页面标题 -
referrer 来源页面 自动读取
pageid 页面源信息 -
event_id 事件编码 -
event_info 事件扩展信息 -
event_name 事件名称 自动读取
hit_type 类型(pageview|event) -
smartcode 推广入口 自动读取|事件公共属性
sourcecode 内部入口 自动读取|事件公共属性
brand 设备品牌 wx.getSystemInfoSync()自动获取
model 设备型号 wx.getSystemInfoSync()自动获取
platform 客户端平台 wx.getSystemInfoSync()自动获取
sr 屏幕宽高 wx.getSystemInfoSync()自动获取
system 操作系统及版本 wx.getSystemInfoSync()自动获取
version 微信版本号 wx.getSystemInfoSync()自动获取
client_id 客户端ID 自动读取

从 v1 到 v2

帮助你从1.x版本升级到2.x版本说明

移除废弃的 API

业务项目如果部署了秒针SDK,需要移除第三方相关代码,所有方法统一使用自建SDK方法

  • 移除了appInit方法, SDK自动获取
  • 移除了registerAppappendRegister方法, 使用setUsersetOpenIdsetUnionIdsetIsOneId代替
  • 移除了clearAllRegister方法,SDK处理
  • 移除了pageInit方法,SDK自动获取

track方法参数变更

移除第一个参数,例子如下

// v1
this.$app.sa.track('Click', {
  hit_type: 'click',
  event_id: 've_mp-20210203163908-1wbn',
});

// v2
this.$app.sa.track({
  hit_type: 'click',
  event_id: 've_mp-20210203163908-1wbn',
});