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

iOS仅来电APP:如何移除CallKit通话结束后的回拨选项UI?

如何移除CallKit通话结束后的回拨选项?

问题描述

我的APP仅集成CallKit实现来电功能,无外呼功能。目前所有功能运行正常,但当主叫或被叫结束通话后,CallKit界面会显示回拨选项,我希望移除该选项,请问该如何实现?我的结束通话代码如下:

func end(call: SpeakerboxCall) {
    let endCallAction = CXEndCallAction(call: call.uuid)
    let transaction = CXTransaction()
    transaction.addAction(endCallAction)
    requestTransaction(transaction, action: "endCall")
}

private func requestTransaction(_ transaction: CXTransaction, action: String = "") {
    callController.request(transaction) { error in
        if let error = error {
            print("Error requesting transaction: \(error)")
        } else {
            print("Requested transaction \(action) successfully")
        }
    }
}

解决方案

CallKit显示回拨选项的核心原因是系统默认认为你的应用支持发起呼叫,要移除这个选项,只需要两步配置就能搞定:

1. 初始化CXProvider时禁用发起呼叫能力

在创建CXProviderConfiguration的时候,设置supportsInitiation为false,这会告诉系统你的应用不支持主动发起呼叫,自然就不会显示回拨按钮了。同时你可以根据需求调整其他配置项:

// 初始化CallKit配置
let providerConfig = CXProviderConfiguration(localizedName: "你的APP名称")
providerConfig.supportsVideo = false // 不需要视频通话就设为false
providerConfig.supportsInitiation = false // 关键配置:禁用发起呼叫
providerConfig.maximumCallGroups = 1
providerConfig.maximumCallsPerCallGroup = 1
// 可选:设置CallKit界面显示的APP图标
providerConfig.iconTemplateImageData = UIImage(named: "callkit-icon")?.pngData()

// 创建CXProvider并设置代理
let callProvider = CXProvider(configuration: providerConfig)
callProvider.setDelegate(self, queue: DispatchQueue.main)

2. 处理发起呼叫的动作(防止意外触发)

因为你的应用没有外呼功能,当系统尝试触发回拨(本质是发起新呼叫请求)时,需要在CXProviderDelegate的performStartCallAction方法里直接标记该动作失败,避免出现错误日志或异常:

extension YourCallManager: CXProviderDelegate {
    func provider(_ provider: CXProvider, perform action: CXStartCallAction) {
        // 不支持外呼,直接结束动作并标记失败
        action.fail()
    }

    // 其他Delegate方法(比如报告通话状态等)保持你原有的实现即可
}

原理说明

CallKit的回拨选项完全依赖于CXProviderConfiguration中的supportsInitiation属性,当该属性为false时,系统会自动隐藏回拨按钮。而实现performStartCallAction并标记失败,则是为了兜底处理任何意外触发的发起呼叫请求,确保你的应用行为完全符合预期。

内容的提问来源于stack exchange,提问作者Kalikanth040494

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:52:23