Tidyvo 通知专项 PRD
Tidyvo 通知专项 PRD返回统一总览

Tidyvo 通知系统专项 PRD(竞品 B 单方案)#

1. 产品基本信息#

字段 内容
产品名称 Tidyvo Cleaner(Google Play:Tidyvo: Deep Storage Cleaner
平台 Android
包名 com.tidyvo.cleaner
实现基线 线上 v1.0.5;Notification Cleaner(通知清理)已在上一版本加入
竞品基线 Photo Recovery V1.0.3,包名 com.files.photo.recovery.restore.pro
文档日期 2026-08-14
文档性质 新通知需求包;原通知方案文档不修改
冲突优先级 旧文档中的 A/B 分组、中台多字段通知配置、业务 FCM Token 绑定、文案权重/数值优先级和 12 语言交付均废止;通知需求以本 PRD 为准

2. 版本目标#

按照竞品已确认的 Online_B(竞品 APK 内置的高频通知配置,以下简称“竞品 B”)机制,为 Tidyvo 落地一套固定通知方案:

  • 不做 A/B 分组,不允许中台修改通知条数、间隔、场景、路由或文案。
  • 普通通知的条数、间隔、单 ID 上限、可见数量和后台恢复参数统一采用竞品 B。
  • 中台只提供一个“通知下放范围”控制:全部关闭、仅自然量、仅推广用户。
  • 同一场景有多条文案时,由客户端用等概率随机数选出一整条“标题+正文”。
  • 不建设业务侧 FCM Token(Firebase 设备令牌)上传、绑定和单设备推送;改用 FCM Topic(主题)空数据消息尝试唤醒进程,再由客户端执行本地通知规则。
  • 通知源文案只交付中文和英文,其他语言由开发基于这两份源文案翻译。

3. 本次范围及具体需求#

3.1 本次范围#

需求编号 本次做 本次不做
R1 竞品 B 单套普通通知频控 不做两套策略、比例灰度或动态频控
R2 14 个周期 ID+3 个事件 ID 的 Tidyvo 映射 不新增竞品未出现的通知 ID 和数值优先级
R3 同场景中英文文案池,等概率随机 不做权重、顺序轮播和 12 语言配置表
R4 中台三态下放范围 不在中台配置场景、文案、上限、间隔或路由
R5 FCM Topic 空消息唤醒+本地恢复链 不上传、绑定或按业务保存 FCM Token
R6 复用现有 Notification Cleaner 作为 ID 17 落地页 不重做通知清理页面和权限链
R7 保留竞品 ad_ntf / res_ntf / filter_ntf 三种通知能力 不把三种通知误算进普通通知 99 条上限

3.2 总体方案:竞品做法与 Tidyvo 方案#

项目 竞品已确认做法 Tidyvo 本次方案
策略配置 APK 内置不同通知配置,其中 B 为高频配置 只实现一套,固定采用竞品 B 参数
普通通知调度 时间窗口内循环检查 ntf_items,一次选出一个可用 ID 按竞品 B 的 ID 顺序循环查找,一次调度最多展示 1 条
场景选择 配置中没有 30、50、95 之类的数值优先级字段 不自建优先级;从上次位置继续循环,找到第一个符合频控的 ID 就展示
文案选择 从同 ID 的标题池、正文池、图标池分别随机取值 同一 ID 预先定义完整文案模板;从可用模板中等概率随机取 1 条,标题与正文不拆开
远程消息 已确认存在 FCM Service 和消息分支;服务端实际 Token、Topic 与发送策略无法从 APK 证明 客户端订阅来源 Topic;中台只发空数据消息尝试唤醒,不下发通知文案、ID 或路由
后台维持 Service、Job、WorkManager、Alarm、开机/升级广播、FCM 多路恢复 按竞品已确认参数建立同样的恢复入口;每个入口最终都只启动同一套本地调度器
Notification Cleaner 监听并管理其他 App 通知;通知 ID 17 路由到 noticlean 复用线上已有通知清理功能;ID 17 点击进入现有 Notification Cleaner

证据边界:竞品 B 参数、14 个普通 ID、素材池、循环选择、同 ID 刷新、可见数量和后台恢复入口来自 APK 配置或代码;竞品服务端实际受众、Topic/Token 使用方式和线上实际下发策略不可观测,不能写成竞品事实。

3.3 R1:竞品 B 固定频控#

3.3.1 全局参数#

竞品字段 Tidyvo 固定值 白话解释
ntf_switch 1 普通通知能力开启;最终仍受中台下放范围、系统权限和功能状态拦截
upper_limit 99 每个手机本地自然日最多成功展示 99 条普通通知
interval_time 120000ms(2 分钟) 任意两条普通通知成功展示至少间隔 2 分钟
ntf_m_on_upper_limit 99 开启 Notification Cleaner 权限后,普通通知日上限仍为 99,不改变
ntf_m_on_interval_time 120000ms(2 分钟) 开启 Notification Cleaner 权限后,普通通知间隔仍为 2 分钟,不改变
continuous_ntf_num 12 累计成功展示 12 条后记录一次冷却点;不是一次发 12 条
ntf_cooling_time 120000ms(2 分钟) 达到连续 12 条后至少冷却 2 分钟;由于全局间隔也是 2 分钟,正常情况下不会叠加成 4 分钟
start_time / end_time 00:00 / 24:00 全天可尝试,不自创 08:00—21:30 之类的静默时段
repetitions 3 首次展示后,同一个通知 ID 可每隔约 4 秒再次刷新,最多刷新 3 次;仍是通知栏中的同一张卡,不是再增加 3 条,也不是连续三轮使用同一句文案
max_visible_ntf 5 Android 15 及以下,Tidyvo 普通通知同时最多保留 5 条;再来新通知时先移除最早一条,再显示新的
os16_max_visible_ntf 1 Android 16 及以上同时最多保留 1 条;新通知替换上一条

统计周期按手机当地日期 yyyyMMdd 计算,00:00 进入新自然日后,普通通知总次数和各 ID 当日次数重新计数。

3.3.2 普通通知之外还有什么#

竞品名称 白话解释 竞品已确认参数 Tidyvo 本次处理
normal_ntf 普通召回通知;就是本 PRD 的清理、截图、大文件等 17 个 ID B:每日 99 条、全局 2 分钟,另有单 ID 频控 按第 3.3—3.5 节完整执行
ad_ntf 高优先级广告召回通知,不是普通通知 开启;upper_limit=-1interval_time=-1,表示该兜底配置不限制条数和间隔 保留独立类型、频道和竞品参数,不占普通通知 99 条;是否触发仍由对应广告召回入口决定
res_ntf 带多个功能入口的大样式通知 开启;一个统计周期上限 2 条,最短间隔 4 小时 保留大样式能力;入口替换为 Tidyvo 现有清理功能,不占普通通知 99 条
filter_ntf 前台服务或通知过滤使用的 ongoing(持续显示)通知 已确认存在持续通知和过滤点击入口;没有 B 普通通知频控字段 用于 Tidyvo 前台服务和现有 Notification Cleaner,不作为营销召回,不占普通通知 99 条

因此,“普通通知总开关”只控制 normal_ntf 这一整类,不是给每一条文案单独设置开关,也不等于关闭前台服务通知或 Notification Cleaner。

3.3.3 规则示例#

10:00 展示 ID 12
10:02 最早可以展示另一个合格 ID
10:04 再检查下一 ID
……
累计成功展示到第 12 条
→ 记录连续通知冷却点
→ 至少等 2 分钟后再进入下一次调度

一次调度只会展示一条。即使同一时刻有三个场景满足,也不会同时弹三条;其余场景等待之后的 2 分钟调度。

3.4 R2:ID 循环、单 ID 频控与 Tidyvo 路由#

3.4.1 14 个周期 ID#

客户端按下表顺序组成循环列表。每次从上次停留位置继续检查,遇到第一个未超上限且满足 15 分钟间隔的 ID,就随机选择该 ID 的一条文案并展示;展示后游标移到下一个 ID。若全部不符合,本次不展示。

循环顺序 ID 竞品场景/路由 单 ID 日上限 单 ID 间隔 Tidyvo 场景 Tidyvo 点击目标
1 12 长时间未扫描 / photo 3 15 分钟 长时间未检查存储 Smart Clean
2 10 已删除照片风险 / photo 3 15 分钟 模糊照片检查 Blurry
3 13 长时间未清理 / junkcleaner 3 15 分钟 长时间未清理存储 Smart Clean
4 1 首页综合召回 / home 5 15 分钟 综合存储检查 Home
5 2 照片恢复 / photo 5 15 分钟 重复/相似照片检查 Duplicates
6 9 垃圾清理 / junkcleaner 5 15 分钟 Smart Clean 召回 Smart Clean
7 3 视频恢复 / video 3 15 分钟 视频压缩 Compress
8 11 已删除文件风险 / home 5 15 分钟 待清理项目确认 To clean
9 5 文档恢复 / document 3 15 分钟 私密文件管理 Private Space
10 6 截图清理 / screenshot 2 15 分钟 截图清理 Screenshots
11 7 联系人备份 / contacts 3 15 分钟 重复联系人整理 Contacts
12 8 已恢复文件 / recoveryed 2 15 分钟 清理记录回访 Records
13 17 通知清理 / noticlean 2 15 分钟 通知清理召回 Notification Cleaner
14 18 大文件清理 / largeclean 3 15 分钟 大文件/空间检查 Smart Clean

这里没有“哪个场景优先级是 95”这一层。竞品 B 的实际可见规则是:全局最短 2 分钟;同一个 ID 自己还要满足 15 分钟和当日次数上限。

3.4.2 3 个事件 ID#

竞品 ID 14、15、16 不在上述普通 14 项轮询配置中,而是由本地事件触发。Tidyvo 只做产品能力替换,不声称替换后的事件就是竞品原始事件。

ID 竞品事件事实 Tidyvo 对应事件 文案消费规则 点击目标
14 安装包安装后清理残留 检测到新增媒体或大文件 每次系统事件只生成 1 个候选,不自动重复 12 次 Smart Clean
15 App 卸载后清理残留 一次清理完成后仍有 To clean 项目 每次完成事件只生成 1 个候选 To clean
16 新截图事件 检测到新截图 每次截图事件只生成 1 个候选 Screenshots

事件候选也必须通过中台受众、通知权限、全局 99 条、全局 2 分钟和通知栏可见数量检查。多个事件同时发生时,不另建优先级;客户端只消费系统最先回调的一条,其余等待下一次调度。

3.5 R3:同场景随机文案#

3.5.1 随机规则#

  1. 每个模板由“中文标题+中文正文+英文标题+英文正文+固定路由”组成。
  2. 同一 ID 有 N 条可用模板时,客户端生成 [0, N-1] 的均匀随机整数,等概率选中一条。
  3. 不配置权重,不记录轮播顺序,不要求上一条之后必须换文案,因此连续两次随机到同一条是正常结果。
  4. 带变量的模板只有在本机能取得真实变量时才进入随机池;变量不可用时只在无变量模板中等概率随机,通知中不得出现未替换的 {count} 等占位符。
  5. repetitions=3 只刷新本次已经选中的同一通知,不重新随机文案。

3.5.2 中英文生产文案池#

模板 ID 中文标题 中文正文 English title English body 路由
01-A 1 立即查看 使用 Tidyvo Cleaner 整理存储空间。 View now Keep your storage organized with Tidyvo Cleaner. Home
01-B 1 立即清理 打开 Tidyvo,快速检查存储空间。 Clean Now Open Tidyvo for a quick storage check. Home
02-A 2 立即查看 相似照片可能正在占用你的存储空间。 View now Similar photos may be taking up your storage. Duplicates
02-B 2 开始清理 检查重复照片,保留你想要的照片。 Start Cleaning Review duplicate photos and keep the ones you want. Duplicates
03-A 3 立即查看 大视频占用的空间可能比你想象的更多。 View now Large videos may be using more space than you expect. Compress
03-B 3 立即处理 压缩视频,减少存储占用。 Handle Now Compress videos to reduce their storage size. Compress
05-A 5 立即查看 将选中的照片和视频保存在私密空间。 View now Keep selected photos and videos in Private Space. Private Space
05-B 5 立即处理 在 Tidyvo 中检查你的私密文件。 Handle Now Review your private files in Tidyvo. Private Space
06-A 6 立即查看 定期清理截图,让手机运行更流畅! View now Clean up your screenshots regularly to make your phone run more smoothly! Screenshots
06-B 6 立即清理 一起清理截图吧! Clean Now Let’s clean up your screenshots! Screenshots
07-A 7 立即查看 发现重复联系人?立即检查并合并。 View now Duplicate contacts detected? Review and merge them now. Contacts
07-B 7 立即处理 使用 Tidyvo 整理联系人列表。 Handle Now Keep your contact list organized with Tidyvo. Contacts
08-A 8 立即查看 看看你最近的清理记录。 View now Come see your recent cleanup records. Records
08-B 8 立即查看 你的近期存储操作记录可以查看了。 View now Your recent storage activity is ready to review. Records
09-A 9 立即清理 检测到垃圾文件。 Clean Now Junk Files Detected. Smart Clean
09-B 9 开始清理 垃圾文件过多!立即清理! Start Cleaning Too many junk files! Clean them up now! Smart Clean
09-C 9 立即清理 检测到 1.8GB 垃圾!立即释放空间,速度最高提升 35%↑ Clean Now 1.8GB Junk Detected! Free Up Space Now → Speed Boost up to 35%↑ Smart Clean
10-A 10 立即查看 模糊照片可以检查了。 View now Blurry photos are ready for your review. Blurry
10-B 10 立即清理 检查低质量照片,并选择要移除的内容。 Clean Now Review low-quality photos and choose what to remove. Blurry
11-A 11 立即处理 选中的项目仍在等待确认。 Handle Now Selected items are still waiting for confirmation. To clean
11-B 11 立即清理 完成 To clean 中项目的检查。 Clean Now Finish reviewing the items in To clean. To clean
12-A 12 立即查看 你已经很久没有检查存储空间了。 View now You haven't scanned your storage for a long time. Smart Clean
12-B 12 开始清理 是时候再次检查存储空间了。 Start Cleaning It’s time for another storage scan. Smart Clean
13-A 13 立即清理 你已经很久没有清理手机存储了。 Clean Now You haven't cleaned up your phone storage for a long time. Smart Clean
13-B 13 立即处理 存储空间正在变满,立即检查。 Handle Now Storage is filling up. Review it now. Smart Clean
14-A 14 立即清理 检测到新媒体,立即检查存储空间。 Clean Now New media detected. Scan your storage now. Smart Clean
14-B 14 立即处理 新的大文件可能正在占用存储空间。 Handle Now A new large file may be taking up storage. Smart Clean
15-A 15 立即清理 清理完成,要检查剩余项目吗? Clean Now Cleanup complete. Review the remaining items? To clean
15-B 15 立即处理 To clean 中还有选中的文件等待处理。 Handle Now More selected files are waiting in To clean. To clean
16-A 16 立即清理 清理 100 多张旧截图?一键释放空间。 Clean Now Clean 100+ Old Screenshots? Free up space with one tap. Screenshots
16-B 16 开始清理 检测到新截图,立即查看。 Start Cleaning New screenshots detected. Review them now. Screenshots
17-A 17 立即清理 {count} 条未读通知!立即整理通知栏。 Clean Now {count} unread notifications! Manage your notification bar. Notification Cleaner
17-B 17 开始清理 通知太多?立即整理通知。 Start Cleaning Notification overload? Declutter notifications now. Notification Cleaner
17-C 17 立即处理 有未读通知,立即管理通知栏。 Handle Now Unread notifications! Manage your notification bar. Notification Cleaner
18-A 18 立即清理 仅剩 {free_space} 空间!立即检查。 Clean Now Only {free_space} space left! Review it now. Smart Clean
18-B 18 开始清理 发现占用空间的大文件,立即处理。 Start Cleaning Large files are taking up storage. Handle them now. Smart Clean
18-C 18 立即处理 大文件提醒! Handle Now Large File Alert! Smart Clean

09-C16-A 沿用竞品固定数字式文案,不依赖本机扫描结果;这是本次明确采用的竞品文案方式。{count} 只读取现有 Notification Cleaner 本地未读数量,{free_space} 只读取 Android 本机可用存储值,均不得由中台生成。

本 PRD 只交付中文和英文源文案。开发翻译其他语言时不得改变模板 ID、场景和路由;翻译缺失时使用英文。

3.6 R4:中台唯一控制#

中台只新增一个字段:notification_audience_mode(通知下放范围)

中台含义 客户端行为
OFF 全部关闭 中台不发送 Topic 唤醒;客户端所有恢复入口检查到该值后不生成新通知
ORGANIC_ONLY 只给自然量用户下放 只有按现有来源口径识别为自然量的客户端允许运行通知调度
PAID_ONLY 只给推广用户下放 只有按现有来源口径识别为推广用户的客户端允许运行通知调度

控制边界:

  • 没有“全部用户开启”这一状态。
  • 中台不再配置通知方案、场景、文案、语言、上限、间隔、时段、路由、国家或比例。
  • 用户来源沿用中台现有自然量/推广用户判断,不在本需求中新建归因规则;无法归类的用户不属于可下放对象。
  • 客户端每次启动调度器前读取该唯一字段并结合本机用户来源判断;不匹配时直接结束本轮。

3.7 R5:FCM Topic 空消息与后台恢复#

3.7.1 Topic 联动#

环节 具体规则
客户端订阅 客户端按现有用户来源,只订阅“自然量 Topic”或“推广用户 Topic”中的一个;来源变化时退出旧 Topic、订阅新 Topic
中台选择 OFF 不发;ORGANIC_ONLY 只向自然量 Topic 发;PAID_ONLY 只向推广用户 Topic 发
消息内容 发送 data-only(只有数据、不由系统直接展示通知)的空值消息;仅保留 FCM 协议要求的空标识,不包含标题、正文、通知 ID、路由或用户数据
客户端收到 不直接显示远程通知,只进入进程/服务恢复入口,然后运行本地中台受众检查和竞品 B 调度器
Token 边界 Tidyvo 不向业务中台上传、绑定、保存或按用户查询 FCM Token;FCM SDK 为完成 Topic 订阅在 Firebase 内部使用设备注册令牌,不属于本需求的业务 Token 方案
失败边界 空消息只是唤醒尝试;App 被用户强制停止、系统限制后台或厂商省电策略拦截时,不能承诺一定拉活

3.7.2 Service / Job / WorkManager / Alarm#

能力 竞品已确认参数和作用 Tidyvo 本次方案
Foreground Service(前台服务) START_STICKY,服务销毁或任务划掉后进入恢复链 作为常驻主入口;只启动统一调度器,不单独决定发哪条通知
快速 Job minLatency=3999msdeadline=5999ms 前台服务启动失败后的 4—6 秒补拉入口
WorkManager 约 18 分钟 周期检查进程、服务和调度器;实际时间由 Android 决定
持久 Job minLatency=1446000msdeadline=1449999ms,Android 13+ priority 400 约 24 分钟心跳恢复入口
Alarm 延迟 28799365ms,约 8 小时 长周期恢复入口,使用非精确 Alarm
开机/升级广播 BOOT_COMPLETEDMY_PACKAGE_REPLACED 开机或覆盖安装后重新安排 Service、Job、WorkManager 和 Alarm
FCM 远程消息可进入恢复分支,服务端做法未确认 使用本 PRD 的 Topic 空数据消息进入同一恢复分支

这些入口是“让调度器有更多机会恢复”,不是各自发一条通知。无论多少入口同时到达,都必须通过同一把调度锁和全局 2 分钟频控,不能并发显示多条。

3.8 R6:Notification Cleaner 联动#

项目 规则
功能状态 复用线上已有 Notification Cleaner,不在本需求中重做页面、白名单或历史记录
两类权限 POST_NOTIFICATIONS 是允许 Tidyvo 自己发通知;Notification access(通知使用权)是允许 Tidyvo 管理其他 App 通知,两者不是同一权限
ID 17 进入 14 个周期 ID 列表,单日最多 2 次、同 ID 最短 15 分钟,点击进入现有 Notification Cleaner
自身保护 Tidyvo 自己发出的普通通知、前台服务通知不能被现有 Notification Cleaner 清掉
本地变量 ID 17 的 {count} 只读取本机未读通知记录;不向中台上传其他 App 的通知标题、正文、发送者或验证码
权限缺失 没有 Notification access 时,不使用 {count} 模板;仍可随机使用 ID 17 的无变量模板,点击进入现有权限引导页

3.9 通知权限、点击与记录#

项目 规则
通知权限 Android 13+ 未获得 POST_NOTIFICATIONS 时不展示通知;沿用 Tidyvo 现有按需申请入口,不在冷启动新增权限弹窗
点击路由 按本 PRD 固定路由进入现有页面;页面不可达时回退 Home
一次点击 点击只打开一个目标页面,不串联打开多个场景
本地记录 至少保存通知 ID、模板 ID、展示时间、点击时间、当日次数、上次展示时间和循环游标
中台数据边界 可以上报 ID、模板 ID、展示、点击和来源类型;不得上传媒体名称、文件 URI、联系人、通知正文、FCM Token 或 Topic 成员明细

4. 验收标准#

序号 关联需求 验收标准
1 R1 工程中只有竞品 B 一套通知参数,不存在第二策略、策略比例或远程覆盖频控。
2 R1 本地日期不变时,普通通知成功展示达到 99 条后不再展示;手机当地日期进入下一日后重新计数。
3 R1 任意两条普通通知至少间隔 2 分钟;一次调度最多显示 1 条。
4 R1 同一普通 ID 两次成功展示至少间隔 15 分钟,且各 ID 日上限与第 3.4.1 节一致。
5 R1 连续成功展示 12 条后进入 2 分钟冷却;测试结果不得解释为一次展示 12 条或额外等待 4 分钟。
6 R1 repetitions=3 只按约 4 秒刷新同一通知 ID,最多 3 次;通知栏不会因此新增 3 张卡,也不会重新随机文案。
7 R1 Android 15 及以下最多保留 5 条 Tidyvo 普通通知,Android 16 及以上最多 1 条;达到上限后移除最早一条并显示最新一条。
8 R2 14 个周期 ID 按配置顺序循环检查,无数值优先级;ID 14、15、16 只由对应 Tidyvo 本地事件生成候选。
9 R2 同时满足三个场景时只展示 1 条,其余场景至少等待后续 2 分钟调度。
10 R3 同一 ID 的每条可用模板抽样概率接近等分;允许连续两次随机到同一模板,未实现权重和固定轮播。
11 R3 中文系统可展示中文源文案,英文系统可展示英文源文案;其他语言由开发翻译,缺失时回退英文;不存在 12 语言中台配置。
12 R3 变量缺失时不展示含未替换占位符的模板;09-C16-A 按固定数字文案展示。
13 R4 中台只有 OFF / ORGANIC_ONLY / PAID_ONLY 三态控制,没有“全量开启”,也没有通知规则、文案和频控配置页。
14 R4 三种中台状态分别验证:全部不下放、仅自然量下放、仅推广用户下放;无法归类用户不收到。
15 R5 中台和客户端日志、接口及数据库中均不存在业务 FCM Token 上传、绑定和成员列表;Topic 空消息不含通知内容、ID 或路由。
16 R5 Topic 空消息到达时不直接展示远程通知,只尝试恢复进程/服务并进入同一套本地调度器。
17 R5 Service、快速 Job、18 分钟 WorkManager、24 分钟持久 Job、8 小时 Alarm、开机/升级广播均可进入同一恢复入口;并发触发不会绕过 2 分钟频控。
18 R5 强制停止或系统拦截时记录为“未唤醒/未验证”,不得宣称 FCM、Job 或 Alarm 可保证拉活。
19 R6 ID 17 正确进入现有 Notification Cleaner;Tidyvo 自身普通通知和前台服务通知不被通知清理功能移除。
20 全部 通知点击进入固定 Tidyvo 页面,异常路由回退 Home;请求和埋点不包含个人内容、其他 App 通知正文或真实 FCM Token。
21 R7 normal_ntf / ad_ntf / res_ntf / filter_ntf 分开计数;res_ntf 上限 2 条且最短 4 小时,ad_ntf-1/-1 不被误改成普通通知 99 条/2 分钟。
Photo Recovery V1.0.3 竞品逆向分析 · 2026-08-13