Files
gotmsg/docs/notification-reply.md
T

6.9 KiB

通知远程回复

GotMsg 可以从 Bark / ntfy 通知打开一次性回复网页,把回复送回运行 GotMsg 的原 Android 手机。系统会优先使用通知自带的 Android RemoteInput;QQ 等应用可使用无障碍兼容回复,微信使用 Shizuku 回复。

远程回复不是模拟登录,也不会接管微信或 QQ 账号。能否成功取决于原通知是否仍然存在、原手机是否在线,以及目标应用当前界面是否可识别。

开始前准备

  1. 在原 Android 手机上安装 GotMsg,并授权“通知使用权”。
  2. 至少启用一个 Bark 或 ntfy 转发配置;邮件和短信通道不提供回复入口。
  3. 关闭针对 GotMsg 的省电限制,允许后台运行和自启动。
  4. 根据要回复的应用完成下面的额外配置:
    • 通知本身带快捷回复:无需额外配置。
    • QQ、支付宝、淘宝、钉钉:打开 GotMsg“设置 → 通知回复 → 无障碍兼容回复”,并在系统无障碍设置中启用“GotMsg 兼容回复”。
    • 微信:安装并启动 Shizuku,授权 GotMsg。微信实际回复走 Shizuku,不依赖系统无障碍服务。

使用方法

  1. 原手机收到通知后,GotMsg 将它转发到 Bark / ntfy。
  2. 在接收手机上点击 Bark 通知,或点击 ntfy 通知及其“回复”动作。
  3. 网页会显示应用名、通知标题和正文;输入内容并提交。
  4. 原手机拉取任务并执行回复,网页等待最终结果;GotMsg“日志”页也会记录结果。

回复入口只作为通知的点击地址或动作地址,不会在通知正文中重复显示。接收端不需要 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 或定制系统不会向无障碍服务暴露聊天控件;界面更新后也可能需要重新适配。

常见失败

提示 处理方法
回复链接已过期 链接有效期为 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。