如何使用html链接打开带有预填充内容的短信应用?
我阅读的所有内容似乎都表明sms:18005555555?body = bodyTextHere
应该可以,但是在iPhone上不起作用。如果我将?body = bodyTextHere取出,并且仅使用sms:phonenumber,它将起作用。
我见过几个通过野生动物园链接执行QR码的实例。他们如何能够预先填充正文?
如何使用html链接打开带有预填充内容的短信应用?
我阅读的所有内容似乎都表明sms:18005555555?body = bodyTextHere
应该可以,但是在iPhone上不起作用。如果我将?body = bodyTextHere取出,并且仅使用sms:phonenumber,它将起作用。
我见过几个通过野生动物园链接执行QR码的实例。他们如何能够预先填充正文?
Answers:
事实证明这是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>
(电话号码是可选的)
sms
URI 的应用可以在Android上进行更改,许多制造商都可以这样做;因此,尽管它可以在特定的设备/应用上运行,但可能无法在其他设备/应用上运行(或仅在更新后)。我的建议是除非您仅设置电话号码,否则切勿在Android上使用此功能。仅在您测试过的iOS版本和非Android平台上使用它。
我知道这是一个旧线程,但偶然发现了它,发现某些部分不再相关。
我发现,如果您只想填充文本而不添加电话号码,则可以执行以下操作:
sms:?&body=/* message body here */
?
:,如何使它显示为空白?我试过sms:?body
和sms:;?body
,第一个试图发送到?第二次尝试发送给;
只需按此顺序放置所有符号(我仅按此顺序对其进行测试,因为它对我而言在代码方面最为有意义)。
对于身体链接通知...我只是把... ;?&body=
。另外,请注意,我发现我需要使用%20
任何空格。
我已经在我的iPhone(v。9.2)和另一个Android上对其进行了测试,并且效果很好。
这将解决必须针对不同设备进行破解的问题。在SMS中对其进行测试时,没有任何伪像。
<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>
Android和iOS不需要两个单独的锚标记。这应该有所帮助。
//没有联系电话
<a href="sms:?&body=message">Text Message</a>
//有联系电话
<a href="sms:1234567890;?&body=message">Text Message</a>
//在Android和iOS上均可使用
Without Contact Number
MacOS上的版本-它会将SMS设置to
为?
我们找到了一种建议的方法并进行了测试:
<a href="sms:12345678?body=Hello my friend">Send SMS</a>
结果如下:
因此,我得出结论,它实际上并不起作用-至少使用此方法。
仅限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编码。
要获取短信和邮寄:链接,这些链接在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上进行了测试。
他们都按预期工作。他们也没有电话号码或电子邮件地址。
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;');
});
})();
如果可能,请考虑使用like 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;
})
iPhone不接受任何消息文本,只会输入电话号码。您可以在这里https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html#//apple_ref/doc/uid/TP40007899-CH7-SW1
要使用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>
我怀疑在大多数应用程序中,您都不知道要发短信给谁,因此您只想填写文本正文,而不是数字。只需省略数字即可达到预期的效果-在这种情况下,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;
嗯,您不仅需要担心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>
点击文本链接的问题之一是解决不存在本机文本应用程序的桌面方案。一种解决方案是使用Zipwhip的“单击文本”按钮创建器。
目前,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];