无法在Swift

时间:2018-11-28 10:46:28

标签: swift url phone-number

我正在尝试以编程方式请求电话,但无法从我的9位电话号码构造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的情况下尝试操作时,它无法正常工作,因此我想问题在于根据我的真实号码构造网址

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您应该输入"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)

尝试使用该数字,看看它是否比简单的代码更大的问题:)

答案 1 :(得分:0)

您需要将方案“ tel”添加到您的info.plist

<key>LSApplicationQueriesSchemes</key>
      <string>tel</string>

然后正常使用:

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

祝你好运