我所看到的所有内容似乎都表明sms:18005555555?body=bodyTextHere应该可以工作,但在iPhone上无法工作。如果我去掉?body=bodyTextHere,只使用sms:phonenumber,它就可以工作。
我看到过几个二维码通过Safari链接实现此功能。他们是如何预先填充正文文本的?
Bradorego的解决方案适用于我,但这里是更详细的答案。
需要注意的是,您需要使用%20
而不是+
对正文进行编码。对于PHP,这意味着使用rawurlencode($body)
而不是urlencode($body)
。否则,您会在旧版iOS上的消息中看到加号,而不是空格。
这是一个jQuery函数,它将重新调整您的iOS设备的SMS链接。 Android /其他设备应该正常工作,不会执行该代码。
HTML:
<a href="sms:+15551231234?body=Hello%20World">SMS "Hello World" to 555-123-1234</a>
jQuery:
(function() {
if ( !navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ) return;
jQuery('a[href^="sms:"]').attr('href', function() {
// Convert: sms:+000?body=example
// To iOS: sms:+000;body=example (semicolon, not question mark)
return jQuery(this).attr('href').replace(/sms:(\+?([0-9]*))?\?/, 'sms:$1;');
});
})();
a.sms-link
这样的类,而不是 a[href^="sms:"]
。<a href="###" data-telno="13800000000" data-smscontent="hello" class="XXXXX XXXXXX XXXXXX sendsms"/>
$('.sendsms').on('click', function(){
var p = $(this).data('telno'),
c = $(this).data('smscontent'),
t = ';';
if (!ios) { // add your own iOS check
t = '?';
}
location.href = 'sms:'+ p + t + c;
})
除了iOS和Android,你还需要担心哪个Android消息应用程序。 Note 9和一些新的Galaxy手机使用Google消息应用程序无法打开文本,但是三星应用程序可以正常工作。解决方案似乎是在sms:后面添加//。
因此,sms://15551235555
原始答案:最初的回答
<a href="sms:/* phone number here */?body=/* body text here */">Link</a>
应该是
<a href="sms://15551235555?body=Hello">Link</a>
我猜在大多数应用程序中,你不知道要给谁发短信,所以你只想填写短信内容,而不是号码。如果只留下内容而不填写号码,它会按照你预期的方式工作 - 在这种情况下,URL看起来像这样:
sms:?body=message
sms:;body=message
这里是我用来设置短信的代码示例:
var ua = navigator.userAgent.toLowerCase();
var url;
if (ua.indexOf("iphone") > -1 || ua.indexOf("ipad") > -1)
url = "sms:;body=" + encodeURIComponent("I'm at " + mapUrl + " @ " + pos.Address);
else
url = "sms:?body=" + encodeURIComponent("I'm at " + mapUrl + " @ " + pos.Address);
location.href = url;
<a href="sms:/* phone number here */&body=/* body text here */">Link</a>
这在我的iPhone 5S上可以正常工作!
虽然和编程主题有点偏差,但是如果你搜索的话,可能会偶然发现这里......
在Markdown中(已测试过使用Parsedown及在iOS/Android上),你可以这样做:
[Link](sms:phone_number,?&body=URL_encoded_body_text)
//[send sms](sms:1234567890;?&body=my%20very%20interesting%20text)
?body= //for Android
&body= //for iOS
我在iOS 11+上遇到了无法仅通过短信正文打开应用程序的问题,没有收件人。
以上解决方案都不适用于我,它根本没有打开或者在收件人中预填入了某些内容(例如“;”)。
最终,我采用了以下仅包含正文的语法:
sms:///?body=Hello%20World
通用链接使用 tel &? body
<a href="sms://+123456789&?body=url works on android and also ios">link ios+android</a>
https://output.jsbin.com/puqicel
链接 iOS + Android
<a href="sms://+123456789&?body=url works on android and also ios">link ios+android</a>