报告口径本页直接渲染本地报告真源;静态能力、动态观察、推断和线上未验证项不得互相替代。
Swift Clean v1.0.9 产品功能与商业化分析#
样本:
com.swiftclean.phone.managerprov1.0.9 (11)
文档日期:2026-10-12
标签:[S1]静态直接证据;[I]产品/商业化判断;[U]线上或动态未验证。
1. 结论先行#
[S1]产品不是单点“垃圾清理器”,而是以缓存/大文件/图片清理为主轴,叠加 App Manager(应用管理)、Network Traffic(网络流量)、Notification Cleaner(通知清理)、RAM Status(内存状态)、Device Info(设备信息)与网速工具的工具箱。[S1]商业化核心是 TradPlus 聚合:内置swiftcleanStart开屏位,以及swiftcleanScan1、swiftcleanScan两个插屏位;Firebase Remote Config 可替换广告位配置、展示/点击上限、黑名单、加载延迟和首页原生/横幅开关。[I]产品漏斗是“系统权限扩大可扫描范围 → 多工具触发扫描 → 结果/清理前后插屏 → 通知与 FCM 召回再进入功能页”。这不是普通工具页堆叠,而是功能、广告和召回共用同一套入口路由。[S1]内置广告限制默认值为全屏广告每日展示 50、点击 15;真实线上值可被 Remote Config 改写,不能把 APK 兜底值写成线上现值[U]。[S1]Manifest 同时打包 Google Mobile Ads、AppLovin、Meta、Unity、Pangle、Vungle/Liftoff、Mintegral、Bigo、IronSource/Fyber 等广告/适配器组件;这证明 SDK footprint(打包足迹),不证明每家在当前瀑布实际填充[U]。
2. 功能全景#
ScanPage 的 func=1..9 是最清晰的功能枚举,见 jadx/sources/crown/arithmetic/floor/page/ScanPage.java:155-202。
| func | 功能 | 主要数据/权限 | 用户价值 | 静态状态 |
|---|---|---|---|---|
| 1 | Cache Remove(缓存清理) | All files access、Usage Access、StorageStatsManager |
聚合 App 缓存、释放空间 | [S1] 完整页面与扫描调用存在 |
| 2 | Big File Cleaner(大文件清理) | All files access、文件扫描 | 找出大文件并删除 | [S1] 页面、结果与通知入口存在 |
| 3 | Screenshot Cleaner(截图清理) | All files access、图片目录/FileObserver | 查找与清理截图 | [S1] 页面、预览、文件监听与通知存在 |
| 4 | Similar Photo Cleaner(相似照片清理) | 媒体/文件读取 | 聚类相似图片供选择清理 | [S1] 页面与扫描类型存在;准确率未测 [U] |
| 5 | App Manager(应用管理) | Usage Access、包列表、卸载 Intent | 查看、筛选、卸载 App | [S1] AppListPage 使用系统卸载页 |
| 6 | Network Traffic(网络流量) | Usage Access、NetworkStatsManager |
按 UID 查看流量 | [S1] tf/f1.java:66-85 |
| 7 | Device Info(设备信息) | 系统硬件/存储信息 | 展示设备状态 | [S1] 页面与扫描类型存在 |
| 8 | Notification Clean(通知清理) | Notification Listener Access | 拦截、记录、批量查看通知 | [S1] 自有 NotificationListenerService |
| 9 | RAM Status(内存状态) | ActivityManager.MemoryInfo |
展示内存占用/引导管理后台 App | [S1] 页面与通知动态占用值 |
补充功能 [S1]:网络测速 SpeedPage/SpeedScanPage、桌面 Widget、语言设置、权限引导、About(关于)、扫描/结果页、图片预览、清理操作页。25 个自有 Activity 的完整清单见 jadx/resources/AndroidManifest.xml:96-206。
3. 关键用户流程#
3.1 首启与权限#
FirstPage是 Launcher;应用初始化 Adjust、Install Referrer、Firebase/RC 和广告配置。[S1]- Android 13+ 请求
POST_NOTIFICATIONS;代码限制部分入口最多直接请求两次,之后进入自有权限引导页。[S1]FirstPage.java:104-110、MainPage.java:518-528 - 文件类功能先检查
Environment.isExternalStorageManager();未授权时展示引导并跳系统设置。[S1]MainPage.java:322-341,494-503 - App/流量功能检查
android:get_usage_statsAppOps;未授权时展示 Usage Access 引导。[S1]MainPage.java:443-451,505-516
[I] 权限并非孤立设置项,而是直接绑定功能入口:文件权限扩大清理范围,Usage Access 支撑缓存/App/流量报告,通知权限同时开启前台服务和召回通知体系。
3.2 扫描与清理#
[S1]首页/通知/Widget 最终把func与sourceLocation传到扫描页。[S1]ScanPage根据func选择标题、图标、扫描器与后续页面。[S1]App Manager 的删除动作调用ACTION_DELETE package:<id>,仍由系统确认,不是静默卸载。[S1]Cache Scan 使用StorageStatsManager.queryStatsForUid()读取非系统 App 缓存;缺 Usage Access/系统能力时结果可能受限。[U]实际扫描准确率、删除成功率、相似照片算法质量和不同 OEM 文件可见性未做本轮真机验证。
3.3 通知清理#
[S1]NotifyManagerServices是NotificationListenerService;对非自身、非白名单且非 ongoing 的第三方通知调用取消,并将标题/正文写入本地 Room 数据库。见NotifyManagerServices.java:51-75。[S1]当“今日拦截数”达到 20 且可被 10 整除时,会尝试发notify_block_notification召回。见 simple-mode 文件...NotifyManagerServices.java:55-103。[I]这形成“拦截通知 → 本地累计 → 再以清理通知召回”的闭环,用户价值与召回机制共用同一数据。[U]白名单完整规则、被拦截 App 覆盖率及 Android 版本兼容性需真机矩阵验证。
4. 广告架构#
4.1 聚合 SDK 与广告位#
| 项目 | 静态结果 | 证据 |
|---|---|---|
| 聚合层 | TradPlus SDK;客户端存在初始化标识(文档不记录具体值) | [S1] tf/q.java:32-43 |
| 启动位 | swiftcleanStart,format=open |
[S1] assets/max0.json–max3.json |
| 扫描位 1 | swiftcleanScan1,format=int |
[S1] 同上 |
| 扫描位 2 | swiftcleanScan,format=int |
[S1] 同上 |
| 支持格式 | open、int、nav、ban |
[S1] dg/l.java:90-158、dg/t.java |
| 配置分层 | max0–max3,按归因/安装天数选择 |
[S1] tf/u.java:58-69 |
| 同位重载冷却 | 已加载对象满 1 小时后才进入重新拉取判断 | [S1] dg/l.java:90-97 |
内置 max0–max3 每套均启用上述 3 个广告位;max2 与 max3 的内置配置相同。各套 placement ID 不同,完整值保留在 JSON 真源中。
4.2 广告频控与保护条件#
| 规则 | APK 兜底/行为 | 边界 |
|---|---|---|
| 全屏广告展示上限 | 默认 50 | [S1] dg/l.java:40-44,122-135;RC 可改 [U] |
| 全屏广告点击上限 | 默认 15 | [S1] dg/l.java:40-44,136-147;RC 可改 [U] |
| Adjust ID 黑名单 | adIDLimitShow 下发逗号分隔列表,命中则不请求 |
[S1] tf/u.java:82-98 |
| VPN/代理 | 代理检测为真时跳过请求 | [S1] dg/l.java:116-120;检测准确率 [U] |
| 首页 nav/banner | home_nav_removeV1=1 时不请求 nav/ban |
[S1] dg/l.java:149-151 |
| 广告配置启用 | placement 的 enable 决定候选 |
[S1] 内置 JSON;线上 RC [U] |
4.3 广告回跳与召回#
[S1]生命周期观察器在 App 因广告页离开并进入后台时,可发notify_click_ad或notify_click_applovin。[S1]两者共用标题/正文/按钮;普通广告通知点回FirstPage,AppLovin 分支点回AutoBackPage。见jadx-simple/TotalPageObserver.java:278-355、uf/j.java:23-27。[I]这是“广告误触/外跳后的任务恢复”,既降低流失,也把一次广告离开转化为通知召回;但是否每个广告网络都设置了对应状态标记仍需运行时观察[U]。
5. Firebase Remote Config#
[S1] 应用获取命名空间 firebase 的 RC 实例,最短抓取间隔设为 3,600 秒,执行 fetch/activate 并注册 realtime update listener。见 jadx-simple/tf.u.java:221-300。
| Key | 用途 | 静态状态 |
|---|---|---|
max0、max1、max2、max3 |
不同分群/安装天数的广告 placement JSON | [S1] 可实时触发应用 |
adLimitShow |
全屏广告展示上限 | [S1] 正数覆盖兜底 |
pureClean_ad_click |
全屏广告点击上限 | [S1] 正数覆盖兜底 |
adIDLimitShow |
Adjust ID 黑名单 | [S1] |
adLoad_ab |
广告加载延迟/实验参数 | [S1] 首次读取;realtime listener 条件中未见该 key |
home_nav_removeV1 |
首页 nav/banner 移除开关 | [S1] |
fbinfo |
Facebook App ID/Client Token 配置 | [S1] |
[U] APK 中未内置当前生产 RC 值,因此报告不能确认哪个 max*、上限或网络此刻线上生效。
6. 归因、分析与后端#
[S1]Adjust 以 production 环境初始化,启用后台发送并读取 Adjust ID;初始化标识不写入报告。TotalPage.java:49-73[S1]使用 Install Referrer 判断/保存归因信息。[S1]集成 Firebase Analytics、Crashlytics、Performance、Installations、Messaging、Remote Config。[S1]自有后端:https://ip.penguin-swift.com/check/new/ip与https://mor.penguin-swift.com/swpeng/chaid。前者循环检查布尔结果,后者上传包名及本地保存的 ID/token 信息;均带超时与指数退避。[U]请求体完整业务含义、服务端留存、响应策略及隐私政策一致性需抓包与后端文档核验。
7. 产品判断与可借鉴点#
7.1 这款产品的核心策略 [I]#
- 用“清理”作为主心智,但把 App、网络、通知、RAM、设备状态都包装成可反复进入的工具入口。
- 广告不是固定写死在单一页面:RC 可按归因/安装天数切换整套广告位,允许较强的商业化实验。
- 通知 action 与
MainPage路由一一映射,召回不是只回首页,而是尽量落到 Cache、Large File、App、Screenshot、Network、Notification Clean 或 RAM。 - FGS、Job、Alarm、WorkManager、系统广播、FCM 与生命周期回前台共同扩大“仍可触达”的窗口,但 Android 强停仍是系统边界
[U]。
7.2 风险点#
[S1/I]All files access、Usage Access、Notification Listener 三类高敏能力集中,需用清晰功能必要性、最小化调用和商店声明支撑。[S1/I]通知权限同时成为保活装配门槛,若拒绝权限,FGS/Job/Alarm/WorkManager 初始化路径明显收缩。[S1/I]业务通知 ID 统一为 21,短时间重复更新同一 ID;高频、同 ID 覆盖和广告回跳文案存在打扰/合规风险。[U]多家广告 SDK 的 Data Safety、Consent、设备标识和出站请求必须以最终运行时及 Play Console 声明核对,不能仅看依赖名称。
8. 未验证项#
- 未测试扫描、删除、通知拦截、应用卸载、网速/流量的准确性与成功率。
- 未登录 Remote Config、TradPlus、Adjust、Firebase 或后端;线上参数、分群和效果未知。
- 未确认每个打包广告适配器是否在当前 waterfall 启用。
- 未验证 Consent(同意管理)在不同地区的最终呈现与阻断效果。
- 未验证 Android 8–16、不同 OEM、电量策略和 Force Stop 对功能/广告/召回的真实影响。