【2019-12-13】微信小程序-记录用户在某一个页面的停留时
2019-12-13 本文已影响0人
铅笔芯qbx
如题,如何记录用户在某一个页面的停留时间?
首先看下微信给出的小程序的官方文档,关于页面路由的介绍,如图
不难发现,每个新打开的页面都会执行
onShow()
,而旧页面或是执行onHide()
或是执行onUnload()
,如此,大体的思路就有了。onShow()
时记录时间为页面开始时间onHide()
或onUnload()
时记录时间为结束时间,两者相减就可以得到页面的停留时间。但是问题并不简单,有个不确定的因素是用户直接销毁小程序,这种情况下
onUnload()
是来不及被执行的,也就没有了结束时间的记录,导致无法与开始时间匹配相减,所以这种方法行不通。换一个思路,要记录停留时间,那就相当于保证页面显示的过程中时刻记录数据,页面隐藏、卸载或者是被销毁时,都会停止记录,当页面再次被显示时只需要读取之前记录的值继续就可以了,如此一来,数据缓存便显得格外合适。
这样,只要
onShow()
时从缓存读取时间记录值并不停地修改后存入缓存,onHide()
或onUnload()
时停止记录,同样,小程序被直接销毁时也会停止记录,这样一来便可以实现对页面停留时间的记录。微信开发者工具代码片段
记录过程代码
// A页计时器
countTime() {
let that = this
// 读取A页计时数值
wx.getStorage({
key: 'timerPageA',
success(res) {
intPageATime = res.data
}
})
// 计时过程
timerPageA = setTimeout(function () {
console.log('A页计时器+1', intPageATime);
intPageATime = intPageATime + 1
wx.setStorage({
key: "timerPageA",
data: intPageATime
})
that.countTime();
}, 1000);
},
暂停记录代码
// 计时器暂停
pauseBtn: function () {
console.log('A页计时器暂停');
clearTimeout(timerPageA);
},
综上,将记录的数值转化为想要的时间格式即可。