iPhone 有短信 API 吗?在 iOS 上获取短信
作者:Fwrd · · 更新于
没有,iPhone 没有公开的短信 API:iOS 不允许 App 读取你的短信,甚至不让它知道有短信到达。受支持的途径是你在 Apple “快捷指令”里一次性创建的“信息”自动化,它会把每条匹配的短信交给一个操作。Fwrd 就是面向开发者的这个操作:它把每条短信从 iPhone 以 JSON 格式发布到你自己的 HTTPS Webhook。
你需要: 一部运行 iOS 26 或更高版本的 iPhone、“快捷指令”App(手机里本来就有),以及一个接受 JSON POST 的 HTTPS 端点,例如你自己的服务器,或 Zapier、Make、n8n 的 Webhook。
iOS 应用能读取短信吗?
不能。第三方 iOS 应用无法读取“信息”收件箱,短信到达时也不会收到通知。从 iPhone 里取出短信的每一种办法,都要经过用户有意设置的某样东西。
Apple 开发者论坛 2017 年的一条回复说得很直白:App 不被允许看到短信,甚至不能知道短信已经到达。2025 年 10 月,一位 Apple 工程师在论坛上表示,macOS 也没有读取用户短信的 API,所以登录了你 Apple 账户的 Mac 并不是后门。
TelephonyMessagingKit 呢?
TelephonyMessagingKit 确实存在,但它只面向取代“信息”、成为默认运营商信息 App 的应用,而且仅限欧盟。它不是普通 App 读取你短信的方法。
Apple 的文档说这个框架处理 iPhone 上的 SMS、MMS 和 RCS,但 App 需要特殊的授权,只有在用户把它选为默认运营商信息 App 之后才能工作,而且用户需要有欧盟的账户、设备也要在欧盟。对于要把短信送进脚本、数据库或 AI 代理的场景,它不是合适的工具。
那么 App 是怎么填入短信验证码的?
靠的是“自动填充”,而不是读取信息。iOS 会识别收到的短信里的一次性验证码,并在键盘上方提供它;只有用户轻点之后,App 才会收到这个验证码。
Apple 关于在文本输入视图中启用“密码自动填充”的指南,把“One-time code”列为一种内容类型,并说你可以为短信登录流程自动补全安全码。在 UIKit 中,这就是 textContentType = .oneTimeCode。要让你自己 App 的登录更顺畅,这样就够了。
如何把 iPhone 短信送进你自己的代码?
创建一个“快捷指令”“信息”自动化,并添加 Fwrd 的操作,它会把每条匹配的短信从 iPhone 以 JSON 格式发布到你的端点。Apple 的“信息”触发条件会在收到你添加的发件人发来的信息,或含有你添加的短语的信息时运行。
下面的步骤使用 Fwrd 的 Webhook 目标:
在 Fwrd 中添加 Webhook。 打开 Fwrd,轻点 +,选取 Webhook。把你完整的 HTTPS 地址粘贴到“配置”栏,轻点“发送测试信息”让你的端点收到这些字段,然后保存。
创建“信息”自动化。 在 iOS 27 上,打开“快捷指令”,轻点“资料库”,再轻点“自动化”,然后轻点 +。如果看到“描述快捷指令”,请轻点“编辑”。轻点“自动化”,再轻点“信息”。在 iOS 26 上,打开“自动化”标签页,轻点 +,然后选取“信息”。
选择发送哪些短信。 选取“信息包含”(在 iOS 27 上,将“发件人”改为“信息”),然后键入你的短信里会出现的词,例如 code。或者键入一个空格,发送任何含空格的短信。
让它不经询问直接运行。 在 iOS 27 上,轻点触发条件旁边的箭头,检查“运行前确认”是否已关闭。在 ⓘ 下的“隐私”中,检查“锁定时允许运行”是否已打开。在 iOS 26 上,选取“立即运行”,然后轻点“下一步”和“创建新快捷指令”。
添加 Fwrd 的操作。 搜索“转发”,添加 Fwrd 的“转发信息到所有目标”。轻点它的“信息”栏,选取“输入快捷指令的信息”(在 iOS 26 上,依次选取“输入快捷指令的信息”和“信息”)。轻点返回以保存(在 iOS 26 上轻点“完成”)。
这就完成了。 含有你设定的词的新短信现在会自动到达你的端点,无论 iPhone 是否锁屏。
JSON 是什么样子?
Fwrd 把每条短信作为 POST 发送到你的 Webhook,请求头为 Content-Type: application/json。默认情况下,正文把信息原样放了两次,因为 Mattermost 和 Rocket.Chat 读取的是 text:
{
"content": "Your code is 482913",
"text": "Your code is 482913"
}
其中没有时间戳。如果你在 Fwrd 的“设置”中打开“附上发件人”,并在“快捷指令”里 Fwrd 的操作上选取“发件人”,正文还会多出一个 sender 字段。同一条短信的每次尝试都带有相同的 Idempotency-Key 请求头,所以你可以丢弃重复的请求。15 秒内返回任何 2xx 响应都算作已送达,重定向会被拒绝。Webhook 指南完整介绍了端点这一侧。
各种方案对比
| 方式 | 能读取收到的短信吗? | 谁能使用 |
|---|---|---|
| 公开的短信 API | iOS 上不存在 | 没有人 |
| TelephonyMessagingKit | 能,作为默认信息 App | 运营商信息 App,仅限欧盟 |
| 密码自动填充 | 只能读到验证码,且要用户轻点 | 任何 App 的登录栏 |
| “快捷指令” + Fwrd | 能,读取符合你的自动化的短信 | 任何运行 iOS 26 或更高版本的人 |
Fwrd 替你处理这些繁琐的部分:
- 无需账户。 Fwrd 没有登录,也没有 Fwrd 服务器;每条短信直接从你的 iPhone 发送到你的 URL。
- 筛选条件。 每个 Webhook 都可以只保留含有你指定词语的短信、看起来像验证码的短信,或在特定时段到达的短信。
- 重试和密钥都已处理。 如果发送超时、遇到 429 或 5xx,或者连接中断,Fwrd 会再试,最多两次,并把你的 URL 保存在 iPhone 的钥匙串里,而不是存在“快捷指令”中。
- 八个目标。 同一个操作还能覆盖电子邮件、另一部手机或 iMessage、WhatsApp、Discord、Slack、Microsoft Teams 和 Telegram。
iPhone 不能充当短信网关的原因
iPhone 不能充当你服务器的短信网关。iOS 没有让服务器通过它发送短信的 API,所以 Fwrd 只负责接收:短信在 iPhone 上到达,再发送到你的端点。
- 从 API 发送。 能通过 API 发送短信的网关 App 运行在安卓上;textbee.dev 在它的常见问题中说,它目前只支持安卓设备(2026 年 10 月 16 日查看)。
- 必须有规则。 自动化只处理含有你选定的词的短信,或来自你“联系人”里的人的短信。一个空格能匹配任何含空格的短信。
- 手机保持开机并联网。 接收短信的 iPhone 在短信到达时必须开机,并有 Wi-Fi 或蜂窝数据。重新启动后,要等你解锁一次,转发才会继续。
- 只有文字。 图片不会传过去,回复仍然要从 iPhone 本身发出。
常见问题
我能读取 iPhone 上已有的旧短信吗?
不能。“信息”自动化只对你设置之后到达的新短信运行。
它能和 Zapier、Make 或 n8n 一起用吗?
能。把 Zapier 的 catch hook、Make 的自定义 Webhook,或 n8n 的 Webhook 节点的 Production URL,粘贴到 Fwrd 的 Webhook 目标里,每条匹配的短信都会启动你的工作流。把 iPhone 短信发送到 Zapier、Make 或 n8n介绍了每一种的步骤。
iMessage 也算吗?
算。“信息”自动化会对到达“信息”App 的信息运行,包括 iMessage 信息,所以匹配的 iMessage 信息会和 SMS 一样到达你的 Webhook。
要花多少钱?
Fwrd 每月有 15 条免费转发,同一条短信无论转发到几个地方,都只算一次。Fwrd Pro 可取消限制,在美国售价为每月 $4.99 或每年 $29.99。
想把 iPhone 短信变成 JSON?
Fwrd 会把每条匹配的 iPhone 短信发布到你自己的 HTTPS Webhook,没有账户,中间也没有 Fwrd 服务器。每月有 15 条免费转发。
每月 15 条免费转发。Fwrd Pro 取消转发和筛选条件的上限,并增加“永不转发”列表,每月 $4.99 或每年 $29.99,符合条件的客户在年度订阅上可享 7 天免费试用。
iPhone · iOS 26 或更高版本