Html 如何在iOS上使用tel:with*(星号、星号)或#(哈希、磅)?
我正试图在iPhone上启动一个带有*的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日):此处提及的信息可能已过时。如果苹果在其较新的
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
}
}
}