1. 小程序埋点SDK使用说明

1.1. 当前支持的小程序类型

当前支持四类小程序:微信小程序(miniType: 'wx')、字节跳动小程序(miniType: 'tt')、支付宝小程序(miniType: 'my')、百度小程序(miniType: swan),这四类小程序共用一套sdk。

1.1.1. 显示指明小程序类型

小程序对应的类型名: 微信小程序(miniType: 'wx')、字节跳动小程序(miniType: 'tt')、支付宝小程序(miniType: 'my')、百度小程序(miniType: swan)。

初始化采集器时,需要显示指明当前小程序类型如: miniType: 'tt' ;

详细使用请看下面初始化配置说明,若初始化时不显示申明,默认为"微信小程序"。

这四类小程序对应的类型说明:

const SDKTYPE = {
  'wx': 'MiniProgram',
  'tt': 'toutiaoMiniProgram',
  'my': 'alipayMiniProgram',
  'swan': 'baiduMiniProgram'
};

采集的日志里对应的字段:sdkType。 比如当前配置的是字节跳动小程序:miniType: 'tt', 那么日志中sdkType: 'toutiaoMiniProgram'。

1.2. 获取和引入 HubbleData SDK

获取到 DATracker.js 文件后,把该文件放到小程序根目录 utils 目录下, 然后在 app.js 第一行引入 import DATracker from './utils/DATracker';(注意:下载下来的文件名改成DATracker.js即可)

1.2.1. 使用

  • sdk初始化配置(必须)
    编辑 app.js
//在app.js 第一行引入sdk
import DATracker from './utils/DATracker'
//sdk 初始化配置, 其中 88888 替换对应的 appkey
DATracker.init('88888');

如果初始化的时候需要设置其它配置,如下

//一下配置为选填
DATracker.init('88888', {
    // 指明小程序类型: (微信: wx) | (字节跳动: tt) | (支付宝: my) | (百度: swan)
    miniType: 'wx', 
    //appVersion 为应用版本号属性
    appVersion: 'v1.0.1',
    //设置false,关闭调试模式,默认为false
    debug: false,
    //重写路由变动时触发的函数
    onPageShow: function(datracker, router, page) {
        //注意,如果要发送 PV事件,必须调用以下方法
        datracker.track_pageview({data: page['xxName']});
    }
});

现在其它Page 里就可以通过 getApp 来使用 sdk 的API了

// Page 模块
var app = getApp();
Page({
  data: {
    motto: '新梦想兔家庭智能管理平台',
    array:[{title:'我的购物',icon:'success'}]
  },
  tapName: function(event) {
     //触发自定义事件 
     app.DATracker.track('eventList', {
       title: event.target.dataset.title
     });
  }
})

1.3. 微信小程序HTTPS域名配置

登录公众平台-设置-开发者设置-安全域名配置 中增加Hubble域名: https://hubble.netease.com(埋点日志上报需要)、wss://hubble.netease.com(A/B实验实时调试需要)

1.4. 如何标识用户

1.4.1. 在登录和注册成功后,调用 DATracker.login(userId) 来标识真实用户

sdk 会自动生成一个 deviceUdid 并永久保存到小程序的 localStorage 中,作为匿名用户唯一标识。如果你已知了真实的用户 id, 你可以通过 DATracker.login(userId) 设置用户 userId。

//在某个 Page 中
var app = getApp();
Page({
    data: {},
    loginOK: function(userId){
        app.DATracker.login(userId);
    }
})

1.4.2. 使用 DATracker.logout 切换到之前的匿名 id

//在某个 Page 中
var app = getApp();
Page({
    data: {},
    loginOut: function(){
        app.DATracker.logout();
    }
})

1.5. 自定义事件追踪

HubbleData SDK 初始化成功后,即可以通过 DATracker.track() 记录事件

