@@ -1,10 +1,8 @@
# GotMsg ·有消息
# GotMsg · 有消息
> **闭源声明**:GotMsg 为闭源软件,源码不公开。本仓库仅作为**发布页**,提供 README 文档与 Release APK 下载。License: All Rights Reserved 。
把安卓手机上的系统通知(短信、验证码、来电、微信、QQ、Telegram、企业微信、App 推送等)实时转发到 **iPhone、iPad、其它安卓机、鸿蒙机、桌面邮箱 ** ,并在接收端直接**远程回复**原安卓手机 。
把安卓手机上的通知(短信、验证码、电话、微信、QQ、Telegram)实时转发到 iOS / Android / 鸿蒙等接收端 。
适用于把安卓备机的消息同步到 iPhone 或其他安卓 / 鸿蒙手机,不漏验证码、不漏重要聊天。
适用于把安卓备机的消息同步到主力机,不漏验证码、不漏重要聊天、不断网仍能收到关键通知 。

@@ -13,7 +11,7 @@
## 一、五分钟上手
### 1. 安装
从 [Releases ](../../releases ) 下载最新 APK,安装到安卓手机(需 Android 14 / API 34+)。
从 [Releases ](../../releases ) 下载最新 APK,安装到**需要被转发的 安卓手机** (需 Android 14 / API 34+)。Release 同时提供 universal 全架构包和 arm64-v8a / armeabi-v7a / x86 / x86_64 单架构包,App 内更新页会默认选中与你设备最匹配的版本。
### 2. 选一个推送通道
推荐三选一:
@@ -23,14 +21,15 @@
| iPhone / iPad | **Bark ** | ⭐ 最简单 |
| 安卓手机 | **ntfy ** | ⭐ 推荐开源 |
| 鸿蒙手机 | **Meow ** | 鸿蒙专属 |
| 任何能收邮件的设备 | **电邮 ** | 桌面/平板可用 |
打开 GotMsg -> 「设置」-> 选对应通道 -> 点右上角 **i ** 按钮 -> 按弹窗步骤配 -> 点该行「发送」测试。
打开 GotMsg -> 「设置」-> 选对应通道 -> 点右上角 **i ** 按钮 -> 按弹窗步骤配 -> 点该行「发送」测试。可以**同时启用多个通道**,所有勾选的会并行收到。
### 3. 授权通知监听
首页会提示「需要授权通知监听」。点击「前往系统授权」,在系统的通知访问设置中开启 GotMsg。
### 4. 开启转发
首页打开「通知转发」开关。安卓收到通知后按配置自动推送到各通道。
首页打开「通知转发」开关。安卓收到通知后按配置自动推送到各通道。**发现新版时也会自动把更新通知推给所有已启用的通道**,不用进 App 也能升级。
---
@@ -50,8 +49,9 @@
- **服务器地址**: `https://api.day.app` (自建则填自建地址)
- **Device Key**: Bark 地址中 `/` 后面的那段
4. 保存后点「发送」测试;iPhone 收到「GotMsg 测试」即成功。
5. 多台 iOS 设备:可继续添加多条 Bark 配置,每条独立勾选;列表顺序即推送顺序,可开启「首个成功即止」或全部广播。
**为什么推荐 Bark ** : iOS 上点击 Bark 通知可一键跳转到微信、QQ、Telegram 对应 App; iOS 14+ 通知体验最自然 ;Bark 服务器在中国大陆可直接访问。
**为什么推荐 Bark ** : iOS 上点击 Bark 通知体验最自然;通知附带 GotMsg 回复链接,可从 iPhone 直接回复原安卓 ;Bark 服务器在中国大陆可直接访问。
### 2.2 ntfy( Android / iOS / 网页)
@@ -69,6 +69,8 @@
4. 保存后点「发送」测试;接收端收到「GotMsg 测试」即成功。
> **安全提示**:公共 topic 谁知道名字就能订阅或发送。Topic 名**不要用**手机号、姓名、邮箱等可猜信息。
>
> **远程回复**:GotMsg 在转发聊天类通知时,会**自动给 ntfy 通知挂上「View」动作按钮和正文中的回复链接**。iOS 上点通知本体只能进 ntfy App,要回复请点动作按钮或正文里的回复链接。
### 2.3 Meow(鸿蒙 / HarmonyOS)
@@ -87,7 +89,7 @@ Meow 是鸿蒙手机的推送接收方案。GotMsg 按你填写的 Meow 接口
### 2.4 电邮转发
通过 SMTP 把通知发到邮箱(**适合无手机接收的场景**,如仅在桌面/平板查看)。
通过 SMTP 把通知发到邮箱(**适合无手机接收的场景**,如仅在桌面/平板查看)。GotMsg **直连 SMTP ** ,不依赖外部邮件服务。
**配置步骤 ** :
1. 准备一个 SMTP 邮箱(QQ/163/Gmail/Outlook 都可),**开启 SMTP 服务并生成授权码**(不是登录密码)。
@@ -95,9 +97,8 @@ Meow 是鸿蒙手机的推送接收方案。GotMsg 按你填写的 Meow 接口
- 163:设置 -> POP3/SMTP/IMAP -> 开启 SMTP -> 设置授权码
- Gmail:账户 -> 安全性 -> 两步验证 -> 应用专用密码
2. GotMsg「设置 -> 电邮转发 -> 添加」:
- **名称**:随意
- **服务器(SMTP 主机)**: `smtp.qq.com` / `smtp.163.com` / `smtp.gmail.com` 等
- **端口**: `465` (推荐,隐式 SSL) 或 `587` ( STARTTLS)
- **端口**: `465` (推荐,隐式 SSL)
- **账号**:完整邮箱地址
- **授权码 / 密码**:上一步生成的授权码
- **发件人**:通常与账号相同
@@ -114,7 +115,7 @@ Meow 是鸿蒙手机的推送接收方案。GotMsg 按你填写的 Meow 接口
1. 在 GotMsg「设置 -> 短信兜底」点「授予短信权限」(安卓系统权限)。
2. 点「添加」输入**目标手机号**(如 iPhone 号,接收端是另一台手机,**不是** GotMsg 本身)。
3. 选运营商:
- 选了「自动识别」:GotMsg 会发免费查询短信给运营商服务号,解析回执获取余量。
- 选了「自动识别」:GotMsg 会发免费查询短信给运营商服务号,解析回执获取余量。回执短信本身会被识别并拦截,不转发。
- 选了「手动额度」:在「手动短信额度」填入当前套餐短信条数,每次发短信后自动减 1。
4. 当余量 ≤ 5 时自动暂停,下次打开 App 提醒续费。
5. 频率限制:每 5 分钟最多发 1 条(避免刷屏),同一条通知 5 分钟内不重复。
@@ -123,11 +124,42 @@ Meow 是鸿蒙手机的推送接收方案。GotMsg 按你填写的 Meow 接口
---
## 三、自建推送服务(可选 )
## 三、通知远程回复(Bark / ntfy )
GotMsg v1.11.0 起,Bark 和 ntfy 转发通知会附带回复入口,接收端在 iPhone 或 Android 上打开回复页输入内容后,回复会经 **GotMsg 中继(`https://r.gotmsg.pp.ua`)送回原 Android 手机 ** 。GotMsg 优先使用原通知的 Android `RemoteInput` 快捷回复能力;微信等没有 `RemoteInput` 的 App 走无障碍兼容回复;微信 8.0.49+ 进一步屏蔽无障碍时,可启用 **Shizuku 路径**直接调用 `input` 命令绕过。
### 3.1 三种回复路径
| 路径 | 适用 | 是否需要解锁原手机 | 额外授权 |
|---|---|---|---|
| **原生 RemoteInput ** | 短信、WhatsApp、企业 IM、Telegram 等暴露系统回复动作的 App | 否(后台执行) | 无 |
| **无障碍兼容回复 ** | QQ、支付宝、淘宝、钉钉 | 是 | 「GotMsg 兼容回复」无障碍服务 |
| **Shizuku 兼容回复(仅微信) ** | 微信(绕过无障碍屏蔽) | 是 | Shizuku 已启动并授予 GotMsg 权限 |
### 3.2 启用方式
1. **Bark / ntfy 接收端 ** :无需任何额外配置。GotMsg 自动在通知正文或 ntfy 动作按钮里附上回复链接。
2. **原 Android 手机 ** :
- 默认即可使用 `RemoteInput` (无需任何操作)。
- 想在没有 `RemoteInput` 的 App 上回复,进入「设置 -> 通知回复」打开「无障碍兼容回复」,再到系统无障碍设置里启用「GotMsg 兼容回复」服务。
- 想在最新版微信上回复,启用 **Shizuku ** (在 GitHub Releases 下载并启动),GotMsg 首页会显示 Shizuku 状态卡片;点击「授权 Shizuku」即可。微信路径会自动以 Shizuku 身份模拟 `input tap` 聚焦输入框、写剪贴板、`KEYCODE_PASTE` 注入任意 Unicode,并通过截图像素扫描识别微信绿色发送按钮。
### 3.3 使用流程
- Bark:通知点击目标会优先变成回复页,正文也会附带回复链接;普通消息不会再跳微信/QQ 等原 App。
- ntfy:通知附带 View 动作按钮和正文中的回复链接;iOS 上点通知本体只进入 ntfy App,请点动作按钮或正文里的回复链接。
完整使用方法与限制见 [docs/notification-reply.md ](docs/notification-reply.md )。接收端不需要安装 iOS 快捷指令,也不需要订阅额外的 `_reply` topic(旧版方案已移除,见 [docs/A2iReply-shortcut.md ](docs/A2iReply-shortcut.md ))。
> 链接 10 分钟内有效,只能成功提交一次。原生快捷回复可在后台执行;无障碍 / Shizuku 兼容回复会亮屏并打开原 App;自动解锁仅对**无密码滑动锁**有效,密码 / PIN / 指纹锁需手动解锁一次;完成后会**自动重新锁屏**。付款、订单、营销等非聊天通知不能回复。
---
## 四、自建推送服务(可选)
所有通道都支持自建,更好、更私密、可控。
### 3 .1 自建 Bark 服务器
### 4 .1 自建 Bark 服务器
GotMsg 默认用 Bark 官方服务器(`https://api.day.app` ),免费够用。自建适合追求完全控制。
@@ -143,9 +175,9 @@ docker run -d --name bark --restart=unless-stopped \
**GotMsg 配置 ** :服务器地址填 `https://你的域名.com` (不要 `/push` 后缀),Device Key 填你在自建 Bark 上创建的 Key。
### 3 .2 自建 ntfy 服务器
### 4 .2 自建 ntfy 服务器
[ntfy ](https://ntfy.sh ) 是为自建设计的,**比 Bark 还简单**-- 官方直接提供 Docker 一行启动:
[ntfy ](https://ntfy.sh ) 是为自建设计的,**比 Bark 还简单**—— 官方直接提供 Docker 一行启动:
``` bash
docker run -d --name ntfy --restart= unless-stopped \
@@ -158,34 +190,74 @@ docker run -d --name ntfy --restart=unless-stopped \
**GotMsg 配置 ** :服务器地址填 `https://ntfy.你的域名.com` , Topic 照旧。
### 3 .3 自建 Meow 服务器
### 4 .3 自建 Meow 服务器
Meow 是鸿蒙客户端,服务端一般用 Meow 自带的。GotMsg 端无需配置服务端,只需填 Meow 给你的接口地址 + Key。
---
## 四、ntfy 通知回复(iPhone 自由输入回复)
## 五、应用内更新
v1.10.2 起,ntfy 转发的通知支持在 iPhone 上**长按 ->「回复」-> 用 iOS 快捷指令自由输入文字 -> 自动回复回原 App**(短信/微信等带通知快捷回复的 App) 。
GotMsg 内置更新检测:定期拉取 Gitea + GitHub Releases, **发现新版时自动向所有已启用通道推送一条更新通知**(带当前版本号、目标版本号、变更摘要、APK 大小)。首页显示醒目横幅,可选「立即下载」或「忽略此版本」 。
配置步骤见 [ docs/A2iReply-shortcut.md ]( docs/A2iReply-shortcut.md ) 。
下载页会**默认选中匹配你设备 ABI 的 APK**( universal / arm64-v8a / armeabi-v7a / x86_64 / x86),也可手动切换架构;下载完成后通过 `FileProvider` 调起系统安装器 。
> 依赖通知带 RemoteInput reply action(短信/微信/QQ/Telegram 多支持);验证码等无需回复的通知不挂回复按钮。公共 ntfy.sh 上 reply topic 明文,建议自建 ntfy + token 。
Gitea 源为主(国内可达),GitHub 为兜底;主源下载失败会自动尝试另一个源的同版本链接 。
> 取消自动检查:在「设置 -> 应用内更新」关闭「更新检查」即可,手动检查仍可用。
---
## 五、使用建议
## 六、来电与未接来电
MIUI / HyperOS 不向第三方监听器分发系统电话通知。GotMsg 通过 **轮询 `TelephonyManager.getCallState()` ** 绕过此限制:
- **来电**:构造「有电话进来」推送(Android 14+ 禁止第三方读取实时号码);如无障碍服务读到号码则展示真实号码。
- **未接来电**:通话结束后查系统 `CallLog` 获取号码,并通过 `ContactsContract.PhoneLookup` 反查**联系人姓名**,推送形如「张三\n138xxxx」。
需要在系统设置中授予「电话」权限(设置 -> 应用 -> GotMsg -> 权限 -> 电话)。
---
## 七、过滤与噪音控制
通知处理流水线(在 `NotificationProcessor` 中按顺序执行):
1. 全局开关
2. 持续性通知(ongoing)静默
3. VPN / 代理客户端(Surfboard、Clash Meta、Clash for Android、v2rayNG、小米设备互联)常驻通知静默
4. 米家「设备状态」泛化通知静默(门锁 / 告警等具体事件仍正常转发)
5. App 黑/白名单
6. 空内容 / 脱敏内容
7. 噪音包名(三星剪贴板 / 键盘、GMS、SystemUI、Google 输入法)
8. 系统状态消息("正在运行"等)
9. **泛化无意义通知 ** (标题「新消息」+ 正文「你有一条新消息」等占位文案)静默
10. 近空内容(纯符号 / 纯空格 / 仅 App 名)
11. 广告过滤(内置营销关键词 + 用户自定义关键词)
12. 已发短信(仅收不发)
13. 运营商余额回执拦截(解析余量后不转发)
14. 去重检查(5 秒窗口)
15. 验证码提取(关键词 + 数字 / 数字 + 关键词 / 纯数字 4–8 位)
16. 特殊 App 解析(微信 / QQ / Telegram 优化 + 重要消息关键词标记)
17. 构造 BarkMessage 并推送
验证码开启自动复制后会被复制到剪贴板;推送级别在重要消息上自动提升到 `timeSensitive` 以点亮 iOS 焦点通知。
---
## 八、使用建议
- **只想收验证码**:进入「过滤」页,开启「验证码自动提取」和「广告过滤」;再到「应用」页切到白名单模式,只勾选短信类 App。
- **想同步聊天**:保持黑名单模式(默认),在「过滤」页开启「微信 / QQ / Telegram 优化」。
- **通知没推过来**:先看「日志」页,每条通知(无论转发、过滤还是失败)都会记录原因。
- **通知没推过来**:先看「日志」页,每条通知(无论转发、过滤还是失败)都会记录原因。失败会自动加入 pending 队列,由 WorkManager 每 15 分钟重发。
- **想让通知带图标**:见下方「应用图标」一节。
- **电话通知不工作**:MIUI 不向第三方监听器分发系统电话通知,GotMsg 通过轮询 `getCallState()` 绕过此限制。需授予「电话」权限(设置 -> 应用 -> GotMsg -> 权限 -> 电话) 。
- **电话通知不工作**:MIUI 不向第三方监听器分发系统电话通知,GotMsg 通过轮询 `getCallState()` 绕过此限制。需授予「电话」权限。
- **断网收不到通知**:开启「设置 -> 短信兜底」并填好 iPhone 号码、授予短信权限。断网时验证码和来电走短信(消耗套餐额度,5 分钟限 1 条)。
- **想全平台通知**:可同时启用多个通道(勾选 每个通道的多个条目),所有启用的会同时收到。
- **想全平台通知**:可同时启用多个通道(每个通道的多个条目独立勾选 ),所有启用的会同时收到。
- **推送报 connection closed**:通常不是被墙,而是手机上的代理 / VPN 客户端干扰 Bark 服务器连接;先关代理或换自建 Bark 验证。
---
## 六 、应用图标
## 九 、应用图标
Bark 和 ntfy 的通知 `icon` 字段需要公网可访问的图片 URL。GotMsg 支持把已安装 App 的图标批量导出,方便上传到你自己的图床。
@@ -199,7 +271,26 @@ Bark 和 ntfy 的通知 `icon` 字段需要公网可访问的图片 URL。GotMsg
---
## 七、界面截图
## 十、构建与体积
Release 构建开启 **R8 + 资源压缩 ** , universal APK 约 5 MB;同时输出 ABI splits,每个架构单独的 APK 体积更小。
构建:
``` bash
export JAVA_HOME = "D:/Dev/JDK-17" ANDROID_HOME = "D:/Dev/Android/SDK"
./gradlew assembleRelease
# 产物:app/build/outputs/apk/release/app-universal-release.apk
# app/build/outputs/apk/release/app-arm64-v8a-release.apk
# app/build/outputs/apk/release/app-armeabi-v7a-release.apk
# app/build/outputs/apk/release/app-x86-release.apk
# app/build/outputs/apk/release/app-x86_64-release.apk
```
`release` 复用 `debug` 签名配置(`signingConfigs.getByName("debug")` ),适合个人发布到 GitHub / Gitea Release;正式商店上架前需替换为独立的 release keystore。
---
## 十一、界面截图
| 首页 | 应用管理 | 过滤设置 |
|---|---|---|
@@ -211,6 +302,15 @@ Bark 和 ntfy 的通知 `icon` 字段需要公网可访问的图片 URL。GotMsg
---
## 十二、隐私与安全
- GotMsg **不收集任何遥测**到第三方;本地仅记录最少必要的设备 ID / 密钥(用于回复中继鉴权,256 位随机,备份规则明确排除)。
- 回复中继 `https://r.gotmsg.pp.ua` 只持久化**设备密钥 + 回复令牌的 SHA-256 哈希**,正文 24 小时后清除;回复链接放在 URL fragment 中,不会进入服务器访问日志。
- 拿到回复链接的人可在 10 分钟有效期内提交一次回复,因此不要转发或公开该链接。
- 无障碍 / Shizuku 兼容回复仅在收到有效的一次性回复事件时运行,严格校验目标包名;Shizuku 路径只点击经像素扫描确认的微信绿色发送按钮,避免误操作。
---
## License
本项目仅供个人使用。自 v1.10.2 起闭源。