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

时间:2011-06-25 20:55:24

标签: html ios hyperlink sms

如何使用html链接打开带预先填充的正文的短信应用?

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

应该可行,但在iPhone上,这不起作用。如果我取出?body = bodyTextHere,只使用sms:phonenumber,它就可以了。

我已经看到了QR码通过safari链接执行此操作的几个实例。他们如何预先填充正文?

22 个答案:

答案 0 :(得分:158)

事实证明这是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(注意&#34;电话和?正文&#34;&#34;电话和;正文&#34;应自动填充to:字段和正文。查看来源以获取更多信息)

<强>更新

显然iOS8必须改变我们的想法,所以感谢其他一些评论者/响应者,这是iOS的新风格:

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

(电话号码是可选的)

答案 1 :(得分:43)

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

我发现如果您只想在不添加电话号码的情况下填充文字,您可以执行以下操作:

XS = T.tensor3("XS") 
w_o = init_weights((1089, 10))
b_o = init_weights((10,))

results, updates = theano.scan(lambda XS: T.nnet.softmax(T.dot(XS,w_o) + b_o),  
                               sequences=[XS],  
                               outputs_info=None)

result = results  
Mutiply = theano.function(inputs=[XS], outputs=[result]) 

答案 2 :(得分:38)

对于iOS 8,试试这个:

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

切换&#34 ;;&#34;用&#34;&amp;&#34;为我工作。

答案 3 :(得分:29)

只需将所有符号按此顺序排列(我只按此顺序测试它,因为它对我来说代码最有意义)。

注意身体链接......我只是放了...... ;?&body=。另外,请注意我发现我需要对任何空格使用%20

我已经在我的iphone(v.9.2)和另一款Android上测试了它,它运行得很好。

这将解决不得不为不同的设备入侵它的问题。当我在短信中测试时,我没有任何文物。

<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>

答案 4 :(得分:10)

我们找到了一种方法并进行了测试:

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

结果如下:

  • iPhone4 - 错误(消息正文);
  • 诺基亚N8 - 确定(消息正文 - “你好我的朋友”,To “12345678”);
  • HTC Mozart - 错误(消息“不支持的页面”(点击后) “发送短信”链接));
  • HTC Desire - 错误(消息“收件人无效:
    &lt; 12345678?body = Hellomyfriend&gt;“(点击”发送短信“链接后))。

因此,我认为它至少没有真正起作用 - 至少使用这种方法。

答案 5 :(得分:7)

Android和iOS不需要两个单独的锚标签。 这应该有所帮助。

//没有联系号码 <a href="sms:?&body=message">Text Message</a>

//使用联系号码 <a href="sms:1234567890;?&body=message">Text Message</a>

//适用于Android和iOS

答案 6 :(得分:5)

要获取短信:和mailto:链接可在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>

我在Chrome for Android&amp; iPhone和iPhone上的Safari 他们都按预期工作。 他们也没有电话号码或电子邮件地址。

答案 7 :(得分:4)

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

答案 8 :(得分:4)

Bradorego的解决方案对我有用,但这是一个更广泛的答案。

一个小问题是,您需要使用%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:"]类。

答案 9 :(得分:3)

答案 10 :(得分:2)

仅限

Android和iOS 正文:

<a href="sms://;?&body=Hello%20World">Only body</a>

Android和iOS ,只有一个收件人带有正文:

<a href="sms://+15552345678;?&body=Hello%20World">one recipient only with body</a>

仅Android 具有正文的多个收件人:

<a href="sms://+15552345678, +15552345679;?&body=Hello%20World">Android multiple recipients with body</a>

仅iOS 具有正文的多个收件人:

<a href="sms://open?addresses=+15552345678,+15552345679;?&body=Hello%20World">iOS multiple recipients with body</a>

请注意,正文应使用URI编码。

答案 11 :(得分:2)

不仅需要担心iOS和Android,还需要担心哪个Android消息传递应用程序。注意9的Google消息传递应用程序和一些新星系不会打开文本,但是三星应用程序可以工作。解决方案似乎是在短信之后添加//

所以短信:// 15551235555

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

应该是

<a href="sms://15551235555?body=Hello">Link</a>

答案 12 :(得分:1)

我怀疑在大多数应用程序中你都不知道要发短信的人,所以你只想填写文本正文,而不是数字。只需省略号码就可以正常运行 - 这就是网址在这种情况下的样子:

sms:?body=message

对于iOS同样的事情,除了;

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;

答案 13 :(得分:1)

要使用Android,请使用以下代码

<a href="sms:+32665?body=reg fb1>Send SMS</a>

对于iOS,您可以使用以下代码

<a href="sms:+32665&body=reg fb1>Send SMS</a>

以下适用于iO和Android的代码

<a href="sms:+32665?&body=reg fb1>Send SMS</a>

答案 14 :(得分:1)

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

这适用于我的iPhone 5S!

答案 15 :(得分:0)

在 iOS 11+ 上无法打开仅包含正文消息的 SMS 应用程序时遇到了困难。

上述解决方案都不适用于我,它根本没有打开或打开时在收件人中预先填充了某些内容(如“;”)。

最后我只用这个语法结束了正文:

sms:///?body=Hello%20World

答案 16 :(得分:0)

一直使用到 iOS 14,运行良好!

row

答案 17 :(得分:0)

(只是一点点话题),但也许如果你搜索过你可能会偶然发现...... 在markdown (使用解析和iOS / android测试)你可以这样做:

   [Link](sms:phone_number,?&body=URL_encoded_body_text)
   //[send sms](sms:1234567890;?&body=my%20very%20interesting%20text)

答案 18 :(得分:0)

点击文字链接的一个问题是解决了没有本机短信应用程序的桌面方案。解决方案是使用Zipwhip的Click-to-Text按钮创建器。

  • 在桌面上,他们会根据用户的输入在幕后向您发送实际的真实短信。
  • 在iOS或Android上,您可以获得原生短信功能。

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

答案 19 :(得分:0)

每个操作系统版本都有不同的方式。看看sms-link library

答案 20 :(得分:0)

我发现,在带有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>

答案 21 :(得分:-3)

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];