Can';t在Swift中构造电话的URL
我试图以编程方式请求电话,但我无法从我的九位数电话号码构造URL。例如,当我用999999999电话号码试用它时,它会工作,它会要求打电话Can';t在Swift中构造电话的URL,swift,url,phone-number,Swift,Url,Phone Number,我试图以编程方式请求电话,但我无法从我的九位数电话号码构造URL。例如,当我用999999999电话号码试用它时,它会工作,它会要求打电话 @IBAction func callButtonPressed(_ sender: UIButton) { askForCall(to: "999999999") } func askForCall(to number: String) { guard let url = URL(string: "tel:\(number)"), UIA
@IBAction func callButtonPressed(_ sender: UIButton) {
askForCall(to: "999999999")
}
func askForCall(to number: String) {
guard let url = URL(string: "tel:\(number)"), UIApplication.shared.canOpenURL(url) else { return }
UIApplication.shared.open(url)
}
但当我使用真实的电话号码736XXXXXX时,它什么也看不出来
注意:当我尝试不使用canOpenUrl时,它不起作用,所以我想问题在于根据我的真实数字构造URL
有什么想法吗?你应该键入“tel://”+number
而不是tel:\(number)
编辑2
试试这样的
func call(phoneNumber: String) {
if let url = URL(string: phoneNumber) {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:],
completionHandler: {
(success) in
print("Open \(phoneNumber): \(success)")
})
} else {
let success = UIApplication.shared.openURL(url)
print("Open \(phoneNumber): \(success)")
}
}
}
let number = "736XXXXXX"
let phoneNumber = "tel://\(number)"
call(phoneNumber: phoneNumber)
试试这个数字,看看它是否比简单的代码问题更大:)你需要将方案“tel”添加到你的info.plist中
<key>LSApplicationQueriesSchemes</key>
<string>tel</string>
Goodluck尝试删除UIApplication.shared.canOpenURL(url)等等!你们是在模拟器上还是在真正的设备上进行试验?若我删除它,它也会返回,因为我想问题在于构造URL。此外,如果我删除它,我将无法打开URL,所以,这不会解决任何问题。是的,我正在真实设备上运行我的应用程序(我可以用不存在的电话号码询问ForCall)。是的,我很抱歉,canOpen应该在那里防止错误,但在真实设备上尝试你的应用程序,有时在模拟器上无法工作。对不起,我想编写真实设备(不是模拟器)。好的,我已经解决了它,但问题不在于糟糕的数字或糟糕的方法。问题是,我从代码的另一个地方复制了我的电话号码,并在调用此方法时将其作为参数传递。出于某种原因,当我删除了最后一个数字并手动写入时,它起作用了。
guard let url = URL(string: "tel://\(phoneNumber)"), UIApplication.shared.canOpenURL(url) else {return}
if #available(iOS 10, *) {
UIApplication.shared.open(url)
} else {
UIApplication.shared.openURL(url)
}