试图在iOS 10中发送短信,Is" sms:"协议坏了?

时间:2016-09-16 10:22:03

标签: javascript mobile-safari ios10

我有一个click-to-send-sms按钮。

现在我点击按钮时使用此代码:

if (platform == 'iOS') {
    if (version == 4 || version == 5 || version == 6 || version == 7) {
        link = 'sms:' + serviceNumber + ';body=' + body;
    } else {
        link = 'sms:' + serviceNumber + '&body=' + body;
    }
} else {
    link = 'sms:' + serviceNumber + '?body=' + encodeURIComponent(body);
}
window.location.href = link;

他们告诉我它在iOS 10中不再起作用,单击按钮时没有任何反应。 (问题不在于UA认可,而是进入"& body = ...")

目前我没有ios 10设备可以调试......他们是否改变了打开短信发件箱的方式?也许我必须使用encodeURIcomponent作为主体,如android / windows?

1 个答案:

答案 0 :(得分:9)

似乎没有。刚在运行iOS 10.0.1的iPhone 6+上测试过这个。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>test</title>
  </head>
  <body>
    <a href="sms:0412345678&body=testing">send sms</a>
    <button onclick="window.location.href = 'sms:0412345678&body=testing'">send sms</button>
  </body>
</html>

点击链接和按钮都完美无缺,打开了带有正确数字的消息应用,并将文本添加到正文中。

添加空格,数字和符号有效。虽然标准URI组件适用(例如,添加%20会添加空格)。因此,我建议使用body来清理encodeURIComponent

据我所知,Apple似乎还没有更新他们的documentation on this

  

sms方案用于启动Messages应用程序。此类型的URL格式为“sms:”,其中是一个可选参数,用于指定SMS消息的目标电话号码。此参数可以包含数字0到9以及加号(+),连字符( - )和句点(。)字符。 URL字符串不得包含任何消息文本或其他信息。

但是,body参数显然有效。

iOS&lt; 7 <a href="sms:0412345678;body=text">send sms</a>
iOS&gt; 7 <a href="sms:0412345678&body=text">send sms</a>

经过测试,我确认<a href="sms:0412345678&body=test">send sms</a>可以使用:

  • iPhone 6+(iOS 10.0.1)
  • iPhone 6(iOS 10)
  • iPhone 5(iOS 9)
  • iPhone 4S(iOS 8)