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

Red*_*sie 7 ios swift callkit

我有一个问题(但不是真的)与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
}
Run Code Online (Sandbox Code Playgroud)

我已实施:

providerDidReset, 
CXStartCallAction, 
CXAnswerCallAction, 
CXEndCallAction, 
CXSetHeldCallAction, 
CXSetMutedCallAction, 
timedOutPerforming action, 
didActivate audioSession, 
didDeactivate audioSession.
Run Code Online (Sandbox Code Playgroud)

在我的app委托中,我有检查useractivity的功能.我把断点在所有的功能,但没有被调用显示的话蜂窝(GSM)调用视图前.

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

Meh*_*kar -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  
Run Code Online (Sandbox Code Playgroud)

上述不同属性的含义:

localizedCallerName= 如果您想在系统的呼叫屏幕上显示用户的姓名,否则将显示基于句柄类型的电话号码/电子邮件

supportsDTMF= 在系统主屏幕上,如果您想允许在呼叫运行时输入键盘号码,如果您这样做false,键盘选项将被禁用。

supportsHolding= 如果您希望保持您的呼叫,当触发其他呼叫时,请保留此属性true

supportsGrouping= 如果您想允许电话会议(在通话屏幕中启用合并通话选项),则保留此一项true

supportsUngrouping= 与上一个相反,在呼叫合并(电话会议)后,应允许其取消分组。

hasVideo= 如果您支持视频通话,系统会自动为您启动摄像头。

@Redssie,如果需要任何进一步的帮助,请告诉我Callkit