我对callkit有问题(但不是真的)。
我在应用程序中实现了callkit,效果很好。我可以再次拨打我的应用程序,而呼叫工具包为我提供了End&Accept,Decline或Hold&Accept选项。如果我正在通过蜂窝(gsm)通话并且在我的应用上接到了电话,情况也是如此。但是,当我进入应用程序通话(在Callkit上)并进行蜂窝电话(gsm)通话时,我只有两种选择:拒绝或结束并接受。
知道为什么吗?或我如何才能获得全部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)调用的视图之前,没有任何调用。
我用Google搜索,但找不到解决方案。据我所知,callkit运行良好。
答案 0 :(得分:0)
我为此苦苦挣扎。对于拨出电话,请确保在远程端接听电话后调用此方法:
[self.provider reportOutgoingCallWithUUID:currentCall.uuid connectedAtDate:[NSDate date]];
如果您不这样做,那么从CallKit的角度来看,该呼叫将被“连接”,并且我发现 other 呼叫的本机来电UI将不会提供“发送到语音信箱”和“保留”并在另一个呼叫“正在连接”时接受”选项。
我今天为此苦了一段时间,直到我找出那部分。我也在打电话:
[self.provider reportOutgoingCallWithUUID:currentCall.uuid startedConnectingAtDate:[NSDate date]];
来自内部:
- (void)provider:(CXProvider *)provider performStartCallAction:(CXStartCallAction *)action
不确定那部分是否必要,但是我正在做,因为这是Speakerbox演示的工作。有点,它们是在回调中执行的...我只是立即执行。
答案 1 :(得分:-1)
在调用之前将CXCallUpdate
对象发送到CallKit时,请确保将supportsHolding
的值保留为true
。
我的CXCallUpdate
如下所示:
let callHandle = CXHandle(type: .phoneNumber, value: handle)
let callUpdate = CXCallUpdate()
if userName != nil{
callUpdate.localizedCallerName = userName;
}
callUpdate.remoteHandle = callHandle
callUpdate.supportsDTMF = true
callUpdate.supportsHolding = true
callUpdate.supportsGrouping = false
callUpdate.supportsUngrouping = false
callUpdate.hasVideo = false
以上不同属性的含义:
localizedCallerName
=如果要在系统的呼叫屏幕上显示用户名,否则将根据句柄类型显示电话号码/电子邮件
supportsDTMF
=在系统的主屏幕上,如果要允许在通话过程中键入键盘数字,则将其设置为false
,将禁用键盘选项。
supportsHolding
=如果您希望保持呼叫,则在触发其他一些呼叫时,请保留此属性true
supportsGrouping
=如果要允许电话会议(在呼叫屏幕中启用了合并呼叫选项),请保留此true
supportsUngrouping
=最后一个的倒数,在电话合并之后(电话会议),应允许其取消分组。
hasVideo
=如果您支持视频通话,系统将自动为您启动摄像头。
@Redssie,如果需要与Callkit
相关的其他帮助,请告诉我。