App数据埋点模块设计

简介: 通过数据埋点来提取运营数据

前言

一款App的运营离不开数据的支撑,数据可以直观的体现产品力。运营需要的数据非常多,所以会设计大量的埋点采集数据,甚至某些指标需要一系列的的埋点才能提供可供分析的结果。

埋点模块设计的重点:

  1. 作为运营人员,需要设计与配置埋点足够的快捷。所以需要设计一套埋点规则,使他们可以根据需求来制作数据埋点规则。
  2. 作为运营人员,需要频繁的修改埋点规则。所以需要做好埋点规则配置文件的下发管理。
  3. 作为运营人员,需要获得时效性更强的数据。所以需要对埋点数据的上传进行管理。
  4. 作为开发人员,需要简便的代码实现方式。所以需要提供高封装程度的API,以及容易理解的配置方式。

何为埋点

埋点是用来记录用户触发的某一个动作,或者程序流程中的某一个状态。埋点需要从运营的角度来设计,埋点中记录的数据要足够描述它的定义,这样才能在分析时产生价值。

为了还原事件本身,埋点至少需要包含人物,时间,地点,三个要素,如果是属于流程中的埋点,还需添加事件信息。

人物:触发埋点时的用户身份。

时间:触发埋点的时间。

地点:触发埋点的设备信息、网络条件、App版本等。

事件:事件的唯一ID,存在则表示有相关流程。

常规的埋点类型,可以分为五种。

  1. 页面类型,用于统计客户端页面打开与关闭的信息,按时间线串联页面埋点数据,可以拼凑出用户的使用路径。
  2. 事件类型,用于统计特定的事件触发次数,通常为流程中的一系列动作。比如从App打开,到用户发起Socket连接,再到用户登录IM,最后到用户完成数据获取,这一系列的事件埋点可以分析出用户完成登录的冷启动耗时。
  3. 状态类型,用于统计用户的某些状态,会在埋点数据上报时实时获取,比如用户当前是否开启推送,是否开启消息提示音等。
  4. 计数类型,用于统计事件的触发次数,区别与事件类型,计数类型在上报时会整合一个时间段的埋点数据,而不会上报所有事件,减小上传数据量,减轻服务端分析压力。比如用户打开相册,用户使用了首页搜索。这些数据可以整理出App的功能热力图,让开发有针对性的进行优化。
  5. 日常类型,用于进行实时性要求特别高的埋点。这类埋点不参与上报逻辑,会在触发时直接上报,保证数据实时性。比如用户登录时上报日活跃数据。

架构设计

埋点规则模型

  1. eventName,埋点事件名称
  2. remark,埋点描述
  3. type,指定埋点的分类(页面类型、事件类型、状态类型、计数类型、日常类型)。
  4. clientType,指定埋点生效的平台,比如PC、PAD、Phone,类型为位枚举,可以同时生效。
  5. vcClassName,页面类型埋点使用,用于指定iOS平台中关联的页面。
  6. data,用于指定埋点中需要的参数,同时参与参数校验,类型为Map。
  7. groupKeys,用于对计数类型埋点进行分组,类型为包含String的数组。

埋点数据模型

  1. eventName,埋点事件名称。
  2. remark,埋点描述。
  3. type,指定埋点的分类(页面类型、事件类型、状态类型、计数类型、日常类型)。
  4. displayMode,页面类型埋点使用,分为页面显示与页面消失两种类型。
  5. uploaded,用于判断该条埋点记录是否完成上传。
  6. triggerId,关联事件ID,用于串联埋点。
  7. triggerTime,事件的触发时间。
  8. dataJsonStr,埋点采集的数据,用JSON String存储。

埋点规则配置

埋点规则是多平台一起使用的,使用JSON文件进行整理是比较好的方案。

再将文件放入客户端预埋,或者通过服务端下发更新都可以。

