关于手机端运用sms的功能

关于sms的信息在网上真的是好难找啊,最近要求写一个短信的分享功能,你们知道的URL里面带了各种字符(如:http://ip:8080/#/share?id=xx&typ=xx),哈哈,麻烦的不是调用sms功能,而是对里面字符的各种手机的兼容;

sms的用法:(注:电话号码可以是两个以‘,’分开)

<a href="sms:电话号?body=Hello,%20world">内容?body</a> //Android
<a href="sms:电话号;body=Hello,%20world">内容;body</a> // ios8+以外
<a href="sms:电话号&body=Hello,%20world">内容&body</a> // ios8+

下面研究的是:对于sms的body里面的内容body=http://ip:8080/#/share?id=xx&typ=xx的特殊符号#?&,不同的浏览器吧,如果直接写,会有些浏览器会截取这些特殊符号以后的字符串,意思就是你的短信内容就没有这些特殊符号以后的字符啦~~~~

那不能识别,那能转换一下特殊符吧,用十六进制转咯, 转换工具

 十六进制值 
1. + URL 中+号表示空格 %2B 
2. 空格 URL中的空格可以用+号或者编码 %20 
3. / 分隔目录和子目录 %2F 
4. ? 分隔实际的 URL 和参数 %3F 
5. % 指定特殊字符 %25 
6. # 表示书签 %23 
7. & URL 中指定的参数间的分隔符 %26 
8. = URL 中指定参数的值 %3D

就写成了body=http://ip:8080/%23/share%3Fid=xx%26 typ=xx 

有人说,你何必这么麻烦呢,直接用encodeURIComponent或者encodeURI转就好了嘛。。。。我也想能,一步就省事,何必那么麻烦,关键是这个不起效果啊;

但是。。。。。。。。。

body=http://ip:8080/%23/share%3Fid=xx%26 typ=xx 这样的格式也只能在部分的手机上可以用小米手机的自带浏览器就可以使用哦。。那你肯定要问,那出了小米的手机呢,能兼容么?我只能说我只测了这种手机可以。

在华为青春版的手机上,自带的浏览器(UA 10.8)会截取‘?’以后的字符,就算转换成十六进制也不行;

在乐视的手机的自带浏览器上像上面一样换成十六进制是不行的,但是,再转换一次,body=http://ip:8080/%2523/share%253Fid=xx%2526 typ=xx 就可以了,是不是觉得好诡异。。。

好吧,到这个博客发布的时候我也都还没有解决这些兼容性,如果大神有招,请留下您的脚步!!!

猜你喜欢

转载自my.oschina.net/tianyuqin/blog/1785141