进入蜂窝电话时保持呼叫套件呼叫

问题描述 投票:7回答:2

我有一个问题(但不是真的)与callkit。

我在我的应用程序中实现了callkit,它运行良好。我可以第二次打电话给我的应用程序和callkit,向我提供结束和接受,拒绝或保留和接受的选项。如果我正在进行蜂窝电话(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.

在我的app委托中,我有检查useractivity的功能。我在所有函数中都放置了断点,但在显示传入蜂窝(gsm)调用的视图之前没有调用任何内容。

我用Google搜索但无法找到解决方案。据我所知,callkit工作正常。

ios swift callkit
2个回答
0
投票

对于传出电话我一直在努力。对于拨出电话,请确保在远程方应答后呼叫此方法:

[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演示的功能。有点,他们在回调中做到了......我只是马上做。


-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有关的进一步帮助,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.