ios - 来电时保持 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 运行良好。
解决方案
我为拨出电话而苦苦挣扎。对于拨出电话,请确保在远程端接听电话后调用此方法:
[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 演示所做的。有点,他们在回调中这样做......我只是立即这样做。
推荐阅读
- haskell - 在 Beam 中使用 newtype
- github - 如何打开保存在文件、Google Colab 中的笔记本
- javascript - 在 JavaScript 中打开本地文件
- c++ - Visual Studio 中的错误 CGAL 绘制函数
- powerbi - PowerBI如何在DAX公式中计算基于KPI的列值
- bash - 将字符串的一部分与 Bash 右对齐
- python-3.x - GCP - 使用 gRPC 的云运行 - 书店示例
- html - 如何使用 Bootstrap 中的可见类使文本出现在特定视口上?
- apple-push-notifications - 通过 HTTP2 使用 Spring WebClient 的 POST API
- swift - 在 Swift 中获取多维数组的元素类型