window.open("sms:...") 适用于 android 但不适用于 ios

window.open("sms:...") works for android but not for ios

我有这个功能,可以在点击时预填短信。这适用于 Android,但在 iOS 的任何版本上,它只会打开新的空 window。知道吗,为什么?

 var ua = navigator.userAgent.toLowerCase();
    var url;
        
    if (ua.indexOf("iphone") > -1 || ua.indexOf("ipad") > -1)
    {
   

    var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
    var ver = [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
    if (ver[0] >= 8)
    {
    url = "sms:&body=" + encodeURIComponent("Hello guys, this is an awesome app! Check it out http://www.myurl.com/webapp/index.html");
    }
    else
    {
    url = "sms:;body=" + encodeURIComponent("Hello guys, this is an awesome app! Check it out http://www.myurlcom/webapp/index.html");
    }
    
    
    }
    else
    url = "sms:?body=" + encodeURIComponent("Hello guys, this is an awesome app! Check it out http://www.muyrl.com/webapp/index.html");

    window.open (url,'_system')

我尝试使用合适的 HTML link,它在 iOS 9.

上运行良好

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

所以我可以看到两个潜在的问题:

  • 我可能无法与 window.open();
  • 一起工作
  • 仅在提供数字时有效

编辑:我设法让它在没有数字的情况下工作

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

看来是来自window.open()

下面的 link 应该可以帮助您测试所有不同的组合。 只需用手机打开即可。

对我有用的是:href="sms://&body=TEST"

list of sms combination format here