Я выполнил iOS Быстрый запуск Twilio Voice .
Но, хотя экран входящего вызова использует пользовательский интерфейс по умолчанию iOS (до того, как пользователь примет вызов), я могу Не могу найти способ использовать вызов экрана по умолчанию iOS. Что происходит, так это то, что он действительно появляется менее чем на секунду, затем он исчезает, и мне нужно вместо этого использовать свой собственный пользовательский интерфейс.
Я нашел способ получить этот пользовательский интерфейс, поместив приложение в фоновый и выбрав его снова. Затем этот экран появляется поверх приложения, пока пользователь не повесит трубку.
Вот экран по умолчанию, о котором я говорю:
Итак, есть ли способ получить этот пользовательский интерфейс с помощью 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
}
}
Спасибо за помощь!