# 通知远程回复 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. 原手机收到通知后,GotMsg 将它转发到 Bark / ntfy。 2. 在接收手机上点击 Bark 通知,或点击 ntfy 通知及其“回复”动作。 3. 网页会显示应用名、通知标题和正文;输入内容并提交。 4. 原手机拉取任务并执行回复,网页等待最终结果;GotMsg“日志”页也会记录结果。 回复入口只作为通知的点击地址或动作地址,不会在通知正文中重复显示。短信 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。图案、字母密码和生物识别不属于该功能支持范围。 ## 生效条件与限制 - 回复链接从通知转发起 10 分钟内有效,并且只能成功提交一次。 - 原通知不能被划掉或被新通知替换;进程未重启时 GotMsg 会短暂缓存通知入口,降低通知更新导致的失败概率。 - 原 Android 手机必须联网,GotMsg 进程和通知监听服务需要正常工作。 - 短信 App 中识别出的验证码通知不生成回复入口;付款、订单、营销和系统通知通常也没有可回复的聊天输入框。 - 兼容回复要求通知点击后真正进入对应聊天页;联系人页、登录页、广告页等不会被当作聊天页。 - 某些 App 或定制系统不会向无障碍服务暴露聊天控件;界面更新后也可能需要重新适配。 ## 常见失败 | 提示 | 处理方法 | | --- | --- | | `回复链接已过期` | 链接有效期为 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。