我尝试在 iPhone 上使用包含 * 的
tel
网址发起呼叫。它会正确显示通话对话框,但当您单击通话时会返回到 safari。
<a href="tel:123*12">Test</a>
iOS11现在允许我们使用
*
或 #
拨打号码
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
}
}
}
批准的答案至少不再是正确的。我已经测试了作为网页和应用程序中能够使用特殊字符
#
和*
进行拨号。如果您希望在任一情况下使用这些字符,您所要做的就是对它们进行编码。
在 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)
}
}
}