如何预先通过HTML链接填充短信正文文本

如何使用HTML链接打开与预填充的身体的短信应用程序?

我读过的所有东西似乎都表明短信:18005555555?body = bodyTextHere

应该工作,但在iPhone上,这是行不通的。 如果我拿出?body = bodyTextHere,只是使用短信:电话号码,它的工作原理。

我已经看到几个例子,QR码通过Safari浏览器链接进行。 他们如何能够预先填充正文文本?

事实certificate这是100%可能,虽然有点hacky。

如果你想让它在Android上工作,你需要使用这种格式:

<a href="sms:/* phone number here */?body=/* body text here */">Link</a>

如果你想让它在iOS上工作,你需要这个:

<a href="sms:/* phone number here */;body=/* body text here */">Link</a>

现场演示: http : //bradorego.com/test/sms.html (注意:“Phone and?body”和“Phone and; body”应自动填充to:字段和正文文本。信息)

更新:

显然iOS8不得不去改变我们的事情,所以感谢其他一些评论者/响应者,iOS有一个新的风格:

<a href="sms:/* phone number here */&body=/* body text here */">Link</a>

(电话号码是可选的)

对于iOS 8,试试这个:

 <a href="sms:/* phone number here */&body=/* body text here */">Link</a> 

切换“;” 用“&”为我工作。

我知道这是一个古老的线程,但偶然发现,有些部分不再相关。

我发现,如果您只想填充文本而不添加电话号码,则可以执行以下操作:

 sms:?&body=/* message body here */ 

把所有的符号都按照这个顺序排列(我只是按照这个顺序来testing它,因为它对我来说代码是最有意义的)。

注意身体的链接…我只是把… ;?&body= 。 另外,请注意,我发现我需要使用%20作为空格。

我已经testing了我的iPhone(9.2版)和另一个Android,它工作得很好。

这将解决这个问题,不得不为不同的设备进行破解。 当我在短信中testing时,我没有任何文物。

 <a href="sms:19131234567;?&body=Question%20from%20mywebsite.com.%20%20MY%20MESSAGE%20-%20" title="Click here to TEXT US gallery token needs updating!">Send me SMS</a> 

我们find了一个build议的方法和testing:

 <a href="sms:12345678?body=Hello my friend">Send SMS</a> 

结果如下:

  • iPhone4 – 错误(消息的空主体);
  • 诺基亚N8 – 确定(正文消息 – “你好我的朋友”,至“12345678”);
  • HTC Mozart – 故障(消息“不支持的页面”(点击“发送短信”链接后));
  • HTC Desire – 故障(信息“收件人无效:
    <12345678?body = Hellomyfriend>“(点击”发送短信“链接后))。

因此我得出结论,至less这个方法并不真正起作用。

 <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; }) 

Bradorego的解决scheme是为我工作,但这是一个更广泛的答案。

一个小问题是,你需要使用%20而不是+编码身体。 对于PHP,这意味着使用rawurlencode($body)而不是urlencode($body) 。 否则,您会在旧版本的iOS上看到加号,而不是空格。

这里是一个jQuery函数,将重新设置您的iOS设备的短信链接。 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:"]

我怀疑在大多数应用程序中,你不会知道谁是文本,所以你只想填充文本正文,而不是数字。 如你所期望的那样,只是忽略这个数字 – 这就是这种情况下的URL:

 sms:?body=message 

对于iOS来说,除了与之相同的东西,

 sms:;body=message 

以下是我用来设置SMS的代码示例:

 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!

我发现,在IOS 7的iPhone 4上 ,只有在手机的联系人列表中设置了电话号码,才能将短信发送到短信。

所以下面的工作如果0606060606是我的联系人的一部分:

 <a href="sms:0606060606;body=Hello my friend">Send SMS</a> 

顺便说一下,在iOS 6 (iPhone 3GS)上,它只是一个机构:

 <a href="sms:;body=Hello my friend">Send SMS</a> 

每个操作系统版本都有不同的做法。 看看短信链接库

点击到文本链接的问题之一是解决没有本地短信应用程序存在的桌面scheme。 解决scheme是使用Zipwhip的Click-to-Textbutton创build器。

  • 在桌面上,他们会在用户input的幕后向您发送实际的真实文本消息。
  • 在iOS或Android上,您将获得本机发短信function。

https://www.zipwhip.com/create-sms-button/

要得到短信和邮件:链接工作在iPhone和Android,没有任何JavaScript,试试这个:

 <a href="sms:321-555-1111?&body=This is what I want to sent">click to text</a> <a href="mailto:someone@sample.com?&subject=My subject&body=This is what I want to sent">click to email</a> 

我在Android和iPhone的Chrome上以及iPhone上的Safari上testing了它。
他们都按预期工作。 他们工作时没有电话号码或电子邮件地址。

当前,Android和iPhone都不支持Tap to SMS超链接中的正文副本元素。 它可以通过编程来完成,

 MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init]; picker.messageComposeDelegate = self; picker.recipients = [NSArray arrayWithObject:@"48151623"]; picker.body = @"Body text."; [self presentModalViewController:picker animated:YES]; [picker release];