ios - 打开 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,因为该应用程序也将在其他国家/地区使用。
有用于识别电话号码的外部库,但我正在尝试探索是否有本机解决方案。
如果无法识别号码,我什至尝试在通讯录中打开联系人,以便用户可以从联系人应用程序拨打号码,但看起来通讯录不是受支持的方案。
解决方案
推荐阅读
- python - 如何解决,ValueError: setting an array element with a sequence?
- java - 字符串作为 while 循环中的标记值
- docker - 无法在 docker-compose 中提供网络名称
- netlify-cms - “配置应该具有必需的属性'media_folder'” - 当它这样做时
- javascript - BrowserslistError:未知版本 67 的 android
- android - 如何接收短信?
- shell - 在期望中结合交互和返回是什么意思?
- vector - 在 Three.JS 中的 2 轴上旋转轮子
- flutter - 扑。将屏幕更改为横向,它会自动变回纵向
- mysql - CakePHP 3:如何从其他表中填充列的总和