如何在 iOS 上使用 tel: 与 *(星号、星号)或 #(井号、井号)?

问题描述 投票:0回答:4

我尝试在 iPhone 上使用包含 * 的

tel
网址发起呼叫。它会正确显示通话对话框,但当您单击通话时会返回到 safari。

<a href="tel:123*12">Test</a>
html ios url-scheme phone-call
4个回答
33
投票

11
投票

iOS11现在允许我们使用

*
#

拨打号码

Swift 示例代码

let number = "*111*12345#"
let app = UIApplication.shared
if let encoded = number.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) {
    let u = "tel://\(encoded)"
    if let url = URL(string:u) {
        if app.canOpenURL(url) {
            app.open(url, options: [:], completionHandler: { (finished) in
                
            })
            return
        }
    }
}

5
投票

批准的答案至少不再是正确的。我已经测试了作为网页和应用程序中能够使用特殊字符

#
*
进行拨号。如果您希望在任一情况下使用这些字符,您所要做的就是对它们进行编码。

在 HTML 中,

#
变为
%23
并且
*
不需要转义

如果使用 Swift,您可以对链接进行编码并使用此函数从应用程序中按下它:

//number format example (commas are pauses): 123-456-7890,,555#,1234
fileprivate func callNumber(_ number: String) {
    let dialString = "telprompt://" + number
    if let escapedDialString = dialString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) {
      if let dialURL = URL(string: escapedDialString) {
        UIApplication.shared.openURL(dialURL)
      }
    }
  }

0
投票

如果您想将 * 添加到键入“tel”的 href 中,则需要使用 utf-8 编码版本 - %2A

参考:W3

例如

<a href="tel:%2A1234"> Phone me <a/>

© www.soinside.com 2019 - 2024. All rights reserved.