iOS应用如何打开电话拨号键盘而非直接拨打电话?
解决iOS打开带号码的拨号键盘而非直接拨号的问题
我完全懂你的需求——想要唤起系统拨号键盘并自动填入目标号码,但让用户决定是否发起通话,而不是直接拨出去。你试过的tel:和tel://确实会直接触发拨号,这是它们的设计逻辑,但其实苹果提供了一个更适合你场景的URL Scheme:telprompt:。
具体实现代码
把你原来的URL Scheme换成telprompt:即可,修改后的代码如下:
if let url = URL(string: "telprompt:90634904") { if UIApplication.shared.canOpenURL(url) { UIApplication.shared.open(url, options: [:], completionHandler: nil) } }
关键说明
telprompt:会唤起系统拨号界面,自动填入你指定的号码,用户可以编辑号码或者点击拨号按钮发起通话,完全符合你的需求。- 这个Scheme从iOS 3就开始支持了,兼容性非常好,不用担心版本问题。
必要的配置
为了确保canOpenURL能正确识别这个Scheme,你需要在项目的Info.plist中添加LSApplicationQueriesSchemes数组,并把telprompt加入进去:
<key>LSApplicationQueriesSchemes</key> <array> <string>telprompt</string> </array>
关于CallKit的补充
你提到的CallKit确实是更复杂的通话框架,但它主要用于VoIP通话集成、自定义通话界面等高级场景,对于你现在只需要唤起拨号键盘的需求来说,telprompt:已经完全够用,没必要去折腾CallKit的复杂逻辑。
内容的提问来源于stack exchange,提问作者RateM
相关产品推荐
相关产品推荐

