小程序自带的有数据分析功能,而且很详细:概况、昨日概况、实时统计、访问分析、来源分析、自定义分析、用户画像、累计访问人数、TOP受访页面等等,并且也提供了表格下载功能。
这里增加的分享统计日志功能主要是用来记录分享页面的访问分析,即是谁分享的页面被谁打开了,一次打开从前台进入后台这个浏览时间有多长。说白了,也就是出于营销推广方面的需要,来进行分享统计,谁分享了页面增加积分,页面分享到群组里面后,被别人打开了,打开了多长时间,再增加多少积分,就是这样的一个操作。下面是实现的思路流程。
分享统计场景分析:
用户打开分享的小程序链接,此时,如果该用户未登陆小程序,会直接跳转至登陆界面,提醒用户点击登陆,只有在用户点击了微信登陆按钮后,才会获取到该用户的信息,然后开始执行写日志操作,记录下是谁打开了谁的分享。
设置一个初始时间,来统计该用户浏览了多长时间的小程序内容。
设置一个结束时间,当关闭小程序或者离开微信后,通过调用onShow来判断。
写日志操作放在哪里进行需要考虑清楚:
- 登陆成功后调用写日志操作
- 分享页调用写日志操作------采用此种
1、首先要保证分享的小程序页面链接带有可识别分享者信息的数据,以此作为判断是谁分享了小程序。当该条分享小程序记录被打开后,获取分享者信息,再做进一步逻辑判断。分享页面js部分代码如下:
//设置该页面的转发信息
onShareAppMessage: function (res) {
var value = wx.getStorageSync('user'); //获取分享者的用户信息
if (res.from === 'button') {
// 来自页面内转发按钮
console.log(res.target)
} else {
//console.log(res.target)
}
if (value.id) {
return {
title: '河南米云信息科技有限公司邀你来分享~~',
path: '/pages/index/index?uinfo='+value.id,
success: function (res) {
// 转发成功
var shareTickets = res.shareTickets;
var shareTicket = shareTickets;
wx.getShareInfo({
shareTicket: shareTicket,
success: function (res) {
wx.showToast({
title: '转发成功',
duration: 5000
})
},
fail: function (res) {
console.log('fail');
console.log(res);
wx.showToast({
title: 'fail:' + res.errMsg,
duration: 5000
})
}
});
},
fail: function (res) {
// 转发失败
}
}
} else {
console.log('分享者ID未能获取......')
}
},
通过以上分享设置就能获取到分享者的id信息,为下一步分析做准备。
2、当分享信息被点击后,通过判断是否带有id标志来判断下一步操作,获取到分享者id后,开启写如统计分享代码,将统计功能代码封装为函数,放到入口app.js中:
为什么放入app.js中?当然是方便其他页面调用了,当然也可以放在自己定义的js中。
查看分享数据统计对应数据库表字段:
CREATE TABLE IF NOT EXISTS `wxapp_shareview` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`uid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '浏览者ID',
`shareUid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '分享者ID',
`brand` varchar(50) NOT NULL DEFAULT '' COMMENT '手机品牌',
`model` varchar(100) NOT NULL DEFAULT '' COMMENT '手机型号',
`system` varchar(100) NOT NULL DEFAULT '' COMMENT '操作系统版本',
`pixelRatio` varchar(100) NOT NULL DEFAULT '' COMMENT '设备像素比',
`language` varchar(100) NOT NULL DEFAULT '' COMMENT '微信设置的语言',
`version` varchar(100) NOT NULL DEFAULT '' COMMENT '微信版本号',
`begin_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '初始访问时间',
`end_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '结束访问时间',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `shareUid` (`shareUid`),
KEY `begin_time` (`end_time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='微信分享查看统计表' AUTO_INCREMENT=1 ;
浏览者打开分享的小程序链接写入日志,给定一个初始时间;离开小程序关闭后再记录一条结束时间,通过两个时间差值来判断这条浏览记录是否为有效的分享浏览,有效则增加分享者积分,否则略过即可。