[英]URL with string tel://*#06# is returning nil in Swift
我在Swift 4.x中使用以下代碼:
let url = URL(string: "tel://*#06#")
這使url為nil。 只是這個特定的數字有一些問題。 誰能告訴我如何解決這個問題,以及為什么這首先是一個問題。
根據此處的蘋果文檔:
為防止用戶惡意重定向電話或更改電話或帳戶的行為,“電話”應用程序支持tel方案中的大多數(但不是全部)特殊字符。 具體來說, 如果URL包含*或#字符,則“電話”應用程序不會嘗試撥打相應的電話號碼。
請注意,對於其他字符,可以使用addingPercentEncoding
方法對特殊字符進行轉義,這將返回原始字符串的正確轉義版本。
例:
let encoding = phoneNumberString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
正如@Ketan Ordera所建議的那樣,即使在使用URLEncoding擴展了URL之后,也無法在iOS中運行USSD代碼。
要撥打電話,請使用下一個功能:
static func callPhone (phone:String){
guard let number = URL(string: "telprompt://" + phone) else { return }
UIApplication.shared.open(number)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.