首页 > 解决方案 > 来电时保持 callkit 通话

问题描述

我对 callkit 有问题(但不是真的)。

我在我的应用程序中实现了 callkit,效果很好。我可以再次接到我的应用程序的电话,并且 callkit 为我提供了 End&Accept、Decline 或 Hold&Accept 选项。如果我在蜂窝 (gsm) 通话中并且在我的应用程序上接到电话,情况也是如此。但是,当我在应用程序通话(在 callkit 上)并接到蜂窝电话(gsm)时,我只得到 2 个选项:拒绝或结束并接受。

知道为什么吗?或者我怎样才能获得所有 3 个选项?

static var providerConfiguration: CXProviderConfiguration {

    var providerConfiguration: CXProviderConfiguration
    providerConfiguration = CXProviderConfiguration(localizedName: "app name")

    providerConfiguration.supportsVideo = false
    providerConfiguration.maximumCallsPerCallGroup = 1
    providerConfiguration.maximumCallGroups = 3
    providerConfiguration.supportedHandleTypes = [.phoneNumber]
    return providerConfiguration
}

我已经实现:

providerDidReset, 
CXStartCallAction, 
CXAnswerCallAction, 
CXEndCallAction, 
CXSetHeldCallAction, 
CXSetMutedCallAction, 
timedOutPerforming action, 
didActivate audioSession, 
didDeactivate audioSession.

在我的应用程序委托中,我具有检查用户活动的功能。我在所有函数中都设置了断点,但在显示传入蜂窝 (gsm) 呼叫的视图之前没有调用任何内容。

我用谷歌搜索但找不到解决方案。据我所知,callkit 运行良好。

标签: iosswiftcallkit

解决方案


我为拨出电话而苦苦挣扎。对于拨出电话,请确保在远程端接听电话后调用此方法:

[self.provider reportOutgoingCallWithUUID:currentCall.uuid connectedAtDate:[NSDate date]];

如果你不这样做,从 CallKit 的角度来看,呼叫会被“连接”,我发现其他呼叫的本机来电 UI不会在另一个呼叫时为来电提供“发送到语音邮件”和“保持并接受”选项是“连接”。

今天我为此挣扎了一段时间,直到我弄清楚了那部分。我也在打电话:

 [self.provider reportOutgoingCallWithUUID:currentCall.uuid startedConnectingAtDate:[NSDate date]];

从内部:

- (void)provider:(CXProvider *)provider performStartCallAction:(CXStartCallAction *)action

不确定这部分是否必要,但我正在这样做,因为这就是 Speakerbox 演示所做的。有点,他们在回调中这样做......我只是立即这样做。


推荐阅读