程序聚合 软件案例 基于通知监听的智能记账APP-记花

基于通知监听的智能记账APP-记花

2026-08-03 22:39:36
行业:金融、企业服务(saas)
载体:安卓APP
技术:TypeScript、React Native、SQLite

业务和功能介绍

立项背景: 日常消费频繁但记账习惯难养成,手动逐笔输入效率低且容易遗漏。大多数人的消费信息已经通过支付宝、微信、银行卡的推送通知触达手机,但这些通知阅后即焚,没有结构化沉淀。记花的核心思路是"被动记账"——监听系统通知,自动识别收付款信息并提取金额、商户、分类,用户只需确认即可完成记账,将记账操作从 30 秒缩短到 3 秒。

核心功能模块:

1. 通知自动记账:Android 端通过系统 NotificationListenerService 监听支付宝、微信、银行等 App 的支付推送,利用正则模板引擎(6 类模板、20+ 条规则覆盖支付宝/微信/银行/美团等场景)自动解析金额、类型(收入/支出)、商户名称,弹窗预填确认。去重机制(5 秒窗口 + 复合 key)避免同条通知重复记账。关键词过滤排除非支付通知(B站推送、充值成功等 20+ 条忽略规则)。

2. 手动记账:支持支出/收入切换,15 个支出分类 + 6 个收入分类(带图标和颜色标识),输入金额、商户、备注即可快速完成,防连点重复插入。

3. 预算管理:支持总预算和分类预算设置,进度条实时展示已用/剩余,达 80% 自动预警、超 100% 标红提醒。预警通知栏推送(每分类每 3 天最多 1 次,避免骚扰)。

4. 周期记账:支持每天/每周/每月/每季度等多种周期,App 打开时自动补记漏掉的历史周期,可单独启用/禁用。

5. 数据可视化:首页展示今日/本月收支卡片(横向滑动切换支出/收入)、分类占比环形图(Skia 自绘)、近 7 天趋势折线图(Victory Native);月度报告页支持历史月份切换,展示环比变化、Top3 支出分类、日均消费、记账天数等。

6. 数据导出导入:支持 CSV(含 BOM 兼容 Excel 中文)和 JSON 格式导出/导入,方便数据迁移和备份。

7. 深色模式与主题:支持亮色/暗色/跟随系统三种主题,全组件自适应配色。

8. 通知与保活:每日记账提醒(默认 21:00)、晚间支出汇总(默认 23:00);适配华为/小米/OPPO/vivo 等厂商的自启动设置引导;前台服务保活、电池优化白名单引导、悬浮窗速记(System Alert Window 权限)。


业务流程:用户安装 → 授权通知监听 → 支付时 App 自动弹窗预填 → 用户确认/编辑 → 记录存入 SQLite → 首页仪表盘/报告页实时刷新 → 月底查看月度报告和预算达成 → 导出数据备份。

项目实现

项目实现
整体架构: 纯前端移动应用,基于 Expo 57(React Native 0.86 + React 19)开发,TypeScript 全量编写。数据存储使用 expo-sqlite 本地 SQLite 数据库(WAL 模式),状态管理使用 Zustand(3 个 Store:记录、应用设置、主题),路由使用 expo-router(基于文件的路由),图表渲染使用 @shopify/react-native-skia(自绘环形图)和 victory-native(趋势折线图)。通知监听通过自定义 Expo 原生模块实现 Android NotificationListenerService,JS 层通过 EventEmitter 接收事件。
我的负责模块与结果:
1. 通知解析引擎:设计了模板化正则解析器,每条规则定义 appId 匹配、正则表达式、金额捕获组、类型、商户捕获组,可扩展新增支付渠道。实现去重、关键词过滤、置信度评分机制。最终支付宝/微信场景解析准确率约 85%+。
2. 原生通知模块:独立开发 Expo 原生模块 PayRecordNotification,实现 NotificationListenerService 监听、EventEmitter 向 JS 层推送事件、通知权限检测与引导、前台服务保活、每日提醒/汇总 AlarmManager 调度、悬浮窗速记、预算预警通知栏推送。适配了小米/华为/OPPO/vivo 四大厂商的自启动设置 Intent 跳转。
3. 数据层与状态管理:设计 SQLite Schema,实现增量迁移,批量查询优化,Zustand Store 封装 CRUD + 自动刷新仪表盘。环形图数据补全,分页加载。

遇到的难点与解决方案:
1. 通知监听服务重启后丢失绑定:Android 重启后 NotificationListenerService 虽有权限但未绑定,导致监听失效。解决:在 JS 层启动时检测 isNotificationAccessGranted 返回 true 但 isListening 返回 false,主动调用 requestListenerRebind() 重新绑定,问题修复率接近 100%。
2. 支付宝/微信推送格式多变**:同一条消息"微信支付:已支付¥21.12"可能有合并通知"[4条]微信支付:…"、全角¥和半角¥混用等多种变体。解决:正则统一先做 normalize,模板中设置 flags: 's' 支持 DOTALL 模式匹配跨行内容,覆盖 20+ 种变体。
3. Skia 环形图渲染精度:当某个分类占比极小时(< 1%),弧度计算精度丢失导致图形闪烁。解决:对极小占比设置最小弧度阈值(3°),保证视觉稳定。