//在某个 Page 中
var app = getApp();
Page({
    data: {},
    viewProduct: function(){
        // 追踪浏览商品事件。
        app.DATracker.track('ViewProduct', {
            ProductId: '123456',
            ProductCatalog: "Laptop Computer",
            ProductName: "MacBook Pro",
            ProductPrice: 123.45
        });
    }
})

1.6. PV事件

SDK已经自动追踪了微信小程序中 Page onShow,这个会在每次打开页面都会调用一次(即PV)。
手动调用接口: track_pageview(properties)


//在某个 Page 中
var app = getApp();
Page({
    data: {},
    onShow: function(){
        // 触发PV事件
        app.DATracker.track_pageview();
    }
})

注:若手动调用API,建议配置 onPageShow,这样关闭自动追踪PV事件。

1.7. 转发分享事件

SDK已经自动追踪了微信小程序中 onShareAppMessage,每次触发转发行为都会上报一次转发分享事件。
手动调用接口: track_share(properties)


//在某个 Page 中
var app = getApp();
Page({
    data: {},
    onShareAppMessage: function(){
        // 触发转发分享事件
        app.DATracker.track_share();
    }
})

注:若手动调用API,建议关闭sdk自动追踪转发分享事件。

1.7.1. 转发分享事件sdk配置项介绍

  1. sdk开启自动追踪了微信小程序中 onShareAppMessage方法,该配置项是sdk默认开启的。

    // 开启追踪onShareAppMessage
    DATracker.init('88888', {
     share: true
    });
    
  2. sdk开启分享后续追踪,开启后sdk在自定义分享的path上添加追踪标志。

    //开启分享后续追踪
    DATracker.init('88888', {
     allowAmendSharePath: true
    });
    
  3. 允许所有页面都可分享

    // 允许所有页面都可分享配置
    DATracker.init('88888', {
    shareAll: true,
    share: false,
    allowAmendSharePath: false
    });
    

1.8. 预置属性

所有事件都会有的预置属性:

字段名称 类型 说明
deviceOs string 操作系统
deviceOsVersion string 操作系统版本
devicePlatform string 平台
screenWidth int 分辨率(宽)
screenHeight int 分辨率(高)
deviceModel string 设备型号
networkType string 网络
localeLanguage string 本地语言
appVersion string 应用版本
currentUrl string 当前页url
urlPath string 当前页路径
referrer string 表示:当小程序内部页面互相切换时,记住上一页的currentUrl
scene string 表示:场景值 ,如: '1001'

1.9. 设置用户属性

1.9.1. DATracker.people.set(properties)

直接设置用户的属性,如果存在则覆盖。

  • properties:object,必选。
//在某个 Page 中
var app = getApp();
Page({
    data: {},
    viewProduct: function(){
        app.DATracker.people.set({height:'188cm'});
    }
})

1.9.2. 内置用户属性列表

字段名称 类型 说明
$realName string 姓名
$age int 用户年龄
$account string 用户登录账号
$birthday date 用户出生日期 格式 yyyy-MM-dd
$gender string 用户性别
$country string 国家
$region string 省份
$city string 城市
persistedTime date 首次使用时间
lastUseTime date 最近使用时间

1.9.3. 内置属性设置方法

设置用户名

DATracker.people.set_realname(realname)

设置国家

DATracker.people.set_country(country)

设置省份

DATracker.people.set_province(province)

设置城市

DATracker.people.set_city(city)

设置性别

DATracker.people.set_gender(gender)

设置出生日期

DATracker.people.set_birthday(birthday)

设置 账户 + 姓名 + 生日 + 性别

DATracker.people.set_populationWithAccount(account, realname, birthday, gender)

设置 国家 + 省份 + 城市

DATracker.people.set_location(country, region, city)

1.10. 其它配置

1.10.1. 应用版本号 appVersion

在 app.js 中编辑

import DATracker from './utils/DATracker'
DATracker.init('88888', {
    //appVersion 为应用版本号属性
    appVersion: 'v1.0.1'
});

1.10.2. onPageShow {Function}

