近来一同事找我寻求帮助,大致意思是调用href的
sms
会报错,因此特地查询了一些资料,对发送消息的特殊链接重新学习了一下。
SMS定义
SMS(Short Message Service)即短消息服务,说到SMS就不得不提一下 全球移动通信标准(GSM),SMS是GSM标准的一项重要网络技术。目前广泛使用在移动设备上,就是我们所熟知的短信、彩信。
在以前短信恋爱的时代(一个月短信费都得几十),我们总能把短信当做文章编辑,可不管你编辑多少,总会神奇的发现,一条短信被分割成多条发送了。其实这可不是运营商决定的,而是由于每条短信最多只能传输140个八进制字符,即70个中文汉字。
WEB中的SMS
我们在移动开发中应该会偶尔碰到调用移动设备拨号系统的写法:
<a href="tel: 14035550185">拨号</a>
复制代码
发送短信 tel
一样,基本的链接格式如下:
<a href="sms:">Send a SMS</a>
复制代码
在 rfc5724
方案中定义了短消息的格式 sms-uri = scheme ":" sms-hier-part [ "?" sms-fields ]
,其中 scheme = “sms”,sms-hier-part
即手机号码,多个手机号可以用 “,” 分隔,sms-fields
即要发送的消息内容,手机号与内容之间用 “?” 分隔,短消息内容格式为 body = hello%20world!
。这里要注意的是body 要求只能有一个,“=” 后的实体内容必须是encode编码后的内容。按照规范,我们在移动设备中,想要调用短消息系统时,正确的做法是:
<a href="sms: +14035550185?body=I%27m%20interested%20in%20your%20product.%20Please%20contact%20me.">Send a SMS message</a>
复制代码
虽然 rfc5724
方案中是这样规定了格式,但是由于移动设备系统或硬件的差异,对于上述格式的支持程度也存在一定的差异。对于上述a标签进行实测,在Android手机测试结果如下,但是同样在iphone8的IOS14上却发现手机号与内容都在接收者一栏出现。
对于兼容性方案,还收集到一些前人的努力:
总的来说,目前移动设备对于sms的支持度还是有待提升。我们在调用sms时,还是能简单为宜:
<a href="sms: +14035550185">Send a SMS message</a>
复制代码
写在最后,顺便提一下有关超链接邮箱 mailto
的使用方法:
<a href="mailto: 01117464@wisedu.com">Send an e-mail</a>
复制代码