Ошибка CallKit 7, когда я выполняю вызов в первый раз - PullRequest
0 голосов
/ 14 мая 2019

Я сделал набор для звонков + приложение twilio IOS.Проблема (насколько я могу судить) с ios 12.

Когда я запускаю приложение на устройстве с IOS 11, звонок начинается как обычно.Когда я запускаю приложение на устройстве с IOS 12, когда я пытаюсь сделать первый вызов, я получаю эту ошибку:

  StartCallAction transaction request failed: The operation couldn’t be 
  completed. (com.apple.CallKit.error.requesttransaction error 7.)

Эта ошибка означает следующее: Запрошенная транзакция содержит действия, которые, если они будут выполнены,превышать максимальное количество групп вызовов для провайдера.Но я установил номер callGroupMax равным 1 (я пытался установить его 2,3, но все тот же)

Я нашел только одну ветку с этой ошибкой в ​​Google, но решение не было предоставлено.Пожалуйста, дайте мне подсказку о том, что вызывает эту ошибку, потому что я застрял на этом.

Эта ошибка появляется, только когда первый вызов сделан после новой установки.Затем я могу делать вызовы, как и было задумано.

Это класс callkitManager:

class CallKitManager: NSObject {
    class var shared: CallKitManager {
        struct Static {
            static let instance: CallKitManager = CallKitManager()
        }
        return Static.instance
    }

    fileprivate let callKitProvider: CXProvider

    override init() {
        callKitProvider = CXProvider(configuration: type(of: self).providerConfiguration)
        super.init()
        callKitProvider.setDelegate(self, queue: nil)
    }

    static var providerConfiguration: CXProviderConfiguration {
        let localizedName                      = NSLocalizedString("NAME", comment: "Name of application")
        let configuration                      = CXProviderConfiguration(localizedName: localizedName)
        configuration.supportsVideo            = false
        configuration.maximumCallsPerCallGroup = 1
        configuration.ringtoneSound            = "myringtone"
        configuration.supportedHandleTypes     = [.generic]

        if let callKitIcon = UIImage(named: "callKitIcon") {
            configuration.iconTemplateImageData = callKitIcon.pngData()
        }

        return configuration
    }

Я ожидаю, что вызов соединится с первого раза, но в результате получается, что вperformStartCallAction() метод Я получаю ошибку сверху.

1 Ответ

0 голосов
/ 15 мая 2019

Итак, через 2 дня я это выяснил. Проблема заключалась в том, что я использую callKit как синглтон, что неправильно. Вам нужно «имитировать» синглтон с помощью AppDelegate. Посмотрите это руководство https://www.raywenderlich.com/701-callkit-tutorial-for-ios, посмотрите AppDelegate и узнайте, как это было реализовано.

...