{
   
    "version":"1.0.0",
    "commonData":{
   
        "OSVer":"",
        "appVer":"",
        "deviceModle":"",
        "clientType":0,
        "network":0,
        "areaId":"",
        "numId":"",
        "userId":"",
        "triggerTime":0,
        "triggerId":""
    },
    "rules":[
        {
   
            "iOSVCClassName":"IMSessionVC",
            "AndroidPageClassName":"IMSessionVC",
            "remark":"进入/离开聊天会话界面",
            "eventName":"IMSessionPage",
            "type":0,
            "client":13,
            "data":{
   

            }
        },
        {
   
            "iOSVCClassName":"",
            "AndroidPageClassName":"",
            "remark":"打开消息管理器",
            "eventName":"IMMsgManagerPage",
            "type":0,
            "client":8,
            "data":{
   

            }
        }
    ]
}

埋点记录上传

上传间隔超过1小时,就会上传一次数据。

每次上传数据需要控制数据包大小,比如每次只上传100条,防止过度占用网络资源。

上传后的记录需要标记,防止重复上传。

目录
相关文章
|
9月前
《仿盒马》app开发技术分享-- 确认订单页(数据展示)(29)
上一节我们实现了地址的添加,那么有了地址之后我们接下来的重点就可以放到订单生成上了,我们在购物车页面,点击结算会跳转到一个 订单确认页面,在这个页面我们需要有地址选择、加购列表展示、价格计算、优惠计算、商品数量展示等信息。
249 3
|
9月前
《仿盒马》app开发技术分享-- 分类模块顶部导航列表弹窗(16)
上一节我们实现了分类页面的顶部导航栏列表,并且实现了首页金刚区跟首页导航栏的联动,这一节我们实现导航栏列表的弹窗功能,需要学习的知识点有自定义弹窗,同时我们的数据源需要跟分类页保持一一致。
175 1
|
9月前
|
JSON 前端开发 数据挖掘
《仿盒马》app开发技术分享-- 分类模块顶部导航列表(15)
上一节我们实现了购物车商品列表的大部分功能,实现了商品的添加、删除、增减、价格计算等业务,并且都跟云端进行通信。现在我们继续对项目进行改造,这一节我们要改造的内容是分类页,这个页面我们在之前的非端云一体化项目中实现过。现在要改造成端云一体的模式,并且我们的金刚区也要实现分类页的点击联动
135 0
|
9月前
|
BI 开发工具 开发者
App全渠道统计方案:如何用一个工具整合所有获客渠道数据?
还在为地推、社群、广告等不同获客渠道的数据分散而烦恼吗?本文将教您如何用一个工具整合所有渠道数据,实现精准的渠道归因与效果分析。
319 0
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
846 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
Windows
【Azure App Service】对App Service中CPU指标数据中系统占用部分(System CPU)的解释
在Azure App Service中,CPU占比可在App Service Plan级别查看整个实例的资源使用情况。具体应用中仅能查看CPU时间,需通过公式【CPU Time / (CPU核数 * 60)】估算占比。CPU百分比适用于可横向扩展的计划(Basic、Standard、Premium),而CPU时间适用于Free或Shared计划。然而,CPU Percentage包含所有应用及系统占用的CPU,高CPU指标可能由系统而非应用请求引起。详细分析每个进程的CPU占用需抓取Windows Performance Trace数据。
293 40
|
JavaScript IDE 开发工具
找不到模块“./App.vue”或其相应的类型声明。ts(2307)
这篇文章介绍了在Vue 3 + TypeScript + Vite开发环境中解决找不到`.vue`文件模块或其类型声明错误的两种方法:使用VSCode的TypeScript Vue Plugin (Volar)插件或手动在`env.d.ts`文件中声明`*.vue`模块类型。
3030 1
找不到模块“./App.vue”或其相应的类型声明。ts(2307)
|
JSON API 网络安全
App数据的爬取
App数据的爬取
1125 3
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
179 0
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据