docs: 同步 README/docs(移除闭源声明 + 回复功能说明)

将公开仓库文档同步到最新:
- README 移除闭源声明引用块
- README 第四章更新为 Bark/ntfy 远程回复 + 无障碍兼容回复
- 新增 docs/notification-reply.md

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 13:43:22 +08:00
parent f08696a793
commit 2988069bcd
3 changed files with 56 additions and 55 deletions
+9 -7
View File
@@ -1,7 +1,5 @@
# GotMsg ·有消息
> **闭源声明**:GotMsg 为闭源软件,源码不公开。本仓库仅作为**发布页**,提供 README 文档与 Release APK 下载。License: All Rights Reserved。
把安卓手机上的通知(短信、验证码、电话、微信、QQ、Telegram)实时转发到 iOS / Android / 鸿蒙等接收端。
适用于把安卓备机的消息同步到 iPhone 或其他安卓 / 鸿蒙手机,不漏验证码、不漏重要聊天。
@@ -51,7 +49,7 @@
- **Device Key**Bark 地址中 `/` 后面的那段
4. 保存后点「发送」测试;iPhone 收到「GotMsg 测试」即成功。
**为什么推荐 Bark**iOS 上点击 Bark 通知可一键跳转到微信、QQ、Telegram 对应 AppiOS 14+ 通知体验最自然;Bark 服务器在中国大陆可直接访问。
**为什么推荐 Bark**iOS 上点击 Bark 通知体验最自然;通知会附带 GotMsg 回复链接,点击可打开回复页;Bark 服务器在中国大陆可直接访问。
### 2.2 ntfyAndroid / iOS / 网页)
@@ -163,13 +161,17 @@ Meow 是鸿蒙客户端,服务端一般用 Meow 自带的。GotMsg 端无需
---
## 四、ntfy 通知回复(iPhone 自由输入回复
## 四、通知远程回复(Bark / ntfy
v1.10.2 起,ntfy 转发通知支持在 iPhone 上**长按 ->「回复」-> 用 iOS 快捷指令自由输入文字 -> 自动回复回原 App**(短信/微信等带通知快捷回复的 App)
v1.11.0 起,Bark 和 ntfy 转发通知会附带回复入口。接收端在 iPhone 或 Android 上打开回复页并输入内容后,会经 GotMsg 回复中继送回原 Android 手机。GotMsg 优先使用原通知的 Android `RemoteInput` 快捷回复能力
配置步骤见 [docs/A2iReply-shortcut.md](docs/A2iReply-shortcut.md)
v1.12.0 起,可在 GotMsg「设置 -> 通知回复」中开启无障碍兼容回复。微信、QQ 等没有提供 `RemoteInput` 时,原 Android 手机会打开通知对应的聊天页面,填写回复并点击明确的发送按钮。该模式需要原手机已解锁,并在系统设置中手动开启「GotMsg 兼容回复」无障碍服务
> 依赖通知带 RemoteInput reply action(短信/微信/QQ/Telegram 多支持);验证码等无需回复的通知不挂回复按钮。公共 ntfy.sh 上 reply topic 明文,建议自建 ntfy + token
Bark:通知点击目标会优先变成回复页,正文也会附带回复链接;普通消息不会再跳微信/QQ等原 App。ntfy:通知会带点击目标、动作按钮和正文里的回复链接;如果 iOS 点通知本体只进入 ntfy App,请点消息正文中的回复链接或通知动作
使用方法与限制见 [docs/notification-reply.md](docs/notification-reply.md)。接收端不需要安装 iOS 快捷指令,也不需要订阅额外的 `_reply` topic。
> 链接 10 分钟内有效。原生快捷回复可在后台执行;无障碍兼容回复会亮屏并打开原 App,只适用于能从通知进入具体聊天且页面存在可识别输入框和发送按钮的消息。付款、订单、营销等非聊天通知不能回复。
---
+4 -48
View File
@@ -1,51 +1,7 @@
# iOS 快捷指令 A2iReply — 自由输入回复
# A2iReply 快捷指令迁移说明
a2i 转发的通知在 iPhone 上**长按**出「回复」按钮后,会触发本快捷指令:弹出输入框让你打字,再把回复 POST 回 a2i 的反向 reply topica2i 收到后用 RemoteInput 回复原 App(短信/微信等)
v1.11.0 已移除旧的 iOS 快捷指令和 ntfy `_reply` topic 方案。请删除原有的 `A2iReply` 快捷指令;GotMsg 不再订阅或使用 `_reply` topic
## 一次性配置
新版本会在可回复的 ntfy 通知中直接附加一次性网页链接。iPhone 和 Android 都可点开网页输入回复,不需要额外配置。
### 1. 记下 ntfy 配置
在 a2i「设置 → ntfy」记下一个已启用的 ntfy 配置:
- `server`:如 `https://ntfy.sh` 或自建 `https://ntfy.songer.eu.org`
- `topic`:如 `mytopic`
- `token`:若有鉴权则记下(自建 ntfy 常需要)
**反向 reply topic = `topic` + `_reply`**,例如 `mytopic_reply`。a2i 自动订阅这个派生 topic,快捷指令也往这里 POST。
### 2. iPhone 装 ntfy app
App Store 装 ntfy,订阅同 `mytopic`(用于收 a2i 转发的通知)。
### 3. 录制快捷指令 A2iReply
打开「快捷指令」app → 新建快捷指令,**命名为 `A2iReply`**(必须恰好此名,大小写一致)。
添加以下动作:
1. **要求输入**Ask for Input
- 类型:文本
- 提示:`输入回复内容`
- 把输出命名为「回复内容」
2. **获取 URL 内容**Get Contents of URL
- URL`https://<server>/<topic>_reply`,例如 `https://ntfy.sh/mytopic_reply`
- 展开「显示更多」
- 方法:`POST`
- 请求头(若 ntfy 有 token 才加):
- `Authorization` = `Bearer <你的token>`
- 请求体:选 `JSON`,添加字段:
- `message` = 「回复内容」(第 1 步的输出)
- `title` = 「快捷指令输入」(Shortcut Input,即通知按钮 URL 传入的 `msgId=xxx`
### 4. 允许运行
首次从通知触发可能需在「设置 → 快捷指令」允许「允许运行」/信任不受信任的快捷指令。
## 验证
1. 让 a2i 收一条短信(另一台手机发来)。
2. iPhone 收到 ntfy 通知 → 长按 → 点「回复」→ 快捷指令弹出 → 输入文字 → 自动发送。
3. 安卓端:a2i 收到回复 → 短信 App 自动回复该消息。
4. a2i「日志」页可见 `回复` 类型的 sent/failed 记录。
## 注意
- **公共 ntfy.sh 隐私**reply topic 明文,任何人可读。生产建议自建 ntfy + token 鉴权。
- `title` 字段必须设为「快捷指令输入」(含 `msgId=` 前缀),a2i 靠它匹配原通知;删掉或改写会导致回复无法路由。
- 若原通知已被划掉/超 10 分钟,a2i 日志会记 `回复失败/原通知已失效`,属正常。
- 快捷指令名必须是 `A2iReply`,否则 a2i 通知按钮的 `shortcuts://run-shortcut?name=A2iReply` 触发不到。
完整说明见 [notification-reply.md](notification-reply.md)。
+43
View File
@@ -0,0 +1,43 @@
# 通知远程回复
GotMsg v1.11.0 起支持从 iPhone 或另一台 Android 设备打开 Bark / ntfy 通知里的回复链接。回复会回到运行 GotMsg 的原 Android 手机。v1.12.0 起,除了原生通知快捷回复,还可选择使用无障碍兼容回复处理微信、QQ 等没有提供系统回复动作的聊天通知。
## 使用方法
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 的「日志」页会记录结果。
接收端无需安装 iOS 快捷指令,也无需创建或订阅 `_reply` topic。现有 ntfy server、topic 和 token 配置不需要改动。
## 生效条件
- 原生模式要求原 App 在该条通知上提供允许自由文本的 Android `RemoteInput` 动作,可以在后台完成。
- 无障碍兼容模式会使用通知的会话入口打开原 App,只对白名单中的微信、QQ、支付宝、淘宝、钉钉生效。页面必须是聊天页,并存在可识别的输入框和明确的「发送」按钮。
- 无障碍兼容模式要求原手机已解锁;执行时会亮屏、切换到对应 App。输入框已有草稿时会停止,不会覆盖草稿。
- 付款、订单、验证码、营销和系统通知通常没有聊天输入框,即使带回复链接也不能发送回复。
- 原通知不能被划掉或被新通知替换;进程未重启时 GotMsg 会短暂缓存通知入口,降低通知更新导致的失败概率。
- 回复链接从通知转发起 10 分钟内有效,并且只能成功提交一次。
- 原 Android 手机必须联网,GotMsg 进程和通知监听服务需要正常工作。
- 某些 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 设置中开启无障碍兼容回复服务`:应用内开关已打开,但系统无障碍权限尚未开启。
- `原手机需解锁后才能回复`:解锁原手机后,重新从一条新通知发起回复。
- `未找到聊天输入框` / `未找到明确的发送按钮`:通知没有进入可回复聊天页,或原 App 当前版本的界面需要重新适配。
- `聊天输入框已有未发送内容`:GotMsg 为避免覆盖原手机草稿而主动停止。
- `原手机未确认回复`:中继未在超时时间内收到原手机处理结果,检查原手机网络、后台限制和 GotMsg 通知读取权限。