1. 集成神策分析 SDK

  •  GitHub 上获取微信小程序 SDK 源码
  •  sensorsdata.min.js 文件放入小程序项目中
  •  app.js 文件中通过 require() 引入 SDK

app.js

var sensors = require('./utils/sensorsdata.min.js');
 
// 配置初始化参数
sensors.setPara({
    name: 'sensors',
    server_url: '您的数据接收地址',
    // 全埋点控制开关
    autoTrack:{
        appLaunch: true, // 默认为 true,false 则关闭 $MPLaunch 事件采集
        appShow: true, // 默认为 true,false 则关闭 $MPShow 事件采集
        appHide: true, // 默认为 true,false 则关闭 $MPHide 事件采集
        pageShow: true, // 默认为 true,false 则关闭 $MPViewScreen 事件采集
        pageShare: true, // 默认为 true,false 则关闭 $MPShare 事件采集
        mpClick: false, // 默认为 false,true 则开启 $MPClick 事件采集
        mpFavorite: true, // 默认为 true,false 则关闭 $MPAddFavorites 事件采集
		pageLeave: false // 默认为 false, true 则开启 $MPPageLeave事件采集
    },
    // 自定义渠道追踪参数,如 source_channel: ["custom_param"]
    source_channel: [],
    // 是否允许控制台打印查看埋点数据(建议开启查看)
    show_log: true,
    // 是否允许修改 onShareAppMessage 里 return 的 path,用来增加(登录 ID,分享层级,当前的 path),在 app onShow 中自动获取这些参数来查看具体分享来源、层级等
    allow_amend_share_path: true
});
 
// 初始化 SDK
if(不使用 openid 作为匿名 ID){
    sensors.init();
}
// 如果需要使用 openid 作为匿名 ID,请单独获取 openid 之后调用 sensors.setOpenid() 方法
wx.request({
    url: '后端获取 OpenID 的请求',
    success: function(res){
        if(res.OpenID){
            sensors.setOpenid(res.OpenID); 
        }
    },
    complete: function(){
		// 如果获取 openid 失败,SDK 会以 UUID 作为匿名 ID 发数据
        sensors.init();
    }
});
 
App({
    onLaunch : function( options ){},
    onShow : function( options ){},
    onHide : function(){}
});
JS
  • 通过 npm i sa-sdk-miniprogram 安装 SDK
  •  main.js 中通过 import 引入 SDK

main.js

import Vue from 'vue';
import sensors from 'sa-sdk-miniprogram'
 
// 配置初始化参数
sensors.setPara({
    name: 'sensors',
    server_url: '您的数据接收地址',
    // 全埋点控制开关
    autoTrack:{
        appLaunch: true, // 默认为 true,false 则关闭 $MPLaunch 事件采集
        appShow: true, // 默认为 true,false 则关闭 $MPShow 事件采集
        appHide: true, // 默认为 true,false 则关闭 $MPHide 事件采集
        pageShow: true, // 默认为 true,false 则关闭 $MPViewScreen 事件采集
        pageShare: true, // 默认为 true,false 则关闭 $MPShare 事件采集
        mpClick: false, // 默认为 false,true 则开启 $MPClick 事件采集
        mpFavorite: true, // 默认为 true,false 则关闭 $MPAddFavorites 事件采集
		pageLeave: false // 默认为 false, true 则开启 $MPPageLeave事件采集
    },
    // 自定义渠道追踪参数,如 source_channel: ["custom_param"]
    source_channel: [],
    // 是否允许控制台打印查看埋点数据(建议开启查看)
    show_log: true,
    // 是否允许修改 onShareAppMessage 里 return 的 path,用来增加(登录 ID,分享层级,当前的 path),在 app onShow 中自动获取这些参数来查看具体分享来源、层级等
    allow_amend_share_path: true
});  
 
// 初始化 SDK
if(不使用 openid 作为匿名 ID){
    sensors.init();
}

// 如果需要使用 openid 作为匿名 ID,请单独获取 openid 之后调用 sensors.setOpenid() 方法
wx.request({
    url: '后端获取 OpenID 的请求',
    success: function(res){
        if(res.OpenID){
            sensors.setOpenid(res.OpenID); 
        }
    },
    complete: function(){
		// 如果获取 openid 失败,SDK 会以 UUID 作为匿名 ID 发数据
        sensors.init();
    }
});
 
import App from './App';
Vue.config.productionTip = false;
  
App.mpType = 'app';
  
const app = new Vue({
    ...App
});
app.$mount();
JS
  • 通过 npm i sa-sdk-miniprogram 安装 SDK
  •  app.jsx 中通过 import 引入 SDK

