首页 > 解决方案 > 打开 url 电话方案不适用于某些电话号码

问题描述

我正在使用以下代码拨打我从联系人那里获得的电话号码:

func dialNumber(number : String) {

    let formatedNumber = number.components(separatedBy: NSCharacterSet.decimalDigits.inverted).joined(separator: "")
    print("formatedNumber:", formatedNumber)

    if let url = URL(string: "tel://\(formatedNumber)"),
        UIApplication.shared.canOpenURL(url) {
        if #available(iOS 10, *) {
            UIApplication.shared.open(url, options: [:], completionHandler:nil)
        } else {
            UIApplication.shared.openURL(url)
        }
    }
}

附加信息:

var urlTest = URL(string: "tel:+12345678900")!
print("UIApplication.shared.canOpenURL(url):", UIApplication.shared.canOpenURL(urlTest)) // Returns true
UIApplication.shared.open(urlTest, options: [:], completionHandler:nil)

var urlTest = URL(string: "tel:2345678900")!
print("UIApplication.shared.canOpenURL(url):", UIApplication.shared.canOpenURL(urlTest)) // Returns true
UIApplication.shared.open(urlTest, options: [:], completionHandler:nil)

该代码适用于区号为 +1XXXYYYZZZZ 的号码,并且已拨打电话号码。

但它不适用于像 XXXYYYZZZZ 这样的数字。

如果我使用通讯簿打开联系人,号码 XXXYYYZZZZ 会被识别为电话号码。单击时,该号码被拨打。

如何在我的应用程序中获得与地址簿类似的行为?

我不想添加区域代码 +1,因为该应用程序也将在其他国家/地区使用。

有用于识别电话号码的外部库,但我正在尝试探索是否有本机解决方案。

如果无法识别号码,我什至尝试在通讯录中打开联系人,以便用户可以从联系人应用程序拨打号码,但看起来通讯录不是受支持的方案。

标签: iosswifturltel

解决方案


推荐阅读