小程序学习

【2019-12-13】微信小程序-记录用户在某一个页面的停留时

2019-12-13  本文已影响0人  铅笔芯qbx

如题,如何记录用户在某一个页面的停留时间?
首先看下微信给出的小程序的官方文档,关于页面路由的介绍,如图

记录页面时间01.png
不难发现,每个新打开的页面都会执行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);
    },

综上,将记录的数值转化为想要的时间格式即可。

上一篇下一篇

猜你喜欢

热点阅读