试图在iOS 10中发送短信,"sms:"协议是否已损坏?

the*_*uts 7 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;
Run Code Online (Sandbox Code Playgroud)

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

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

Aᴄʜ*_*ᴀɪʟ 11

似乎没有.刚在运行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>
Run Code Online (Sandbox Code Playgroud)

单击链接和按钮都完美地工作,打开消息应用程序与正确的数字,并将文本添加到正文.

添加空格,数字和符号有效.虽然应用标准URI组件(%20例如,添加添加空格).因此,我建议将消毒bodyencodeURIComponent.


据我所知,Apple似乎还没有更新他们的文档:

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

但是,body参数显然有效.

iOS <7 <a href="sms:0412345678;body=text">send sms</a>
iOS> 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)

  • @the_nuts刚尝试用`sms:0412345678&body =快速的棕色狐狸跳过懒狗`它完美运行(`iOS 10,iPhone 6 +`) (3认同)