阶段性交付了一个小项目,今天得空捉摸自己的产品,写模块划分时又想到这个主题。

统计分析&异常监控,原生开发里有不少第三方在做,主要的几个也有了 Flutter 插件,而且还有开源独立部署的选择。为啥还要考虑自研呢?商业化的考虑归商业,对技术的追求归技术,两者应该共存而不是过于偏颇。到底偏向哪一方,由现实中遇到的实际问题来决定。

目前的主要问题在于:1、不希望第三方 SDK 申请涉及用户隐私的权限;2、想得到的数据比较个性化,接入第三方依然需要大量配置。

个人产品的开发痛点

都自己折腾了,必然是希望尽可能的符合自己心意。个人精力有限,产品还是偏向于工具类。跟大厂相比,用户体验上就尤为重要,要做到小而美,精致纯粹,所以定制化的部分就相当多。

定制化加深带来的问题是,不同产品间能通用的部分越来越少。

拿统计分析来说,由于业务不同,每个产品的数据库设计都有所差别。最全面的方法当然是每个产品都实现一个统计系统,但成本实在过于高昂。尤其是心理消耗,一遍遍重复做过的事情,每次只有些许不同,对追求自由的内心是巨大伤害。

因此,在某些方面制定标准是非常重要的。把同类产品中合适的服务单独提取出来,既方便维护,又提高了开发效率。

我的需求

独立项目的最大好处,就是没有产品经理,我说了算😁一个优秀的工具类移动App(在我心里)应该有以下几个特点:

  • 高效:逻辑清晰,速度飞快,反馈准确
  • 优雅:交互符合人机工程学,体验舒适,简单明快
  • 纯粹:只做该做的事,无后台残留,无其他拉起,不申请任何非必须权限

在这个基础上进行统计分析,还有一些要求。比如不要过量的统计,信息过载反而是个负担,尤其是 App 比较多的时候,多数数据无用且看起来很累。要能够灵活的埋点,在需要的场合进行 AB 测试,数据对比等。当然这些统计的前提是,不影响用户体验,不涉及用户隐私。在隐私这一条,尤其是 Android 的权限上,就 pass 掉了大多数国内的第三方服务。

异常监控在 Flutter 中是比较容易实现的,大多数意外均发生在 Widget 层面,导致红屏。这个在release版中可以自定义一下错误页面。其它的 try catch 错误上报跟统计分析的行为一致,因此这两者可以结合在一起。

最后,这个系统要能非侵入式的接入已有应用,并且能通过 Web 端和 App 端随时查看管理。

总结一下:

  • 不影响体验,不侵犯隐私
  • 无侵入,完全自定义的埋点
  • 统计分析和异常监控结合在一起
  • 独立的后台和 App 即时查看
  • 可接入多个产品

项目计划

该自用统计分析&异常监控系统,初步计划由以下三个部分构成。

  1. Flutter 插件

一是用于在宿主项目上方便的进行埋点等自己定义统计,本质上是通过Http方式发送数据。做成插件只是为了统一接口和方便。
二是实现对异常的监控,统一设置错误页面和处理方式。

  1. 服务端接口

部分数据如付费用户量,日活等需要从服务端获取,放在客户端不安全且麻烦。

  1. App 和 Web 客户端

数据可视化,随时随地掌握项目的运行状态。充分的使用图表,带有一定的监控指标报警功能。

后记

本来还有个初步接口设计的板块,但因为工作量比较大以及平时的琐事,一直拖了好久也没有写完 😅 这一块还有具体的实现进度,就留到后面慢慢补一下吧。毕竟优先级不是特别高,最近恰好又忙,不能因为这个事把其它博客的写作给拖累了。

碎碎念几句:生活可能会碰到很多的不如意,但是坚持正确的方向,就总会有回报。啥是正确呢,事实证明的就是正确。坐端正,常喝水这种小事确实无聊乏味,但是为了更好的未来,还是默默的改正一下吧。

加油,奥利给 💪💪💪!