很多会员开通时带着自动续费,到期由平台从微信、支付宝或银行卡扣款。订阅卫士(SubGuard)在扣款前提醒你。

例如记一条每月 15 元的哔哩哔哩大会员,设提前 3 天提醒。到时通知栏会提示它 3 天后扣费 ¥15.00,点开是这条订阅的详情,里面有你记下的取消链接和步骤。取消仍要你自己去平台操作。

订阅卫士是免费开源的 Android 订阅管理 App,不联网,当前版本 1.0.4。

订阅卫士首页,本月预计扣费 ¥72.50,另有 $15.49,下方是最近 7 天即将扣费的订阅

记录订阅

必填项是名称、金额、扣费周期和下次扣费日期。币种支持人民币、美元、港币,周期分每月、每季、每年,提醒可设在扣费前 1、3、7 或 14 天,默认 3 天。取消链接和步骤选填,没填时可参考详情页底部列出的微信支付、支付宝和 iPhone 关闭自动续费路径。

首页显示本月预计扣费、折合全年支出、最近 7 天要扣费的订阅和全部订阅,长按可删除。

App 不联网,拿不到汇率,所以金额按币种分开合计。首页大数字只算人民币,外币另起一行,如“另有 $15.49 / 月”。

开着自动续费的订阅,扣费日过后自动顺延到下一期。已知问题是每月 29 到 31 号扣费的订阅,过完小月后会停在较小的日期(如 31 号过完二月变成 28 号),需要手动改回。

已退订的服务在详情页点“标记为已取消”,之后不再提醒,也不计入首页金额。

截图识别

添加订阅时可以从相册选扣费截图或直接拍照,App 在本机识别文字,填入名称、金额、周期和下次扣费日期。识别用 Google ML Kit 中文模型,模型打包在安装包里,全程离线。

识别不准时,名称、金额、日期下方会列出其他候选,点一下即可替换。没识别出的项会提示手动填写。表单已有内容时,App 会让你选全部替换还是只填空白项。

识别规则目前用 Google Play 订阅页真实截图和构造的微信扣费凭证样例调校过,支付宝、App Store 页面尚未专门验证。

截图识别页面,从微信扣费凭证里识别出订阅名称和金额 15.00 元

数据只存在手机上

订阅卫士没有申请网络权限,Android 不允许这样的 App 联网。文字识别 SDK 会带进一个上报用的网络权限,我在打包时剔除了,并用自动测试检查权限清单。

数据存在本地数据库,关闭了系统云备份,没有账号和统计。代价是没有导出功能,换手机或卸载重装后记录会丢失。

没有 Google 服务的手机也能用,识别模型不依赖 Google Play 服务。我在没有任何 Google 组件的 Android 14 模拟器上测试过,截图识别、通知和写入日历都正常。

提醒没弹出来怎么办

扣费通知依赖 App 每天在后台检查一次。小米、华为、OPPO、vivo 等系统会清理后台,检查没跑成,当天的提醒就会漏掉。设置页有入口跳到系统电池优化,建议设为“无限制”并允许自启动。

更稳的办法是交给系统日历提醒,App 通知被关、后台被清都不影响。有两种方式。

详情页的“添加到手机日历”会打开日历 App 并预填这次扣费,不需要任何权限。事件存进哪个日历由你选,如果选了会同步到云端的账号日历,订阅名称和金额也会上传。

设置页的“同步到手机日历”打开后,所有订阅未来一年的扣费日会写进单独的“订阅卫士”日历,扣费当天 9 点一个日程,按设定天数提前提醒,订阅变动时自动重写。这个日历挂在本机账号下,不会同步到云端,关闭开关会整个删除。卸载 App 不会删除它,卸载前请先关闭开关。

设置页,扣费通知提醒和已经打开的同步到手机日历开关

字号

界面字号照顾中老年用户,正文不小于 16sp,标题不小于 20sp。作为对比,Google 的 Material Design 3 规范里最小一档文字是 11sp。

适用手机与安装

需要 Android 7.0 及以上、ARM 处理器,有没有 Google 服务都行。华为 HarmonyOS 4 及以前可以安装,HarmonyOS NEXT(HarmonyOS 5 起)不能安装任何 APK。安装包只含 ARM 架构,约 11MB,x86 模拟器装不上。

从 GitHub Releases 页面下载 APK,需允许“安装未知应用”,华为手机需先关闭“纯净模式”。App 不联网,不会检查更新,可以在 GitHub 关注仓库的 Releases,或用 Obtainium 跟踪。新版本覆盖安装,数据保留。

订阅卫士使用 MIT 许可证,源码和完整常见问题见 GitHub 仓库,另有介绍页。