Compare commits

..

18 Commits

Author SHA1 Message Date
song 327695f86b docs: README 更新到 v1.18.8,最低系统版本改为 Android 11
minSdk 降到 30,徽标、安装说明和文末的系统要求同步改为 Android 11 / API 30。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 18:19:22 +08:00
song 44ebe3c903 README: 重写远程控制章节,重点介绍 50 项能力与控制台自动化 2026-07-31 22:29:47 +08:00
song f88b594dd8 docs: describe reply support for additional channels 2026-07-31 19:00:23 +08:00
song 710bc8b7e2 docs: 移除赞赏码章节与图片
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-30 20:10:23 +08:00
song f03cb43cd1 docs: update README for 1.18.6 2026-07-30 15:27:57 +08:00
song 4ad84cfffc docs: README 1.16.21 + 多通道徽标 + 首页截图 2026-07-21 21:54:36 +08:00
song 1b4364f151 docs: add website link to README top
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-20 15:45:50 +08:00
song ecc3c21444 docs: sync README with website and latest features
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-20 12:53:33 +08:00
song 8ab32bf7df docs: sync README
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-20 12:40:43 +08:00
song afdae275c4 docs: update release version to 1.16.9 2026-07-19 15:13:16 +08:00
song 8fae904ea6 docs: publish 1.16.8 application rule fixes 2026-07-19 08:16:26 +08:00
song c3b5955ca2 docs: publish 1.16.7 interface and release info 2026-07-18 22:34:56 +08:00
song 4520aeb2d8 Add appreciation QR code to README 2026-07-17 21:16:23 +08:00
song 0622e92cfe docs: publish v1.12.23 guidance 2026-07-17 18:28:23 +08:00
song 07ba7fe01b docs: update channel delivery behavior 2026-07-17 17:51:05 +08:00
song 9ceada798e docs: document SMS verification behavior 2026-07-17 17:25:50 +08:00
song 3157c694e5 docs: explain masked lock-screen codes 2026-07-17 17:11:17 +08:00
song fbc9b67b51 docs: rewrite beginner setup guide 2026-07-17 16:37:03 +08:00
7 changed files with 1056 additions and 316 deletions
+972 -283
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -1,7 +1,7 @@
# A2iReply 快捷指令迁移说明 # A2iReply 快捷指令迁移说明
v1.11.0 已移除旧的 iOS 快捷指令和 ntfy `_reply` topic 方案。请删除原有的 `A2iReply` 快捷指令;GotMsg 不再订阅或使用 `_reply` topic。 GotMsg v1.11.0 已移除旧的 iOS 快捷指令和 ntfy `_reply` topic 方案。请删除原有的 `A2iReply` 快捷指令;GotMsg 不再订阅或使用 `_reply` topic。
新版本会在可回复的 ntfy 通知中直接附加一次性网页链接。iPhone 和 Android 都可点开网页输入回复,不需要额外配置。 新版本把一次性回复地址设置为 Bark / ntfy 通知的点击地址或“回复”动作,不会在通知正文中重复显示。iPhone 和 Android 都可直接打开网页输入回复,无需另外安装快捷指令或修改现有 ntfy topic。
完整说明见 [notification-reply.md](notification-reply.md)。 完整的安装要求、Shizuku / 无障碍配置、PIN 自动解锁和故障排查见 [通知远程回复](notification-reply.md)。
+81 -30
View File
@@ -1,43 +1,94 @@
# 通知远程回复 # 通知远程回复
GotMsg v1.11.0 起支持从 iPhone 或另一台 Android 设备打开 Bark / ntfy 通知里的回复链接。回复会回到运行 GotMsg 的原 Android 手机。v1.12.0 起,除了原生通知快捷回复,还可选择使用无障碍兼容回复处理微信、QQ 等没有提供系统回复动作的聊天通知。 GotMsg 可以从 Bark、ntfy、Telegram、飞书、钉钉、Meow、电邮或短信兜底消息打开一次性回复网页,把回复送回运行 GotMsg 的原 Android 手机。系统会优先使用通知自带的 Android `RemoteInput`;QQ 等应用可使用无障碍兼容回复,微信使用 Shizuku 回复。
> 远程回复不是模拟登录,也不会接管微信或 QQ 账号。能否成功取决于原通知是否仍然存在、原手机是否在线,以及目标应用当前界面是否可识别。
## 开始前准备
1. 在原 Android 手机上安装 GotMsg,并授权“通知使用权”。
2. 至少启用一个支持接收回复入口的转发配置。短信兜底只有在原手机能够联网注册回复会话时才会附带入口。
3. 关闭针对 GotMsg 的省电限制,允许后台运行和自启动。
4. 根据要回复的应用完成下面的额外配置:
- 通知本身带快捷回复:无需额外配置。
- QQ、支付宝、淘宝、钉钉:打开 GotMsg“设置 → 通知回复 → 无障碍兼容回复”,并在系统无障碍设置中启用“GotMsg 兼容回复”。
- 微信:安装并启动 [Shizuku](https://shizuku.rikka.app/download/),授权 GotMsg。微信实际回复走 Shizuku,不依赖系统无障碍服务。
## 使用方法 ## 使用方法
1. 在原 Android 手机的 GotMsg 中启用至少一个 Bark 或 ntfy 配置。 1. 原手机收到通知后,GotMsg 注册一次性回复会话,并将通知转发到已启用通道。
2. 保持 GotMsg 的通知读取权限,并让原手机联网。 2. 在接收端点击通知、“回复”按钮或正文中的回复链接。
3. 如需回复没有系统快捷回复入口的微信、QQ 等通知,在 GotMsg「设置 -> 通知回复」中开启「无障碍兼容回复」,再到系统无障碍设置中开启「GotMsg 兼容回复」。 3. 网页会显示应用名、通知标题和正文;输入内容并提交。
4. 每条 Bark / ntfy 转发通知都会带回复入口。Bark 接收端直接点通知即可打开回复页,通知正文也会附带回复链接;普通消息不会再跳微信/QQ等原 App。ntfy 接收端可点通知、通知动作或正文中的回复链接;如果 iOS 点通知本体只进入 ntfy App,请点消息正文里的回复链接。 4. 原手机拉取任务并执行回复,网页等待最终结果;GotMsg“日志”页也会记录结果。
5. 网页提交后,原 Android 手机先尝试原通知的 `RemoteInput`;没有该动作时才使用已启用的无障碍兼容回复。GotMsg 的「日志」页会记录结果。
接收端无需安装 iOS 快捷指令,也无需创建或订阅 `_reply` topic。现有 ntfy server、topic 和 token 配置不需要改动。 Bark、ntfy、Telegram、飞书和钉钉优先把回复入口作为点击地址、动作或按钮;Meow 同时发送原生 `url` 跳转字段和可见链接,电邮与短信使用可点击的纯文本链接。带回复入口的短信最长控制为两个分段,可能消耗两条短信额度。原手机完全断网时无法预先向中继注册一次性会话,因此那一条短信不会附带回复链接。短信 App 中识别出的验证码通知不会创建回复会话,也不会附加回复入口。接收端不需要 iOS 快捷指令,也不需要创建或订阅 `_reply` topic;现有 ntfy server、topic 和 token 无需改变。
## 生效条件 ## 三种执行方式
| 方式 | 适用范围 | 额外要求 | 是否会打开原应用 |
| --- | --- | --- | --- |
| Android `RemoteInput` | Telegram、WhatsApp、Signal、部分短信和企业 IM;以该条通知实际提供的动作为准 | 无 | 否 |
| 无障碍兼容回复 | QQ、支付宝、淘宝、钉钉 | 启用 GotMsg 无障碍服务 | 是 |
| Shizuku 回复 | 微信 | Shizuku 已启动并授权 GotMsg | 是 |
### Android `RemoteInput`
这是最稳定的方式。GotMsg 直接调用原通知提供的快捷回复动作,不需要打开原应用,也不要求原手机停留在聊天界面。原应用若没有为这条通知提供自由文本回复动作,则无法强制使用此方式。
### 无障碍兼容回复
GotMsg 会打开通知指向的会话,识别输入框、写入文本并点击文字明确匹配“发送”的控件。它只对白名单应用生效;输入框已有草稿时会主动停止,避免覆盖原内容。
执行结束后,有 Shizuku 时会把 GotMsg 切回前台;没有 Shizuku 时会通过无障碍返回桌面,避免 QQ 等聊天页持续停在前台后不再产生新消息通知。
### 微信 Shizuku 回复
微信新版会限制普通无障碍输入,因此微信回复必须使用 Shizuku。Android 11 及以上可按 Shizuku 页面提示通过“开发者选项 → 无线调试 → 使用配对码配对设备”启动;非 Root 启动通常会在手机重启后失效,需要重新启动 Shizuku。
GotMsg 首页应显示“Shizuku 已就绪”。若显示未授权,点击授权入口并在 Shizuku 弹窗中允许 GotMsg。
## 锁屏与 PIN 自动解锁
`RemoteInput` 通常可在锁屏状态执行;无障碍和 Shizuku 兼容回复需要进入目标应用,原手机必须先解锁。
已配置 Shizuku 的手机可在“设置 → 通知回复”中开启 PIN 自动解锁:
1. 输入原手机 4–16 位数字锁屏 PIN 并保存。
2. PIN 使用 Android Keystore AES-GCM 加密,只保存在原手机,并排除云备份和设备迁移。
3. 每个回复任务最多提交一次 PIN;失败不会自动重试,避免触发系统锁定策略。
4. 如果任务开始时手机处于锁定状态,回复完成后 GotMsg 会尝试重新锁屏。
手机重启后的第一次解锁仍必须手动完成;Shizuku 未运行时不能自动输入 PIN。图案、字母密码和生物识别不属于该功能支持范围。
## 生效条件与限制
- 原生模式要求原 App 在该条通知上提供允许自由文本的 Android `RemoteInput` 动作,可以在后台完成。
- 无障碍兼容模式会使用通知的会话入口打开原 App,只对白名单中的微信、QQ、支付宝、淘宝、钉钉生效。页面必须是聊天页,并存在可识别的输入框和明确的「发送」按钮。
- 无障碍兼容模式要求原手机已解锁;执行时会亮屏、切换到对应 App。输入框已有草稿时会停止,不会覆盖草稿。
- 付款、订单、验证码、营销和系统通知通常没有聊天输入框,即使带回复链接也不能发送回复。
- 原通知不能被划掉或被新通知替换;进程未重启时 GotMsg 会短暂缓存通知入口,降低通知更新导致的失败概率。
- 回复链接从通知转发起 10 分钟内有效,并且只能成功提交一次。 - 回复链接从通知转发起 10 分钟内有效,并且只能成功提交一次。
- 原通知不能被划掉或被新通知替换;进程未重启时 GotMsg 会短暂缓存通知入口,降低通知更新导致的失败概率。
- 原 Android 手机必须联网,GotMsg 进程和通知监听服务需要正常工作。 - 原 Android 手机必须联网,GotMsg 进程和通知监听服务需要正常工作。
- 某些 App 或定制系统不会向无障碍服务暴露聊天控件;这种情况下网页会显示具体失败原因。 - 短信 App 中识别出的验证码通知不生成回复入口;付款、订单、营销和系统通知通常也没有可回复的聊天输入框。
- 兼容回复要求通知点击后真正进入对应聊天页;联系人页、登录页、广告页等不会被当作聊天页。
## 安全说明 - 某些 App 或定制系统不会向无障碍服务暴露聊天控件;界面更新后也可能需要重新适配。
- 每条通知使用独立的 256 位随机回复令牌。令牌放在 URL fragment 中,不会随首次页面请求进入服务器访问日志。
- GotMsg 安装时生成独立设备 ID 和密钥;原手机与中继 API 之间的注册、拉取和确认请求均需设备鉴权。
- 中继只持久化设备密钥和回复令牌的 SHA-256 哈希。提交后的回复正文会在中继中短暂保存,处理完成后最多保留 24 小时用于状态查询和故障排查。
- 拿到有效回复链接的人可在有效期内提交一次回复,因此不要转发或公开该链接。
- 无障碍兼容回复仅在收到有效的一次性回复事件时运行,严格校验目标包名,并且只点击文字明确匹配「发送」的控件。该权限能够读取当前窗口内容,只应在你信任的原 Android 手机上启用。
- 回复服务使用 `https://r.gotmsg.pp.ua`,不可在 App 设置中修改。部署或域名变更时需同步修改 `ReplyFeature.RELAY_BASE_URL` 并重新发布 APK。
## 常见失败 ## 常见失败
- `回复链接已过期`:通知转发已超过 10 分钟。 | 提示 | 处理方法 |
- `原通知已消失`:原 Android 手机上的通知已被清除或替换。 | --- | --- |
- `请在 GotMsg 设置中开启无障碍兼容回复服务`:应用内开关已打开,但系统无障碍权限尚未开启。 | `回复链接已过期` | 链接有效期为 10 分钟,等待一条新通知再试 |
- `原手机需解锁后才能回复`:解锁原手机后,重新从一条新通知发起回复。 | `原通知已消失` | 原通知已被清除或替换,等待新通知后再回复 |
- `未找到聊天输入框` / `未找到明确的发送按钮`:通知没有进入可回复聊天页,或原 App 当前版本的界面需要重新适配。 | `请在 GotMsg 设置中开启无障碍兼容回复服务` | 同时检查应用内开关和系统“GotMsg 兼容回复”无障碍权限 |
- `聊天输入框已有未发送内容`:GotMsg 为避免覆盖原手机草稿而主动停止。 | `Shizuku 未就绪` / `Shizuku 未授权` | 打开 Shizuku 重新启动服务,并授权 GotMsg |
- `原手机未确认回复`:中继未在超时时间内收到原手机处理结果,检查原手机网络、后台限制和 GotMsg 通知读取权限。 | `原手机需解锁后才能回复` | 手动解锁,或配置 Shizuku PIN 自动解锁 |
| `微信未进入聊天页` | 检查点击原通知能否直接进入对应微信会话,并确认没有登录页或弹窗遮挡 |
| `未找到聊天输入框` / `未找到明确的发送按钮` | 确认进入聊天页、无障碍服务开启;目标 App 更新后可能需要重新适配 |
| `无法确认聊天输入框中的回复内容` | 常见于 QQ 等不公开输入框文本的界面;升级到最新版并保留 `A2iReply` 日志供排查 |
| `聊天输入框已有未发送内容` | GotMsg 为保护原手机草稿而停止;清空草稿后用新通知重试 |
| `原手机未确认回复` | 检查原手机网络、后台限制、通知使用权以及 GotMsg 是否仍在运行 |
## 安全说明
- 每个已创建的回复会话使用独立的 256 位随机回复令牌。令牌位于 URL fragment 中,不会随首次页面请求进入服务器访问日志。
- GotMsg 安装时生成独立设备 ID 和密钥;原手机与中继 API 之间的注册、拉取和确认请求均需设备鉴权。
- 中继只持久化设备密钥和回复令牌的 SHA-256 哈希。提交后的回复正文会短暂保存,处理完成后最多保留约 24 小时,用于状态查询和故障排查。
- 拿到有效回复链接的人可在有效期内提交一次回复,因此不要转发或公开该链接。
- 无障碍和 Shizuku 都是高权限能力,只应在你信任、由你控制的原 Android 手机上启用。
- 回复服务固定使用 `https://r.gotmsg.pp.ua`。自行部署或更换域名时,需要同步修改 `ReplyFeature.RELAY_BASE_URL` 并重新构建 APK。
Binary file not shown.

After

Width:  |  Height:  |  Size: 521 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 KiB

After

Width:  |  Height:  |  Size: 562 KiB