app.jsx

import Taro, { Component } from '@tarojs/taro'
import Index from './pages/index'
import sensors from 'sa-sdk-miniprogram'
 
// 配置初始化参数
sensors.setPara({
    name: 'sensors',
    server_url: '您的数据接收地址',
    // 全埋点控制开关

        
    autoTrack:{
        appLaunch: true, // 默认为 true,false 则关闭 $MPLaunch 事件采集
        appShow: true, // 默认为 true,false 则关闭 $MPShow 事件采集
        appHide: true, // 默认为 true,false 则关闭 $MPHide 事件采集
        pageShow: true, // 默认为 true,false 则关闭 $MPViewScreen 事件采集
        pageShare: true, // 默认为 true,false 则关闭 $MPShare 事件采集
        mpClick: false, // 默认为 false,true 则开启 $MPClick 事件采集
        mpFavorite: true, // 默认为 true,false 则关闭 $MPAddFavorites 事件采集
		pageLeave: false // 默认为 false, true 则开启 $MPPageLeave事件采集
    },
    // 自定义渠道追踪参数,如 source_channel: ["custom_param"]
    source_channel: [],
    // 是否允许控制台打印查看埋点数据(建议开启查看)
    show_log: true,
    // 是否允许修改 onShareAppMessage 里 return 的 path,用来增加(登录 ID,分享层级,当前的 path),在 app onShow 中自动获取这些参数来查看具体分享来源、层级等
    allow_amend_share_path: true
});
 
// 初始化 SDK
if(不使用 openid 作为匿名 ID){
    sensors.init();
}

// 如果需要使用 openid 作为匿名 ID,请单独获取 openid 之后调用 sensors.setOpenid() 方法
wx.request({
    url: '后端获取 OpenID 的请求',
    success: function(res){
        if(res.OpenID){
            sensors.setOpenid(res.OpenID); 
        }
    },
    complete: function(){
		// 如果获取 openid 失败,SDK 会以 UUID 作为匿名 ID 发数据
        sensors.init();
    }
});
 
class App extends Component {
    config = {
        pages: [
            'pages/index/index'
        ],
        window: {
            backgroundTextStyle: 'light',
            navigationBarBackgroundColor: '#fff',
            navigationBarTitleText: 'WeChat',
            navigationBarTextStyle: 'black'
        }
    }
    constructor(){
        super();
    }
}
JS
  • 通过 npm i sa-sdk-miniprogram 安装 SDK
  •  main.js 中通过 import 引入 SDK,注意需要在 vue 之前引入

main.js

import sensors from 'sa-sdk-miniprogram'
import Vue from 'vue';
import App from './App';
 
// 配置初始化参数
sensors.setPara({
    name: 'sensors',
    server_url: '您的数据接收地址',
    // 全埋点控制开关
    autoTrack:{
        appLaunch: true, // 默认为 true,false 则关闭 $MPLaunch 事件采集
        appShow: true, // 默认为 true,false 则关闭 $MPShow 事件采集
        appHide: true, // 默认为 true,false 则关闭 $MPHide 事件采集
        pageShow: true, // 默认为 true,false 则关闭 $MPViewScreen 事件采集
        pageShare: true, // 默认为 true,false 则关闭 $MPShare 事件采集
        mpClick: false, // 默认为 false,true 则开启 $MPClick 事件采集
        mpFavorite: true, // 默认为 true,false 则关闭 $MPAddFavorites 事件采集
		pageLeave: false // 默认为 false, true 则开启 $MPPageLeave事件采集
    },
    // 自定义渠道追踪参数,如 source_channel: ["custom_param"]
    source_channel: [],
    // 是否允许控制台打印查看埋点数据(建议开启查看)
    show_log: true,
    // 是否允许修改 onShareAppMessage 里 return 的 path,用来增加(登录 ID,分享层级,当前的 path),在 app onShow 中自动获取这些参数来查看具体分享来源、层级等
    allow_amend_share_path: true
});
 
// 初始化 SDK
if(不使用 openid 作为匿名 ID){
    sensors.init();
}

// 如果需要使用 openid 作为匿名 ID,请单独获取 openid 之后调用 sensors.setOpenid() 方法
wx.request({
    url: '后端获取 OpenID 的请求',
    success: function(res){
        if(res.OpenID){
            sensors.setOpenid(res.OpenID); 
        }
    },
    complete: function(){
		// 如果获取 openid 失败,SDK 会以 UUID 作为匿名 ID 发数据
        sensors.init();
    }
});

Vue.config.productionTip = false;

App.mpType = 'app';
 
