1.2.1.7 小程序 SDK使用说明

优质
小牛编辑
128浏览
2023-12-01

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. 预置属性

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

字段名称类型说明
deviceOsstring操作系统
deviceOsVersionstring操作系统版本
devicePlatformstring平台
screenWidthint分辨率(宽)
screenHeightint分辨率(高)
deviceModelstring设备型号
networkTypestring网络
localeLanguagestring本地语言
appVersionstring应用版本
currentUrlstring当前页url
urlPathstring当前页路径
referrerstring表示:当小程序内部页面互相切换时,记住上一页的currentUrl
scenestring表示:场景值 ,如: '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. 内置用户属性列表

字段名称类型说明
$realNamestring姓名
$ageint用户年龄
$accountstring用户登录账号
$birthdaydate用户出生日期 格式 yyyy-MM-dd
$genderstring用户性别
$countrystring国家
$regionstring省份
$citystring城市
persistedTimedate首次使用时间
lastUseTimedate最近使用时间

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.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>