很高兴为您讲解“微信小程序数据分析之自定义分析的实现”的完整攻略。
概述
在进行微信小程序数据分析时,我们通常会使用第三方分析工具,如友盟、神策等。这些工具提供了丰富的数据分析功能,但有时可能不能完全满足我们的需求,这时我们就需要进行自定义分析。微信小程序提供了自定义数据分析能力,开发者可以通过发送自定义数据到指定的服务器上,然后进行自定义分析。
本攻略将会介绍如何在小程序中使用自定义数据分析功能,包括数据上报和分析展示。
步骤
1. 安装并配置分析工具
在进行自定义数据分析前,我们需要安装并配置相应的工具。这里我们以百度统计为例,具体步骤如下:
-
在 百度统计官网 上注册账号,并创建相应的应用。
-
在小程序中添加百度统计 SDK,并配置 APPID 和 TONGJI_APPID。
在小程序的 app.js 文件中引入百度统计 SDK 并进行配置:
javascript
// app.js
import { Baidu } from './utils/baidu';
App({
// 配置 APPID 和 TONGJI_APPID
onLaunch: function() {
new Baidu('your-appid', 'your-tongji-appid');
},
});
Baidu
是我们自己定义的一个类,代码如下:
```javascript
// utils/baidu.js
export class Baidu {
constructor(appid, tongjiAppid) {
if (tongjiAppid) {
this._initTongji(tongjiAppid);
} else {
console.error('请填写统计 appid');
}
this._initAnalytics();
}
/**
* 配置百度统计 SDK
*/
_initTongji(tongjiAppid) {
const ctx = wx.createContext();
const sys = wx.getSystemInfoSync();
wx.onAppRoute(function (res) {
ctx.w = res.path;
ctx.h = res.path;
ctx.u = 'https://' + res.path;
ctx.lv = 2;
wx.reportAnalytics(tongjiAppid, {
et: 1,
dl: '',
ul: '',
sr: sys.windowWidth + 'x' + sys.windowHeight,
vp: sys.windowWidth + 'x' + sys.windowHeight,
sd: sys.pixelRatio,
fl: sys.language,
je: sys.version,
tn: Date.now(),
rid: wx.getStorageSync('BAIDU_RID') || '',
tt: wx.getStorageSync('BAIDU_TITLE') || '',
ua: '',
referrer: wx.getStorageSync('BAIDU_REFERER') || '',
surl: wx.getStorageSync('BAIDU_SURL') || ''
}, {
ctx: ctx
});
});
}
/**
* 配置百度统计分析
*/
_initAnalytics() {
const _hmt = _hmt || [];
wx.loadFontFace({
family: '微软雅黑',
source: 'url("https://www.fonts.net.cn/font/download/771676a0dc9c4c06b15de455e9601e1f")',
success: () => {
_hmt.push(['_setCustomVar', 1, 'Font-Family', '微软雅黑']);
}
});
wx.loadFontFace({
family: 'Hiragino Sans GB',
source: 'url("https://www.fonts.net.cn/font/download/5dbf85ebeeaa4a958498366250f5325d")',
success: () => {
_hmt.push(['_setCustomVar', 2, 'Font-Family', '黑体']);
}
});
wx.loadFontFace({
family: 'Songti',
source: 'url("https://www.fonts.net.cn/font/download/c57985e2aeab459abcc05be522595d64")',
success: () => {
_hmt.push(['_setCustomVar', 3, 'Font-Family', '宋体']);
}
});
let host = 'https://hm.baidu.com/hm.js?' + this.tongjiAppid;
let hm = document.createElement('script');
hm.src = host;
let s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(hm, s);
// 添加百度统计代码到小程序的每个页面
Page({
onShareAppMessage: function () {
return {
title: '页面分享标题',
path: 'pages/index/index',
success: function (res) {
// 分享成功
},
fail: function (res) {
// 分享失败
}
};
},
onShow() {
const { route } = this;
if (!route) {
return;
}
let url = '/' + route;
if (Object.keys(this.options).length) {
let params = Object.entries(this.options)
.map(([key, val]) => `${key}=${val}`)
.join('&');
url += `?${params}`;
}
_hmt.push('_trackPageview', url);
}
});
}
}
```
- 如有需要,可以在百度统计中配置自定义事件,以备后续数据分析使用。
2. 上报自定义数据
在进行自定义数据分析前,我们需要定义好要上报的数据格式。自定义数据可以是任意的 JSON 对象,其中包含我们需要分析的数据。例如:
{
"event": "click_button",
"button_name": "my_button",
"button_type": "primary",
"extra_data": { "key1": "value1", "key2": "value2" }
}
其中 event
代表事件名称,button_name
代表按钮名称,button_type
代表按钮类型,extra_data
是附加信息。
我们可以在小程序中定义一个用于发送自定义数据的函数,如下所示:
// utils/analytics.js
import { Baidu } from './baidu';
/**
* 上报自定义事件
* @param {Object} data 要上报的数据
*/
function logEvent(data) {
// 实例化百度统计对象
const baidu = new Baidu('your-appid', 'your-tongji-appid');
// 上报自定义事件
baidu.log(data);
}
export {
logEvent,
};
其中 logEvent
函数可以根据具体业务逻辑进行修改,例如:
// pages/index/index.js
import { logEvent } from '../../utils/analytics';
Page({
// ...
handleClick() {
logEvent({
event: 'click_button',
button_name: 'my_button',
button_type: 'primary',
extra_data: { key: 'value' },
});
},
});
上述代码中,我们将自定义数据封装在一个 logEvent
函数中,然后在页面的点击事件中调用这个函数。这样,我们就可以在需要分析的地方发送自定义数据。
3. 分析展示
上报自定义数据完成后,我们需要对数据进行分析。这里我们以 ECharts 为例,使用它来展示自定义数据分析的结果。
-
在小程序中集成 ECharts 库。可以使用第三方 ECharts 小程序库,例如 mpvue-echarts,或者自己手动配置 ECharts 库。
-
在小程序中创建一个图表页面。
```xml
```
在图表页面中,我们需要添加一个 ec-canvas
组件,在这个组件中绘制图表。
- 在图表页面中进行数据分析。
```javascript
// pages/chart/chart.js
import * as echarts from '../../libs/echarts.min';
Page({
onReady: function() {
// 在页面渲染完成后执行数据分析
this._renderChart();
},
_renderChart() {
// 获取数据并进行分析
const data = this._getData();
const chartData = this._analysisData(data);
// 绘制图表
let chart = echarts.init(this.selectComponent('#mychart').canvas);
let option = {
// ECharts 配置
};
chart.setOption(option);
},
_getData() {
// 获取自定义数据
// ...
},
_analysisData(data) {
// 对自定义数据进行分析
// ...
return chartData;
},
});
```
在这个示例中,我们使用 _renderChart
函数来进行数据分析,并使用 _getData
和 _analysisData
函数来获取自定义数据和进行数据分析。最后,我们使用 ECharts 绘制图表。
注意,在进行数据分析时,需要对数据进行清洗和处理,并进行合理的可视化展示,才能得到有价值的分析结果。
示例
下面是两个使用自定义数据分析的示例:
示例一:统计页面停留时间
在小程序中统计用户浏览时间是一项重要的数据分析。为了实现这一功能,我们可以利用自定义数据分析功能,在小程序的每个页面打开和关闭时分别发送自定义数据,在后台对这些数据进行统计分析,最终得到用户的浏览时间。
// app.js
import { Baidu } from './utils/baidu';
App({
// 配置 APPID 和 TONGJI_APPID
onLaunch: function() {
new Baidu('your-appid', 'your-tongji-appid');
// 在小程序的每个页面添加自定义事件
wx.onAppRoute(function (res) {
wx.reportAnalytics('page_show', {
page: res.path, // 页面路径
time: Date.now(), // 打开时间
});
});
wx.onAppRouteDone(function(res) {
wx.reportAnalytics('page_close', {
page: res.path, // 页面路径
time: Date.now(), // 关闭时间
});
});
},
});
在上面的代码中,我们在小程序的启动方法中,分别添加了一个打开页面和关闭页面的自定义事件。这样,每次用户打开或关闭页面时,都会发送相应的自定义事件。
// pages/chart/chart.js
import * as echarts from '../../libs/echarts.min';
Page({
onReady: function() {
// 在页面渲染完成后执行数据分析
this._renderChart();
},
_renderChart() {
// 获取数据并进行分析
const data = this._getData();
const chartData = this._analysisData(data);
// 绘制图表
let chart = echarts.init(this.selectComponent('#mychart').canvas);
let option = {
// ECharts 配置
};
chart.setOption(option);
},
_getData() {
// 获取自定义数据
return wx.getStorageSync('page_time') || [];
},
_analysisData(data) {
// 对自定义数据进行分析
let chartData = [];
let timeMap = {};
data.forEach((item) => {
if (item.event === 'page_show') {
timeMap[item.page] = {
path: item.page,
open_time: item.time,
}
} else if (item.event === 'page_close') {
const openTime = timeMap[item.page];
if (openTime) {
const duration = item.time - openTime.open_time;
chartData.push({
category: item.page,
value: duration
});
}
}
});
return chartData;
},
});
在图表页面的 onReady
方法中,我们调用了 _renderChart
进行数据分析,并使用 _getData
和 _analysisData
函数分别用来获取自定义数据和进行数据分析。
在 _analysisData
中,我们对自定义数据进行了清洗和处理,最终得到了每个页面的停留时间。利用 ECharts 绘制出可视化的图表。
示例二:统计按钮点击次数
在小程序中统计用户点击按钮的次数,是另一项重要的数据分析。与统计页面停留时间类似,我们可以通过自定义数据分析的功能,在按钮点击时发送相应的自定义数据,后台分析自定义数据,并得到用户点击按钮的次数。
// pages/index/index.js
import { logEvent } from '../../utils/analytics';
Page({
// ...
handleClick() {
// 上报按钮点击事件
logEvent({
event: 'click_button',
button_name: 'my_button',
button_type: 'primary',
});
},
});
在按钮点击事件中,我们调用了 logEvent
函数上报相应的自定义数据。
// pages/chart/chart.js
import * as echarts from '../../libs/echarts.min';
Page({
onReady: function() {
// 在页面渲染完成后执行数据分析
this._renderChart();
},
_renderChart() {
// 获取数据并进行分析
const data = this._getData();
const chartData = this._analysisData(data);
// 绘制图表
let chart = echarts.init(this.selectComponent('#mychart').canvas);
let option = {
// ECharts 配置
};
chart.setOption(option);
},
_getData() {
// 获取自定义数据
return wx.getStorageSync('click_button') || [];
},
_analysisData(data) {
// 对自定义数据进行分析
let chartData = [];
let buttonMap = {};
data.forEach((item) => {
if (item.event === 'click_button') {
const button = item.button_name;
buttonMap[button] = buttonMap[button] ? buttonMap[button] + 1 : 1;
}
});
Object.entries(buttonMap).forEach(([key, value]) => {
chartData.push({
category: key,
value: value,
});
});
return chartData;
},
});
在图表页面的 onReady
方法中,我们调用了 _renderChart
进行数据分析,并使用 _getData
和 _analysisData
函数分别用来获取自定义数据和进行数据分析。
在 _analysisData
中,我们对自定义数据进行了清洗和处理,最终得到了每个按钮的点击次数。利用 ECharts 绘制出可视化的图表。
结语
自定义数据分析功能是微信小程序数据分析的重要功能之一,可以帮助开发者实现更具体的数据分析需求。在使用自定义数据分析功能时,需要根据具体需求和业务场景进行自定义数据上报和分析展示。同时,为了使分析结果更加准确和可靠,应尽可能地对自定义数据进行清洗和处理,便于后续的数据分析。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序数据分析之自定义分析的实现 - Python技术站