TwilioVoice + iOS: Могу ли я использовать вызов экрана системы при выполнении / получении вызова? - PullRequest
0 голосов
/ 29 мая 2020

Я выполнил iOS Быстрый запуск Twilio Voice .

Но, хотя экран входящего вызова использует пользовательский интерфейс по умолчанию iOS (до того, как пользователь примет вызов), я могу Не могу найти способ использовать вызов экрана по умолчанию iOS. Что происходит, так это то, что он действительно появляется менее чем на секунду, затем он исчезает, и мне нужно вместо этого использовать свой собственный пользовательский интерфейс.

Я нашел способ получить этот пользовательский интерфейс, поместив приложение в фоновый и выбрав его снова. Затем этот экран появляется поверх приложения, пока пользователь не повесит трубку.

Вот экран по умолчанию, о котором я говорю:

enter image description here

Итак, есть ли способ получить этот пользовательский интерфейс с помощью Twilio Voice?

Следуя руководству, мне сначала нужно показать свой пользовательский интерфейс в provider(_ provider: CXProvider, perform action: CXAnswerCallAction) CallKit делегате:

func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {
    self.audioDevice.isEnabled = false
    self.audioDevice.block()
    self.performAnswerVoiceCall(uuid: action.callUUID) { success in
        if success {
            action.fulfill()
        } else {
            action.fail()
        }
    }
    action.fulfill()
}

func performAnswerVoiceCall(uuid: UUID, completionHandler: @escaping (Bool) -> Void) {
    guard let callInvite = activeCallInvites[uuid.uuidString] else { //// 1
        print("No CallInvite matches the UUID")
        return
    }
    let acceptOptions = TVOAcceptOptions(callInvite: callInvite) { builder in
        builder.uuid = callInvite.uuid
    }
    let call = callInvite.accept(with: acceptOptions, delegate: self)
    self.activeCall = call
    self.activeCalls[call.uuid.uuidString] = call
    // Here I show my custom UI
    callKitCompletionCallback = completionHandler
    self.activeCallInvites.removeValue(forKey: uuid.uuidString)
    guard #available(iOS 13, *) else {
        self.incomingPushHandled()
        return
    }
}

Спасибо за помощь!

...