feat(mmp): 独立红包领取台(手机+PC)、同步、筛选与功能说明
隔离通用消息台;支持设置/手气摘要/电脑同步;忽略临时逆向脚本与运行时 JSON。
This commit is contained in:
@@ -7,11 +7,28 @@
|
||||
|
||||
抓取 TNG eWallet **Money Packet(红包)** 的领取排行:谁领了、领了多少,并在 PC 调试台按**单个红包**展示。
|
||||
|
||||
## 手机端领取台
|
||||
|
||||
主 App 首页有 **红包领取台(独立)** 入口(`MmpClaimActivity`):
|
||||
|
||||
- Hook 收到 `[MMP统计]` 后写入本地 `MmpPacketStore`,**不进入**通用「情况」监听台、也不走正式上传
|
||||
- 手机数据可同步到 PC:打开领取台会自动同步,也可点「同步电脑」;PC 打开 http://127.0.0.1:8765/mmp 即可看(落盘 `mmp_packets.json`,重启调试台不丢)
|
||||
- PC 调试台红包数据走独立队列,与 `/` 通用消息台隔离
|
||||
- 列表支持筛选(全部/领取中/已领完 + 关键词)、详情/卡片显示手气(领完)或目前最高/最低(领取中)
|
||||
- 点进看领取排行;支持清空(仅红包)
|
||||
- 需监听列表勾选 TNG,且 Xposed 模块生效
|
||||
- **功能说明页**:手机顶栏「说明」→ `MmpHelpActivity`;电脑 http://127.0.0.1:8765/mmp/help
|
||||
|
||||
PC 页 http://127.0.0.1:8765/mmp ;手机浏览器也可访问(USB reverse 或局域网 IP)。
|
||||
|
||||
---
|
||||
|
||||
## 页面与地址
|
||||
|
||||
| 入口 | 地址 |
|
||||
|------|------|
|
||||
| 本机(USB + `adb reverse`) | http://127.0.0.1:8765/mmp |
|
||||
| 功能说明 | http://127.0.0.1:8765/mmp/help |
|
||||
| 局域网 / USB 共享网 | http://<电脑IP>:8765/mmp (当前常见:`http://10.151.104.25:8765/mmp`) |
|
||||
| 通用消息台 | http://127.0.0.1:8765/ |
|
||||
|
||||
@@ -60,10 +77,10 @@ powershell -ExecutionPolicy Bypass -File scripts/start-debug-server.ps1
|
||||
登录后**无需再手动点详情灌模板**,也**不必反复进历史页**:
|
||||
|
||||
1. 打开 TNG 并完成登录 / PIN(任意前台页面即可)
|
||||
2. Hook 从 `ILoginStorage` / 历史请求自动取 `sessionId`;`Activity.onResume` 约每 **45 秒**主动调一次 `moneyPacketHistoryList`(主线程)
|
||||
3. 历史返回后自动按 `activityId` 在主线程串行拉详情(间隔约 200ms),推送到领取台
|
||||
2. Hook 从 `ILoginStorage` / 历史请求自动取 `sessionId`;`Activity.onResume` 按设置冷却主动调 `moneyPacketHistoryList`
|
||||
3. 历史返回后自动按 `activityId` 串行拉详情(间隔见设置),推送到领取台
|
||||
4. 仅打开 **Money Packet 历史页**时,App 自己的列表响应也会立刻触发步骤 3
|
||||
5. 打开 http://127.0.0.1:8765/mmp 刷新查看
|
||||
5. 打开 http://127.0.0.1:8765/mmp ;点 **设置** 可调刷新速度,保存后约 10 秒内生效
|
||||
|
||||
日志期望:
|
||||
|
||||
@@ -75,17 +92,30 @@ powershell -ExecutionPolicy Bypass -File scripts/start-debug-server.ps1
|
||||
|
||||
## 去重与刷新行为
|
||||
|
||||
冷却时间可在领取台 **设置** 面板调整(`/mmp` → 设置),保存后约 **10 秒内**手机 Hook 生效。默认偏快(历史/详情约 8 秒)。
|
||||
|
||||
| 规则 | 说明 |
|
||||
|------|------|
|
||||
| 标识 | 以 `activityId` 区分红包 |
|
||||
| sessionId | 自动:`ILoginStorage` / Repository.loginStorage;有真实请求时也会缓存 |
|
||||
| 自动历史 | 前台 `onResume` 触发,约 **45 秒**冷却;也可由首次缓存到 RpcTask 触发 |
|
||||
| 短时去重 | 同一 `activityId` + **相同领取名单**,约 **20 秒内**不重复推送 |
|
||||
| 自动拉冷却 | 同一 `activityId` 自动拉详情成功后约 **60 秒**内不重复自动拉 |
|
||||
| 包间间隔 | 自动拉详情串行,约 **150ms**/条 |
|
||||
| 自动历史 | 前台 `onResume` 触发;冷却见设置「历史列表冷却」 |
|
||||
| 短时去重 | 同一 `activityId` + **相同领取名单**,「相同名单去重」秒内不重复推送 |
|
||||
| 自动拉冷却 | 同一 `activityId` 自动拉详情成功后,「详情刷新冷却」内不重复自动拉 |
|
||||
| 包间间隔 | 自动拉详情串行,「详情请求间隔」毫秒/条 |
|
||||
| 无模板 | 「无模板时自动打开历史页」可关,避免突然跳转 |
|
||||
| 调试台 | 同一 `activityId` 只保留最新完整快照;双通道短时内容去重 |
|
||||
|
||||
预设:**极速**(约 5s)/ **标准**(约 8s)/ **省流**(约 30–45s)。
|
||||
|
||||
日志里若出现 `skip dup activityId=...`,表示短时去重生效,不是没抓到。
|
||||
`settings applied hist=…` 表示 Hook 已拉到新配置。
|
||||
|
||||
| 已领完停刷 | `remainingCount<=0` / `claimed>=total` / status FINISH·COMPLETE·EXPIRE / 金额凑齐,且**已有领取名单**后不再自动拉该包详情 |
|
||||
| 断线重连 | session 丢失或 RPC 鉴权/网络失败 → 标记断开;session 恢复或 Activity resume 时**强制**重拉历史 |
|
||||
|
||||
日志:`packet DONE stop-refresh`、`session lost`、`session recovered → force re-fetch`。
|
||||
|
||||
---
|
||||
|
||||
## 排障
|
||||
|
||||
@@ -118,8 +148,9 @@ adb logcat | findstr TngMmp
|
||||
|
||||
| 文件 | 作用 |
|
||||
|------|------|
|
||||
| `xposed-module/.../hook/TngMoneyPacketHook.java` | Quake RPC Hook、自动拉详情、金额/`activityId` 解析 |
|
||||
| `debug-server/server.py` | `/mmp` 领取台、`/api/mmp` |
|
||||
| `xposed-module/.../hook/TngMoneyPacketHook.java` | Quake RPC Hook、自动拉详情、轮询领取台设置 |
|
||||
| `debug-server/server.py` | `/mmp` 领取台、`/api/mmp`、`/api/mmp/settings` |
|
||||
| `debug-server/mmp_settings.json` | 领取台刷新设置(自动生成) |
|
||||
| `app/.../AppConfig.java` | `DEBUG_SERVER_URLS` 双地址 |
|
||||
| `app/.../network/DebugForwarder.java` | 向多个调试地址推送 |
|
||||
| `scripts/start-debug-server.ps1` | 启动调试台 + adb reverse |
|
||||
|
||||
Reference in New Issue
Block a user