Невозможно создать URL для телефонного звонка в Swift - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь запросить телефонный звонок программно, но не могу составить 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 из моего реального числа

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вам нужно добавить схему '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)
        }

Goodluck

0 голосов
/ 28 ноября 2018

Вы должны ввести "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)

Попробуйте с этимномер, чтобы увидеть, если это большая проблема, чем простой код:)

...