微信小程序无埋点数据收集方案

前言

目前趋势下,不管是客户端SDK还是小程序SDK,都在趋向于无埋点的数据收集方式。本文和大家分享下微信小程序无埋点数据收集的初体验。

1. 实现要点

确定页面生命周期方法

通过app.js中的生命周期方法捕捉小程序的启动与关闭,目前应用的是:

// 标记为小程序展示

onShow: function () {

}

// 标记为小程序关闭

onHide: function () {

}

通过普通页面的方法生命周期方法捕捉页面的曝光,目前应用的是:

// 标记为页面出现

onShow: function () {

}

// 标记为页面关闭,onHide会在页面隐藏时调用,onUnload会在页面卸载时调用

onHide: function () {

}

onUnload: function () {

}

重写生命周期方法

实现无埋点功能的核心,就是重写需要的生命周期方法,在方法中调用相应的数据生成方法并上报对应的日志,比如在页面的onShow方法中实现曝光日志的生成并发送,便实现了曝光事件的无埋点采集,具体的代码实现如下。

2. 代码实现

在这里我们以onLoad和onHide两个生命周期方法为例,分别对应页面的出现和关闭。

1. 在SDK的init方法中重写对应方法:

Page: {

    init: function() {

        // 获取当前页面对象

        var currentPage = getCurrentPages()[getCurrentPages().length - 1];;

    var pageName = currentPage.route;

          // 重写生命周期方法

    currentPage.onShow && !function() {

        var b = currentPage.onShow;

        // 重写方法

        currentPage.onShow = function() {

            // 曝光, PV开始

            STAT.Event.stat('evt_show', pageName);

            STAT.Event.stat('evt_pvBegin', pageName);

            // 调用页面方法,修改this的指向

            b.call(this, arguments);

        }

    }();

        currentPage.onHide && !function() {

              var b = currentPage.onHide;

                currentPage.onHide = function() {

                    // PV结束

                      STAT.Event.stat('evt_pvEnd', pageName);

                    b.call(this, arguments);

              }

          }();


2. 在页面中引入SDK:

Page为例

// 引入SDK文件

var STAT = require('../utils/stat.js');

// 在onLoad方法中进行init

onLoad: function (options) {

    STAT.Page.init();

}

完成初始化之后,页面的曝光等事件就可以被SDK收集到了

当我们进入一个新的页面,来看一下打印信息


不足

实际上在进行集成SDK的过程中开发者仍然要引入代码,并没有实现完全的无埋点,并且在进行点击等事件采集的时候,仍然需要开发者手动调用SDK统计接口。

所以无埋点的方案也在一步步优化,希望在后期实践中慢慢探索到更纯粹的无埋点收集方案。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容