一句话回答: 短信验证码自动填充,是让手机读取收到的验证码、在键盘上方给出建议(或自动填入)的功能,省得你切来切去记数字。iOS 靠系统启发式识别加
code字段提示实现;安卓用 SMS Retriever / 自动填充 API 配合一段特殊哈希。它只有在短信格式正确、且验证码留在本机时才生效,识别过程本地完成、保护隐私。

键盘上方弹出的那句「来自”信息”:123456」看着像魔法,其实有明确规则。搞懂它,就能解释为什么自动填充有时失灵——以及为什么你在独立的在线号码上收码时它从不出现。
一、iOS 上自动填充怎么工作
苹果键盘会扫描最近的短信,找出像一次性验证码的内容,在满足以下条件时以 QuickType 建议呈现:
- 输入框被标记为
oneTimeCode内容类型(网页上是autocomplete="one-time-code")。 - 短信里明显含有验证码,最好带一行绑定域名的信息,如
@example.com #123456。 - 短信是近期在同一台设备上收到的。
匹配发生在手机本机——验证码不会上传给苹果。
二、安卓上自动填充怎么工作
安卓给开发者两条主要路径:
- SMS Retriever API:App 无需任何短信权限就能收到验证码。短信末尾必须带一段 11 位的 App 哈希,用来标识目标 App。
- 自动填充 / 短信用户授权 API:用户点一次「允许」提示,验证码随后被填入。
网页端的等价物,是 Chrome 用的同一个 one-time-code 自动填充提示。
三、为什么短信格式很关键
| 要求 | iOS | 安卓(Retriever) |
|---|---|---|
| 短信含验证码 | 需要 | 需要 |
| App/域名绑定 | 建议 @域名 #验证码 | 需要 11 位 App 哈希 |
| 同设备接收 | 需要 | 需要 |
| 转发/中继短信可用 | 通常否 | 否 |
这就是为什么通过网页面板或转发号码收到的验证码,自动填充往往不灵——短信根本没落进与该输入框绑定的手机「信息」App 里。
四、自动填充、安全与隐私
自动填充是便利层,不是安全升级。验证码仍是可能被钓鱼或截获的共享秘密,所以:
- 域名绑定(
@example.com)有帮助,因为 iOS 只会在匹配的站点建议该码——算一点点反钓鱼收益。 - 想要更强保护,优先用能彻底抗截获的方式,比如通行密钥优于短信 OTP。
- 自动填充绝不会把你的验证码交给系统厂商;匹配是本地完成的。
如果自动填充失败,你随时可以手动复制验证码——技巧见如何提高到码率。
常见问题
Q:为什么我用在线接收号码时验证码不自动填充? 因为短信到达的是网页面板,而不是与输入框绑定的手机「信息」App,所以系统的启发式识别不会触发。
Q:自动填充安全吗? 匹配在本机完成、不会分享给苹果或谷歌,但底层验证码本身的安全性和任何短信 OTP 一样——见OTP 是什么。
Q:为什么 iOS 只是有时候才建议验证码? 它需要一条近期、格式清晰的验证码短信;措辞含糊或短信太旧都会让建议不出现。
小结
短信验证码自动填充是一个定义清晰、在本机完成的便利功能:iOS 对近期验证码做模式匹配,安卓用哈希和授权提示。在绑定域名时它能省时间、并带一点反钓鱼收益,但它不是安全功能——而且当验证码落到你手机自带收件箱以外的地方时,它根本无法工作。