Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t在Swift中构造电话的URL_Swift_Url_Phone Number - Fatal编程技术网

Can';t在Swift中构造电话的URL

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

我试图以编程方式请求电话,但我无法从我的九位数电话号码构造URL。例如,当我用999999999电话号码试用它时,它会工作,它会要求打电话

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