const app = new Vue(App);
app.$mount();
JS
  • 通过 npm i sa-sdk-miniprogram 安装 SDK
  •  app.wpy 中通过 import 引入 SDK

app.wpy

import sensors from 'sa-sdk-miniprogram'
import wepy from 'wepy';
 
// 配置初始化参数
sensors.setPara({
    name: 'sensors',
    server_url: '您的数据接收地址',
    // 全埋点控制开关
    autoTrack:{
        appLaunch: true, // 默认为 true,false 则关闭 $MPLaunch 事件采集
        appShow: true, // 默认为 true,false 则关闭 $MPShow 事件采集
        appHide: true, // 默认为 true,false 则关闭 $MPHide 事件采集
        pageShow: true, // 默认为 true,false 则关闭 $MPViewScreen 事件采集
        pageShare: true, // 默认为 true,false 则关闭 $MPShare 事件采集
        mpClick: false, // 默认为 false,true 则开启 $MPClick 事件采集
        mpFavorite: true, // 默认为 true,false 则关闭 $MPAddFavorites 事件采集
		pageLeave: false // 默认为 false, true 则开启 $MPPageLeave事件采集
    },
    // 自定义渠道追踪参数,如 source_channel: ["custom_param"]
    source_channel: [],
    // 是否允许控制台打印查看埋点数据(建议开启查看)
    show_log: true,
    // 是否允许修改 onShareAppMessage 里 return 的 path,用来增加(登录 ID,分享层级,当前的 path),在 app onShow 中自动获取这些参数来查看具体分享来源、层级等
    allow_amend_share_path: true
});
 
// 初始化 SDK
if(不使用 openid 作为匿名 ID){
    sensors.init();
}

// 如果需要使用 openid 作为匿名 ID,请单独获取 openid 之后调用 sensors.setOpenid() 方法
wx.request({
    url: '后端获取 OpenID 的请求',
    success: function(res){
        if(res.OpenID){
            sensors.setOpenid(res.OpenID); 
        }
    },
    complete: function(){
		// 如果获取 openid 失败,SDK 会以 UUID 作为匿名 ID 发数据
        sensors.init();
    }
});  
 
export default class extends wepy.app {
    onLaunch(option) {}
}
JS
  • 详细的的初始化配置参数可参考小程序 SDK API 文档;
  • 建议通过 require 或 import 引入 SDK 后,立即调用 setPara() 来配置初始化参数,防止延迟配置导致元素点击事件处理函数无法被代理,预置元素点击事件无法采集;
  • 在调用 init() 接口之前,采集的数据被缓存在内存中;调用 init() 接口后,会将缓存的数据通过网络发送出去。

2. SDK 基本配置

2.1. 配置项目数据接收地址

如下图所示获取数据接收地址:

2.2. 设置事件公共属性

对于所有事件都需要添加的属性,可在初始化 SDK 前,调用 registerApp() 将属性注册为公共属性:

getApp().sensors.registerApp({
	userLever: 'VIP3',
	userSex: '男'
});
JS

需要在 App 实例化之前调用 registerApp() 方法完成公共属性的注册,否则会导致部分数据采集不到注册的公共属性

2.3. 用户登录

当用户注册成功或者登录成功时,需要调用 login() 方法传入登录 ID:

getApp().sensors.login("登录 ID");
JS

对于自动登录的用户,可以在 SDK 初始化前,获取登录 ID 并调用 login() 方法。

2.4. 代码埋点追踪事件

可通过 track() 方法追踪用户行为事件,并为事件添加自定义属性:

getApp().sensors.track('click',{
	name: '点击'
});

JS

3. 调试查看事件信息

3.1. 事件的触发日志

setPara() 配置初始化参数时,通过 show_log: true 打开 Log 功能且 SDK 完成初始化后(即 init() 方法调用后),微信开发者工具 console 会打印采集的数据信息:


3.2. 事件的发送情况

事件数据发送成功时,可以在微信开发者工具的 Network 模块中,可以看到 sa 的请求:

4. SDK 可选配置

4.1. 设置用户属性

setProfile( properties ): 可以设定用户属性,同一个 key 多次设置时,value 值会进行覆盖替换:

getApp().sensors.setProfile({
	email:'xxx@xx',
	favoriteFruits: ['苹果', '油桃'],
	subscribers: 7277
});
JS

4.2. 渠道追踪

用户通过含有 utm 相关参数的路径访问小程序时,预置事件 $MPLaunch、$MPShow、$MPViewScreen 会解析启动路径中的 utm 相关参数作为自身的属性与属性值,并会设置 $latest_utm 相关属性到所有事件中,该特性在小程序的生命周期内有效。