Html 如何在iOS上使用tel:with*(星号、星号)或#(哈希、磅)?

Html 如何在iOS上使用tel:with*(星号、星号)或#(哈希、磅)?,html,ios,url-scheme,phone-call,Html,Ios,Url Scheme,Phone Call,我正试图在iPhone上启动一个带有*的telurl的通话。它会正确地打开“呼叫”对话框,但单击“呼叫”时会返回到safari <a href="tel:123*12">Test</a> 应该有帮助: 为了防止用户恶意重定向电话或更改电话或帐户的行为,电话应用程序 支持tel中的大部分(但不是全部)特殊字符 计划。具体来说,如果URL包含*或#字符,则 电话应用程序不会尝试拨打相应的电话 编号。 更新(2018年1月2日):此处提及的信息可能已过时。如果苹果在其较新的

我正试图在iPhone上启动一个带有*的
tel
url的通话。它会正确地打开“呼叫”对话框,但单击“呼叫”时会返回到safari

<a href="tel:123*12">Test</a>

应该有帮助:

为了防止用户恶意重定向电话或更改电话或帐户的行为,电话应用程序 支持tel中的大部分(但不是全部)特殊字符 计划。具体来说,如果URL包含*或#字符,则 电话应用程序不会尝试拨打相应的电话 编号。


更新(2018年1月2日):此处提及的信息可能已过时。如果苹果在其较新的SDK中放宽了这些规则,请参阅新文档。参考Husam的答案。

批准的答案不正确,至少不再正确。我已经测试了作为一个应用程序和应用程序内都能够使用特殊字符
*
拨号。如果您希望在任何一种情况下使用这些字符,您必须做的是对它们进行编码

在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)
      }
    }
  }

iOS11现在允许我们使用
*
#


Swift示例代码
如果要将*添加到键入为“tel”的href,则需要使用utf-8编码版本-%2A

参考:

比如说


给我打电话
我们可以从我的应用程序打开拨号板吗。类似于*123456#的字符串。我试过上面的答案,但不起作用。请帮帮我,这件事很紧急,请看。Husam的示例代码确实适用于iOS 11。诀窍是只编码数字部分,而不是
tel://
部分。(也不是说不再需要
telprompt://
来获得呼叫确认提示。
tel://
现在也会这样做。)我想你只需要.open()而不是.openURLHow?使用iOS11、Xcode 9.2、Swift 4.0.3,我无法拨打带有#和*的号码。谢谢,Husam!我正在对整个字符串进行编码(电话://*111*12345#)。关键是只对号码进行编码,而不是电话://前缀。应该接受回答。如果11允许呼叫
*
#
,请在此处阅读我的答案
    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
            }
        }
    }