重写路由变动时触发的函数,此时不再自动触发 PV事件,如果要发送 PV事件,必须调用 datracker.track_pageview()方法

import DATracker from './utils/DATracker'
//一下配置为选填
DATracker.init('88888', {
    //重写路由变动时触发的函数
    /**
     * @param {Object} datracker sdk实例 == DATracker
     * @param {String} router 路由地址
     * @param {Object} page 当前页Page对象
     */
    onPageShow: function(datracker, router, page) {
        //注意,如果要发送 PV事件,必须调用以下方法
        datracker.track_pageview({data: page['xxName']});
        //其它事件
        datracker.track('pageR', {
            pageName: 'ss'
        });
    }
});

1.10.3. share {Boolen}

是否自动上报转发分享事件,默认 true

import DATracker from './utils/DATracker'
// 关闭自动追踪转发分享事件
DATracker.init('88888', {
    share: false
});

1.10.4. debug {String}

调试配置,默认为 false, 不启动。配置为 true后,控制台打印出发送的埋点数据

import DATracker from './utils/DATracker'
//一下配置为选填
DATracker.init('88888', {
    debug: true
});

1.10.5. sendConfig {Object}

小程序中 request 的最大并发数是有限制的,当应用中并发数过多的时候,可以通过 配置 sendConfig,接管sdk的数据发送。

  • sendConfig.fn( params ) 数据发送函数,接管sdk的数据发送方法写入此函数中
    -- params ==> params.url 数据发送的url
    -- params ==> params.method 数据发送类型
    -- params ==> params.success 数据发送成功后执行方法
    -- params ==> params.fail 数据发送失败后执行方法
  • sendConfig.start 默认为 false , 设置为 true 后表示启动接管 sdk的数据发送,设置为 false 后启动默认内置sdk数据发送
import DATracker from './utils/DATracker'

//接管sdk的数据发送函数实现
function send(params) {
    wx.request({
      url: params.url,
      method: params.method,
      success: params.success,
      fail: params.fail
    }); 
}

DATracker.init('88888', {
  appVersion: 'v0.0.1',
  //重新定义数据发送方式
  sendConfig: {
    start: true,
    fn: function(params) {
      send(params);
    }
  }
});

1.11. 其它 API

1.11.1. time_event

统计事件耗时(ms),参数为事件名称。触发一次后移除该事件的耗时监听。

// Page 模块
var app = getApp();
//统计clickBuy事件的耗时
app.DATracker.time_event('clickBuy');
Page({
  data: {
    motto: '新梦想兔家庭智能管理平台',
    array:[{title:'我的购物',icon:'success'}]
  },
  buy: function(event) {
     //触发自定义事件 
     app.DATracker.track("clickBuy");
  }
})

1.12. 实际案例

获取到 DATracker.js 文件后,把该文件放到小程序根目录 utils 目录下。

1.12.1. 在根目录的 app.js 中引入

//在app.js 第一行引入sdk
import DATracker from './utils/DATracker'
DATracker.init('88888', {
    // 指明小程序类型: (微信: wx) | (字节跳动: tt) | (支付宝: my) | (百度: swan)
    miniType: 'wx', 
    //appVersion 为应用版本号属性
    appVersion: 'v1.0.1',
    //设置false,关闭调试模式,默认为false
    debug: false,
    //重写路由变动时触发的函数
    onPageShow: function(datracker, router, page) {
        //注意,如果要发送 PV事件,必须调用以下方法
        datracker.track_pageview({data: page['xxName']});
    }
});

1.12.2. 在 Page 里的 js中通过 getApp() 来调用 Hubble的sdk

// Page 模块
var app = getApp();
Page({
  data: {
    motto: '新梦想兔家庭智能管理平台',
    array:[{title:'我的购物',icon:'success'}]
  },
  tapName: function(event) {
     //触发自定义事件 
     app.DATracker.track('eventList', {
       title: event.target.dataset.title
     });
  }
})

2. 微信小程序A/B实验sdk使用说明

