美文网首页
微信小程序统计误差 - wx.reportAnalytics简析

微信小程序统计误差 - wx.reportAnalytics简析

作者: JakeBless | 来源:发表于2019-11-26 19:52 被阅读0次

    一、场景

    场景是给外部小程序导流量,发现我们出去的量(点击事件UV)跟对方拿到的量(来源统计UV)差异很大, 对方称在【app onShow】里上报的事件统计。

    1. 经过对比数据,我们自己后端统计的用户统计跟微信统计的统计数据一致(点击事件)。

    2. 自测微信API上报事件来源统计: APP生命周期上报【 app:onShow】上报统计量(uv)为A, 跟 页面的生命周期 (测试页面为首页)) 【page: onReady】 上报统计量(uv)定义为B, 如果按期预期A应该约等于B, 但是实测 B ~= 4*A, 数据相差4倍。

    app.js

    onShow (options) {
        wx.reportAnalytics('track_source', {
          source: 'A'
        })
      }
    }
    

    pages/index.js

    onReady () {
        // 微信自定义事件分析统计
        wx.reportAnalytics('track_source', {
          source: 'B'
        })
    }
    

    二、分析

    分析:为何这么大差距? onshow事件没有被触发? 微信的api没上报成功?

    然后在同样的两个位置加上了阿拉丁的事件分析: 结果还是 A(阿拉丁app onShow上报的事件统计)*3.5 = B(阿拉丁page onReady上报的事件统计)

    翻小程序的线上错误日志:“app:onshow : app.aldstat.sendEvent(阿拉丁的统计方法) 错误”, 怀疑app.aldstat在apponshow的时候还没初始化, 于是做了一个延迟上报处理

     setTimeout(() => {
        let app = getApp()
        app.aldstat.sendEvent('普通来源show-' + sourceQuery, '来源')
      }, 100)
    

    上线之后发现数据A约等于B了,说明延迟100毫秒生效了。 然而微信api上报还是差4倍(没有加setTimeout延迟上报),证明微信自定义分析api上报这个方法在app.onshow事件中直接调用(wx.reportAnalytics), 存在数据遗漏问题, 怀疑在调用onShow的时候wx.reportAnalytics可能也存未初始化完成的问题。

    三、 解决方案

    延迟1秒上报数据

    onShow (options) {
        setTimeout(() => {
          wx.reportAnalytics('track_source', {
            source: 'A'
          })
        }, 1000)
        setTimeout(() => {
          // 阿拉丁统计
          let app = getApp()
          app.aldstat.sendEvent(sourceQuery, 'A')
        }, 1000)
      }
    }
    

    相关文章

      网友评论

          本文标题:微信小程序统计误差 - wx.reportAnalytics简析

          本文链接:https://www.haomeiwen.com/subject/ddvywctx.html