Ошибка CallKit com.apple.CallKit.error.requesttransaction error 2 - PullRequest
0 голосов
/ 11 декабря 2018

Я пробовал много примеров запуска исходящего вызова на ios swift с использованием CallKit.Я включил VOIP в возможностях.Во всех случаях происходит сбой при:

callController.request(transaction) {
    error in
      if let error = error { print("Error requesting transaction: \(error)")}

 else { print("Requested transaction successfully")
            }

Я получаю ошибку:

Error requesting transaction: Error Domain = com.apple.CallKit.error.request transaction Code=2 "(null)"

Я не могу найти ответ, соответствующий коду = 2.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Если вы объявили свойство 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) {}

Ура!

0 голосов
/ 19 декабря 2018

Если вы искали немного, то вы нашли все коды ошибок и их значение в документации Apple здесь: https://developer.apple.com/documentation/callkit/cxerrorcoderequesttransactionerror/code

Здесь в enum, код = 2 означает, что unknownCallProvider - это ошибкачто вы получаете.Описание говорит, что «Контроллеру не удалось найти провайдера вызовов для выполнения действий в запрошенной транзакции».

Здесь явно указывается, что вы не настроили провайдера (CXProvider).Вот почему он выдает ошибку.

В случае callkit все действия или транзакции, которые вы хотите отправить в систему, выполняются через CXCallController, который вы используете, и система выдаст подтверждение / действия через объект CXProvider.(в зависимости от конфигурации, которую вы выполнили) и ее делегата.

Теперь, если вы не установили провайдера и его делегата, почему система свяжется с вами.Вот почему он дает ошибку для того же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...