uni-app uni统计2.0自定义事件统计到的数据与实际数据不符

uni-app uni统计2.0自定义事件统计到的数据与实际数据不符

项目信息 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 13.0.1 (22A400)
HBuilderX类型 正式
HBuilderX版本号 3.6.5
手机系统 iOS
手机系统版本号 iOS 16
手机厂商 苹果
手机机型 iphone14
页面类型 vue
vue版本 vue2
打包方式 离线
项目创建方式 HBuilderX

示例代码:

async createOrder() {  
    let params = {}  

    const orderForm = this.orderForm || {}  
    const addressInfo = this.addressInfo  
    const recycelCate = uni.getStorageSync('recycelCate')  
    const recycelCateModel = uni.getStorageSync('recycelCateFour')  

    params = Object.assign({}, params, {  
        name: addressInfo.name,  
        prov_id: addressInfo.provinceId,  
        city_id: addressInfo.cityId,  
        area_id: addressInfo.areaId,  
        address: addressInfo.address,  
        mobile: addressInfo.mobile,  
        price: this.price,  
        remark: `期望上门时间:${orderForm.date};${orderForm.remark}`,  
        config: this.cateInfo.config  
    })  
    this.addReport('提交成功', params) // 这里提交的统计  
    this.subscribe();  
    const orderres = await createOrder(params) // 这里创建的订单,也就是说只要创建订单肯定会执行自定义事件统计方法  
    uni.hideLoading()  
},

操作步骤:

预期结果:

自定义事件统计数据与实际订单数据对的上要

实际结果:

数据差距巨大,自定义事件统计漏统计了很多

bug描述:

uni统计2.0自定义事件统计到的数据与实际数据不符,订单后台获取到一共提交了26个订单,但是uni-amdin后台只统计到了三条数据,应该和订单数相等


更多关于uni-app uni统计2.0自定义事件统计到的数据与实际数据不符的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

应该是 await this.addReport 吧 不加await 上报操作很可能没完成吧

更多关于uni-app uni统计2.0自定义事件统计到的数据与实际数据不符的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这应该没关联吧,不加await那肯定也执行了this.addReport后才调用的创建的订单,这只是同步异步的问题,就算是异步按理说也不应该缺少数据

addReport(type, params) { const userInfo = uni.getStorageSync(‘common’) if (userInfo.weibo) { const weiboObj = JSON.parse(userInfo.weibo) if (weiboObj.id) { params.weiboUId = weiboObj.id } } uni.report(‘回收订单提交结果’, { ‘result’: type, ‘cate’: ${params.item_cates}, ‘brand’: ${params.item_brand}, ‘model’: ${params.item_model}, ‘cate_price’: ${this.cateInfo.price}, ‘price’: ${params.price}, ‘params’: JSON.stringify(params) }) },

hbuilder编译的是不是有问题,win打包的感觉就比较正常,mac打包的就有问题

回复 日渐肥胖的左: 不加await 也会调用,但不能确保其能执行完,你可以把 createOrder 前面的await 去掉试试,很大概率订单还没生成,整个异步函数就执行完了

回复 日渐肥胖的左: hbuilderx的问题,可以在社区提交下bug,让ide相关的同事看下

回复 DCloud_云服务_JRP: 这个自定义事件记录的是用户填写的数据,提交和不提交订单都会记录,用此优化产品,不需要等订单创建接口执行完。

回复 DCloud_云服务_JRP: 我不确定是不是hbuilder的问题,只是猜测

回复 日渐肥胖的左: 看一下你的上报周期设置的是多长时间,这种需要实时上报的数据,上报周期不能设置的太长,最好3秒内,否则会丢失数据,然后手动调用n次uni.report测试一下是否能完整上报

在使用 uni-app 的 uni统计2.0 进行自定义事件统计时,如果发现统计到的数据与实际数据不符,可能是由于以下几个原因导致的。以下是一些常见的问题和解决方法:


1. 事件上报时机问题

  • 问题:自定义事件的上报时机不正确,可能导致数据丢失或重复上报。
  • 解决方法
    • 确保事件在正确的时机触发,例如在用户完成某个操作后立即上报。
    • 避免在页面生命周期(如 onLoadonShow)中频繁上报事件,可能会导致重复统计。

2. 事件参数传递错误

  • 问题:事件参数传递不正确,导致统计结果与实际数据不符。
  • 解决方法
    • 检查事件参数的名称和值是否符合预期。
    • 确保参数类型正确,例如字符串、数字等。
    • 使用 uni.reportEvent 方法时,确保参数格式正确:
      uni.reportEvent('event_name', {
          key1: 'value1',
          key2: 123
      });
      

3. 事件重复上报

  • 问题:同一事件被多次上报,导致统计数据偏高。
  • 解决方法
    • 确保事件上报逻辑不会被重复执行,例如在按钮点击事件中避免多次触发。
    • 可以使用防抖(debounce)或节流(throttle)技术来限制事件上报频率。

4. 网络问题导致上报失败

  • 问题:由于网络问题,事件上报失败,导致统计数据缺失。
  • 解决方法
    • 确保设备网络连接正常。
    • 可以在上报事件后检查返回值,确认是否上报成功:
      uni.reportEvent('event_name', { key: 'value' }, (res) => {
          if (res.errMsg === 'reportEvent:ok') {
              console.log('事件上报成功');
          } else {
              console.log('事件上报失败', res);
          }
      });
      

5. 统计延迟问题

  • 问题:uni统计2.0 的数据可能存在一定的延迟,导致实时数据与实际不符。
  • 解决方法
    • 等待一段时间后再次查看统计数据,确认是否更新。
    • 如果需要实时数据,可以考虑使用其他实时统计工具。

6. 自定义事件未正确配置

  • 问题:在 uni统计2.0 后台未正确配置自定义事件,导致数据无法正确统计。
  • 解决方法
    • 登录 uni统计2.0 后台,检查自定义事件是否已正确配置。
    • 确保事件名称和参数与代码中上报的事件一致。

7. 版本兼容性问题

  • 问题:uni-app 或 uni统计2.0 的版本不兼容,导致统计功能异常。
  • 解决方法
    • 确保 uni-app 和 uni统计2.0 的 SDK 版本是最新的。
    • 检查官方文档,确认是否有已知的兼容性问题。

8. 调试和日志记录

  • 问题:无法定位问题原因。
  • 解决方法
    • 在开发环境中,开启调试模式,查看事件上报的日志:
      uni.setEnableDebug({
          enableDebug: true
      });
回到顶部