Если вы объявили свойство callController
, объявите другое свойство callProvider
типа CXProvider
.Затем создайте объект, в котором вы храните эти 2 свойства, для соответствия CXProviderDelegate
.
Реализация всех необходимых функций делегата CXProvider
.При запросе действия начального вызова необходимо выполнить действие в методе делегата, например так:
func provider(_ provider: CXProvider, perform action: CXStartCallAction) {
/**
Configure the audio session, but do not start call audio here, since it must be done once
the audio session has been activated by the system after having its priority elevated.
*/
CallAudio.configureAudioSession()
action.fulfill()
}
Вот повторение кода:
В вашем классе:
private var provider: CXProvider!
private var callController: CXCallController!
Соответствует делегату CXProvider:
class CallProvider: NSObject, CXProviderDelegate {
Создайте объект CXProvider и назначьте его делегату:
provider = CXProvider(configuration: configuration)
provider.setDelegate(self, queue: nil) // 'nil' means it will run on main queue
Реализуйте функции делегата CXProvider, пример для действия начального вызова:
func provider(_ provider: CXProvider, perform action: CXStartCallAction) {}
Ура!