You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:51:55