我对callkit有一个问题(但不是真的)。
我在我的应用程序中实现了callkit,它工作得很好。我可以再次呼叫我的应用程序,callkit为我提供了结束并接受、拒绝或保留并接受的选项。如果我正在进行移动(gsm)呼叫,并且在我的应用程序上收到一个呼叫,情况也是如此。但是当我在app call (在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)调用的视图之前,没有调用任何内容。
我用谷歌搜索了一下,但找不到解决方案。据我所知,callkit工作得很好。
发布于 2018-09-06 03:35:59
我在打出电话时遇到了这个问题。对于传出呼叫,请确保在远程端应答后为该呼叫调用此方法:
[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我不确定这部分是否有必要,但我之所以这样做,是因为扬声器演示就是这样做的。在某种程度上,他们是在回调中做的。我马上就去做。
发布于 2018-08-21 18:33:40
在调用之前将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的帮助,请告诉我。
https://stackoverflow.com/questions/51764123
复制相似问题