docs: rewrite beginner setup guide
This commit is contained in:
+81
-30
@@ -1,43 +1,94 @@
|
||||
# 通知远程回复
|
||||
|
||||
GotMsg v1.11.0 起支持从 iPhone 或另一台 Android 设备打开 Bark / ntfy 通知里的回复链接。回复会回到运行 GotMsg 的原 Android 手机。v1.12.0 起,除了原生通知快捷回复,还可选择使用无障碍兼容回复处理微信、QQ 等没有提供系统回复动作的聊天通知。
|
||||
GotMsg 可以从 Bark / ntfy 通知打开一次性回复网页,把回复送回运行 GotMsg 的原 Android 手机。系统会优先使用通知自带的 Android `RemoteInput`;QQ 等应用可使用无障碍兼容回复,微信使用 Shizuku 回复。
|
||||
|
||||
> 远程回复不是模拟登录,也不会接管微信或 QQ 账号。能否成功取决于原通知是否仍然存在、原手机是否在线,以及目标应用当前界面是否可识别。
|
||||
|
||||
## 开始前准备
|
||||
|
||||
1. 在原 Android 手机上安装 GotMsg,并授权“通知使用权”。
|
||||
2. 至少启用一个 Bark 或 ntfy 转发配置;邮件和短信通道不提供回复入口。
|
||||
3. 关闭针对 GotMsg 的省电限制,允许后台运行和自启动。
|
||||
4. 根据要回复的应用完成下面的额外配置:
|
||||
- 通知本身带快捷回复:无需额外配置。
|
||||
- QQ、支付宝、淘宝、钉钉:打开 GotMsg“设置 → 通知回复 → 无障碍兼容回复”,并在系统无障碍设置中启用“GotMsg 兼容回复”。
|
||||
- 微信:安装并启动 [Shizuku](https://shizuku.rikka.app/download/),授权 GotMsg。微信实际回复走 Shizuku,不依赖系统无障碍服务。
|
||||
|
||||
## 使用方法
|
||||
|
||||
1. 在原 Android 手机的 GotMsg 中启用至少一个 Bark 或 ntfy 配置。
|
||||
2. 保持 GotMsg 的通知读取权限,并让原手机联网。
|
||||
3. 如需回复没有系统快捷回复入口的微信、QQ 等通知,在 GotMsg「设置 -> 通知回复」中开启「无障碍兼容回复」,再到系统无障碍设置中开启「GotMsg 兼容回复」。
|
||||
4. 每条 Bark / ntfy 转发通知都会带回复入口。Bark 接收端直接点通知即可打开回复页,通知正文也会附带回复链接;普通消息不会再跳微信/QQ等原 App。ntfy 接收端可点通知、通知动作或正文中的回复链接;如果 iOS 点通知本体只进入 ntfy App,请点消息正文里的回复链接。
|
||||
5. 网页提交后,原 Android 手机先尝试原通知的 `RemoteInput`;没有该动作时才使用已启用的无障碍兼容回复。GotMsg 的「日志」页会记录结果。
|
||||
1. 原手机收到通知后,GotMsg 将它转发到 Bark / ntfy。
|
||||
2. 在接收手机上点击 Bark 通知,或点击 ntfy 通知及其“回复”动作。
|
||||
3. 网页会显示应用名、通知标题和正文;输入内容并提交。
|
||||
4. 原手机拉取任务并执行回复,网页等待最终结果;GotMsg“日志”页也会记录结果。
|
||||
|
||||
接收端无需安装 iOS 快捷指令,也无需创建或订阅 `_reply` topic。现有 ntfy server、topic 和 token 配置不需要改动。
|
||||
回复入口只作为通知的点击地址或动作地址,不会在通知正文中重复显示。接收端不需要 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 分钟内有效,并且只能成功提交一次。
|
||||
- 原通知不能被划掉或被新通知替换;进程未重启时 GotMsg 会短暂缓存通知入口,降低通知更新导致的失败概率。
|
||||
- 原 Android 手机必须联网,GotMsg 进程和通知监听服务需要正常工作。
|
||||
- 某些 App 或定制系统不会向无障碍服务暴露聊天控件;这种情况下网页会显示具体失败原因。
|
||||
|
||||
## 安全说明
|
||||
|
||||
- 每条通知使用独立的 256 位随机回复令牌。令牌放在 URL fragment 中,不会随首次页面请求进入服务器访问日志。
|
||||
- GotMsg 安装时生成独立设备 ID 和密钥;原手机与中继 API 之间的注册、拉取和确认请求均需设备鉴权。
|
||||
- 中继只持久化设备密钥和回复令牌的 SHA-256 哈希。提交后的回复正文会在中继中短暂保存,处理完成后最多保留 24 小时用于状态查询和故障排查。
|
||||
- 拿到有效回复链接的人可在有效期内提交一次回复,因此不要转发或公开该链接。
|
||||
- 无障碍兼容回复仅在收到有效的一次性回复事件时运行,严格校验目标包名,并且只点击文字明确匹配「发送」的控件。该权限能够读取当前窗口内容,只应在你信任的原 Android 手机上启用。
|
||||
- 回复服务使用 `https://r.gotmsg.pp.ua`,不可在 App 设置中修改。部署或域名变更时需同步修改 `ReplyFeature.RELAY_BASE_URL` 并重新发布 APK。
|
||||
- 付款、订单、验证码、营销和系统通知通常没有聊天输入框,即使生成回复入口也可能不支持回复。
|
||||
- 兼容回复要求通知点击后真正进入对应聊天页;联系人页、登录页、广告页等不会被当作聊天页。
|
||||
- 某些 App 或定制系统不会向无障碍服务暴露聊天控件;界面更新后也可能需要重新适配。
|
||||
|
||||
## 常见失败
|
||||
|
||||
- `回复链接已过期`:通知转发已超过 10 分钟。
|
||||
- `原通知已消失`:原 Android 手机上的通知已被清除或替换。
|
||||
- `请在 GotMsg 设置中开启无障碍兼容回复服务`:应用内开关已打开,但系统无障碍权限尚未开启。
|
||||
- `原手机需解锁后才能回复`:解锁原手机后,重新从一条新通知发起回复。
|
||||
- `未找到聊天输入框` / `未找到明确的发送按钮`:通知没有进入可回复聊天页,或原 App 当前版本的界面需要重新适配。
|
||||
- `聊天输入框已有未发送内容`:GotMsg 为避免覆盖原手机草稿而主动停止。
|
||||
- `原手机未确认回复`:中继未在超时时间内收到原手机处理结果,检查原手机网络、后台限制和 GotMsg 通知读取权限。
|
||||
| 提示 | 处理方法 |
|
||||
| --- | --- |
|
||||
| `回复链接已过期` | 链接有效期为 10 分钟,等待一条新通知再试 |
|
||||
| `原通知已消失` | 原通知已被清除或替换,等待新通知后再回复 |
|
||||
| `请在 GotMsg 设置中开启无障碍兼容回复服务` | 同时检查应用内开关和系统“GotMsg 兼容回复”无障碍权限 |
|
||||
| `Shizuku 未就绪` / `Shizuku 未授权` | 打开 Shizuku 重新启动服务,并授权 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。
|
||||
|
||||
Reference in New Issue
Block a user