示例图片视频


zps
15天前活跃
方向: 后端-Java、前端-Web前端、
交付率:100.00%
相似推荐
单机键值存储引擎-kvs-system
项目地址:https://github.com/thedevplus/kvs-system 1、立项背景和目标 基于PingCap的Practical Networked Applications in Rust,使用 Rust 从零实现一个高性能日志结构键值存储系统。目标是深入掌握存储引擎设计(Bitcask 模式)、并发线程池架构、自定义网络协议与性能调优等系统编程核心能力,并通过 Criterion 基准测试与 Sled 等生产级引擎横向对比,验证自研方案的吞吐表现。 2、软件功能、核心功能模块 - Bitcask 存储引擎 (src/kvs.rs):追加写日志 + 内存 HashMap 索引,1 MiB 段轮转,O(1) 点读取经 read_at 定位,后台压缩线程按陈旧条目阈值触发,原子替换索引,WAL。 - 可插拔线程池 (src/thread_pool.rs):统一 spawn API,三种后端——Naive(一任务一线程)、SharedQueue(定长 worker + crossbeam 通道,含 catch_unwind 容错)、Rayon(工作窃取,第三方对比库)。 - 自定义 TCP 线协议 (src/protocol.rs):2 字符 opcode + 双 tab 分隔的行帧格式,手写 Serde 序列化/反序列化,Set/Get 共用 value 帧,错误码内联消息。 - 客户端连接池 (src/client.rs):预建立多条长连接,AtomicUsize 轮询分配请求,读写半分离避免锁竞争,双包 Sd 实现优雅关闭。 - CLI 与库双模式 :支持命令行(kvs-client/kvs-server)和 Rust 库两种调用方式。 3、业务流程、功能路径描述 - 写入路径 :客户端构造 ClientArgs → 协议层序列化为 st 帧 → 连接池原子轮询选连接写入 → 服务端线程池 spawn 处理 → 追加写日志段 + 更新内存索引 → 返回成功响应。 - 读取路径 :客户端发送 gt 帧 → 服务端查询 HashMap 获取 KvPointer{log,pos,sz} → read_at 精确定位读取 → 命中返回值 / 未命中返回 Gn。 - 压缩路径 :后台线程监测陈旧条目达 1000 → 重写活跃记录到新段 → 写锁下原子替换索引 → 两级反压(yield_now + sleep)防止写饥饿。 - 关闭路径 :客户端发 Sd 到池连接置 exit_status 标志 → 再经新 TcpStream::connect 发 Sd 唤醒阻塞的 accept 循环 → 服务端优雅退出。
www.shijiebolishi.com-独立站
本项目为外贸跨境独立站,目标是帮助出海企业搭建自有线上销售渠道,面向海外客户实现品牌展示与商品线上成交。核心模块包含产品展示、购物车、订单结算、海外支付接入、后台订单商品管理、移动端适配、基础 SEO 设置。业务流程:海外访客浏览站点商品,加入购物车提交订单并完成支付,商家通过后台管理商品、处理订单,完成完整外贸线上交易流程。
ch9329驱动开发
项目是ch9329芯片的上位控制程序,能够实现键盘和鼠标的操作,实现脚本自动化控制, 主要依赖串口通行来控制被控程序,程序集成了键盘点击,按压,释放, 鼠标绝对移动,相对移动,点击,拖拽。提供了外部标准的api,方便用户调用,项目为个人开源项目,以后会持续迭代,升级功能,包含获取串口信息,获取当前芯片配置,修改芯片配置,自动连接串口,适配linux
音视频聊天系统-音视频聊天系统
模拟微信开发可以实现单聊、群聊,以及音频和视频通话,聊天可发送基本表情包和消息以及图片发送等;客户端有桌面端和网页端两种访问方式,用户可以搜索不同用户,邀请、添加好友,与好友音频或者视频通信,可以设置个人信息,包括头像上传等;用户可使用桌面端、手机或者电脑访问网页登录账号;
基于串口通讯实时控制-门冲击试验
本软件是一套面向摆锤冲击试验台的桌面端三维可视化与控制台程序,基于 .NET 10 (Windows) + WPF 开发。软件通过串口与下位机(试验台控制器)通信,实时解析四轴位置反馈,并在三维场景中逼真还原摆锤、摆杆、悬挂机构与撞击门的姿态;同时提供手动对位、释放冲击、挂钩提升等全流程控制,以及通信日志与状态指示,便于操作人员离线调试与在线监控。 三维可视化(左侧主视区) 实时渲染试验台机构:悬挂架、摆杆、悬挂绳、三角吊环、锥-柱-锥三段式铁锤、撞击门。 铁锤姿态随设备反馈/演示状态机联动: 演示单摆阶段:铁锤绕支点做复摆运动,摆杆冻结不动。 释放冲击后"保持态":铁锤锁定 0° 竖直,即使各向移动也不被提起,直至摆杆降到 0° 方可挂钩。 鼠标轨道相机控制(Trackball),可自由旋转/缩放观察撞击瞬间与锤心位置。
帮助文档   Copyright @ 2021-2024 程聚宝 | 浙ICP备2021014372号
人工客服