当前版本支持编程实验

2.1. 小程序WSS域名配置

登录公众平台-设置-开发者设置-安全域名配置 中增加Hubble域名: wss://hubble.netease.com

2.2. 引入 DATracker_ABtest.js

获取到和引入 DATracker_ABtest.js后(注意:下载下来的文件名改成 DATracker_ABtest.js 即可),把该文件放到小程序根目录 utils 目录下,然后在 app.js 中添加如下代码(必须先引入DATracker.js):

//app.js
import DATracker from './utils/DATracker';
import ABtest from './utils/DATracker_ABtest';

2.3. 初始化

DATracker初始化后,再初始化ABtest。

DATracker.init('88888', {
  // 指明小程序类型: (微信: wx) | (字节跳动: tt) | (支付宝: my) | (百度: swan)
  miniType: 'wx', 
  appVersion: 'v0.0.1',
  debug: true
});

// 将ABtest实例注册到 DATracker 中,方便后面使用
DATracker['abtest'] = new ABtest(DATracker);

2.4. 获取实验变量


// 调用 DATracker.abtest.get_variation 方法
DATracker.abtest.get_variation((flgs) => {
    // 获取变量`aColor`的值,默认值设置为'red';
    const aColor = flgs.get('aColor', 'red');
    this.setData({
       aColor: aColor
    });
});
<view>
    <label style="background-color:">该label背景颜色通过获取实验变量来设置</label>
</view>

当需要某个变量时,首先调用 DATracker.abtest.get_variation 方法,参数是一个回调函数。 回调函数参数是abtest对象,比如命名为 flgs ,再调用 flgs.get 方法,获取变量值。 其中 get 方法接受两个变量:变量名称 和 变量默认值。

2.5. 主动拉取实验配置方法

DATracker.abtest.async_get_variable();

2.6. 开启实验(非必须)

默认开启实验,若需关闭: enable_abtest : false


// 实验sdk初始化时配置,内置默认开启
DATracker['abtest'] = new ABtest(DATracker, { enable_abtest: true });

2.7. 自定义拉取实验配置频率(非必须)

默认拉取实验配置频率60分钟一次,即本地缓存为60分钟。

自定义配置(单位分钟): interval_mins_abtest : 60


// 实验sdk初始化时配置,内置默认60分钟;
DATracker['abtest'] = new ABtest(DATracker, { interval_mins_abtest: 60 });

2.8. 预定义变量(全局配置)(非必须)

预定义变量配置: default_variables : { aColor: 'red' }


// 实验sdk初始化时配置,预定义变量 aColor,默认值 red
DATracker['abtest'] = new ABtest(DATracker, default_variables : { aColor: 'red' });

2.9. A/B实验示例

2.9.1. 在app.js 第一行引入sdk


import DATracker from './utils/DATracker';
import ABtest from './utils/DATracker_ABtest';

DATracker.init('88888', {
  // 指明小程序类型: (微信: wx) | (字节跳动: tt) | (支付宝: my) | (百度: swan)
  miniType: 'wx', 
  appVersion: 'v0.0.1',
  debug: true
});

// 将ABtest实例注册到 DATracker 中,方便后面使用
DATracker['abtest'] = new ABtest(DATracker);

2.9.2. 在 Page 里调用

改变颜色


// Page 模块

var app = getApp();
// 获取A/B实验实例
var ABTest = app.DATracker['abtest'];

Page({
  data: {
    motto: '新梦想兔家庭智能管理平台',
    aColor: ''
  },
  onLoad: function(event) {
    // 调用 ABTest.get_variation 方法
    ABTest.get_variation((flgs) => {
        // 获取变量`aColor`的值,默认值设置为'red';
        const aColor = flgs.get('aColor', 'red');
        // 重新赋值
        this.setData({
          aColor: aColor
        });
    });
  }
})

模板


<view>
    <label style="background-color:">该label背景颜色通过获取实验变量来设置</label>
</view>

results matching ""

    No results matching ""