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:
@@ -1,51 +1,7 @@
|
||||
# iOS 快捷指令 A2iReply — 自由输入回复
|
||||
# A2iReply 快捷指令迁移说明
|
||||
|
||||
a2i 转发的通知在 iPhone 上**长按**出「回复」按钮后,会触发本快捷指令:弹出输入框让你打字,再把回复 POST 回 a2i 的反向 reply topic,a2i 收到后用 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)。
|
||||
|
||||
@@ -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 通知读取权限。
|
||||
Reference in New Issue
Block a user