gpt4 book ai didi

ios - 在 CallKit UI 中隐藏 FaceTime 按钮

转载 作者:搜寻专家 更新时间:2023-10-31 08:31:37 25 4
gpt4 key购买 nike

我正在 VoIP 应用程序中实现 CallKit 支持。

我能够通过在 CXProviderConfiguration 中将 supportsVideo 设置为 false 来禁用视频按钮。现在 FaceTime 按钮出现了。

我想知道是否有办法在默认 UI 中禁用 FaceTime 按钮,因为该应用正在处理与 FaceTime 无关的内部企业号码。


更新:如以下答案所述,可以禁用该按钮,但来电号码会丢失(显示为 Unknown)。我想保留号码并禁用 FaceTime 按钮。


更新:在 iPhone 设置中禁用 FaceTime 会禁用 FaceTime 按钮。但是,这不是解决该问题的有效方法。


更新:对 CXHandle 类型的任何更改,包括向其中插入对电话号码无效的字符,都不会影响该问题 - FaceTime 按钮仍会显示。

最佳答案

我为这个问题大费周章,删除 remoteHandle 确实禁用了按钮,但你不能再从系统调用历史中调用电话。

终于想出了一个完美的解决方案,分享一下。

假设我们同时支持音频/视频。

  1. 初始化CXProviderConfiguration

    let providerConfiguration = CXProviderConfiguration(localizedName: "yourConfigName")
    providerConfiguration.supportsVideo = supportsVideo
    providerConfiguration.supportedHandleTypes = [.generic, .phoneNumber, .emailAddress] // Pick your own supportedHandleTypes.
  2. 上报来电时排除remoteHandle

    let update = CXCallUpdate()

    // Set hasVideo so it shows correct type on incomingCall screen.
    update.hasVideo = supportsVideo

    // Exclude remoteHandle so that the FaceTime button is disabled
    // update.remoteHandle = CXHandle(type: .generic, value: yourHandle)
  3. 重要!结束调用时更新 remoteHandle,在 func provider(_ provider: CXProvider, perform action: CXEndCallAction) 委托(delegate)中。

在 reportIncomingCall 时排除 remoteHandle 将失去从系统调用历史调用的能力。但是您可以在结束通话之前更新通话并进行设置。

 func provider(_ provider: CXProvider, perform action: CXEndCallAction) {
let update = CXCallUpdate()

// Set the remoteHandle, so you can call from System Call History
update.remoteHandle = CXHandle(type: .generic, value: yourHandle)
provider.reportCall(with: uuid, updated: update)

action.fulfill()
}

关于ios - 在 CallKit UI 中隐藏 FaceTime 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41245638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com