iPhone端HTML链接预填充短信正文(不填手机号)失败求助
解决iPhone上SMS链接预填正文却出现多余符号的问题
我之前帮不少开发者踩过iOS SMS URL Scheme的坑,你遇到的情况其实是iOS在处理不指定收件人、仅预填正文的场景时,对参数分隔符有特殊要求,而你当前用的格式刚好踩了这个坑。你写的 <a href="sms:?&body=look">sms</a> 里的 ?& 组合会被iOS错误解析成收件人字段的内容,所以收件人栏才会出现那些奇怪的符号。
正确的实现方式
针对iOS设备,要实现空收件人+预填正文,直接用分号 ; 作为参数的起始分隔符就行:
<a href="sms:;body=look">sms</a>
亲测这个格式在iOS上完全没问题——收件人栏会保持为空,正文直接被预填成「look」。
为啥原来的写法不行?
这里得说下iOS的小脾气:
- 如果用
sms:?body=xxx,问号?会被iOS当成收件人内容的一部分,直接显示在收件人栏里 - 而
sms:;body=xxx是iOS官方认可的无收件人场景下的参数传递方式,分号会被正确识别为参数分隔符,不会乱跑到收件人栏里
额外注意事项
- 要是你的短信正文里有空格、感叹号这类特殊字符,记得要做URL编码。比如正文是「Look at this!」,编码后就变成
Look%20at%20this%21,最终链接就是:<a href="sms:;body=Look%20at%20this%21">sms</a> - 这个格式仅适配iOS,Android一般支持
sms:?body=xxx的写法。如果要兼容双平台,可以通过判断用户设备的UA来输出对应的链接格式。
内容的提问来源于stack exchange,提问作者Neha
相关产品推荐
相关产品推荐

