注册页上线第一天,有用户说收不到验证码。你在本地没法判断是接口没发出去、模板被拦,还是手机装了拦截软件。想找个免费短信测试站先确认格式,结果搜到一堆接码平台。

先分清要测哪一环:调用是否成功看接口返回的 Code 和 RequestId,通道是否可达只能靠真实号码,内容是否被拦看运营商侧的回执。这三件事用的工具完全不同。

免费接码站能验证什么

receive-smss.com、smsreceivefree.com 这类站点挂着一批公开的境外号码,页面上滚动显示收到的短信,不用注册。拿它发一条验证码,能确认模板有没有乱码、长短信怎么拆分、签名是否被替换。但号码是所有人可见的,别拿来注册有资产的账号;国内 App 基本屏蔽这些虚拟号段,也证明不了国内通道可达。

先算清一条短信扣几段

内容走 GSM-7 编码时单条 160 字符,中文走 UCS-2,单条只有 70 字,超长会拆成多段并额外占 6 字节头,实际每段 67 字。一条 100 字的通知就是两段,计费按段走。验证码模板压到 70 字以内最省。云厂商控制台里的测试专用签名通常只能发给账号绑定的手机号,量很少,够联调不够压测。

本地不花钱的替代法

Android 模拟器可以直接注入短信,命令行 adb emu sms send 10086 hello,App 里立刻能收到,用来测验证码自动填充和广播接收最合适。后端把发送逻辑抽成接口,开发环境换成打印日志的实现,既快又不会误发。

真收不到时按这个顺序查

  • 接口返回:Code 不是 OK,先看模板 ID、签名、手机号格式
  • 回执状态:控制台按 RequestId 查,显示成功但没收到多半是手机侧拦截
  • 号段限制:物联网卡、虚拟运营商号段常被通道拒收
  • 手机设置:短信中心号码、双卡默认卡、拦截规则,逐项排

免费站省的是联调阶段那几毛钱,替代不了真机验证。上线前用自己的号码把完整链路走一遍,顺便看看短信在锁屏上显示成什么样。