Микрофон не работает с вызовами CallKit VoIP на iOS 13 - PullRequest
0 голосов
/ 26 марта 2020

Я реализовал Web RT C, и он работает отлично. Проблема заключается в том, что, когда приложение не открыто - или не завершено - и когда я получаю вызов, я не могу передать свой голос другому пользователю, пока я могу слушать. Я настроил AVAudioSession перед делегатом вызова CXAnswer.

func configureAudioSession() {
    let sharedSession = AVAudioSession.sharedInstance()
    do {
        try sharedSession.setCategory(AVAudioSession.Category.playAndRecord)
        try sharedSession.setMode(AVAudioSession.Mode.voiceChat)
        try sharedSession.setPreferredIOBufferDuration(TimeInterval(0.005))
        try sharedSession.setPreferredSampleRate(44100.0)
    } catch {
        debugPrint("Failed to configure `AVAudioSession`")
}
func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {

    guard let call = ProviderDelegate.callManager.callWithUUID(action.callUUID) else {
        action.fail()
        return
    }

    configureAudioSession()

    call.answer { error in
        if let error = error {
            print("ERROR: failed to answer: \(error.localizedDescription)")
        }
        action.fulfill()
    }
}

1 Ответ

0 голосов
/ 26 марта 2020

Для приложений, скомпилированных с iOS13 SDK (ie Xcode 11), это больше невозможно: приложения должны отображать вызов CallKit сразу же после получения уведомления об уведомлении PushKit VoIP.

Вкл iOS 13, Apple теперь требует, чтобы все уведомления VoIP pu sh передавались в инфраструктуру CallKit как новый вызов. Если уведомление VoIP pu sh не сообщается в CallKit в течение назначенного временного окна, iOS завершит работу приложения. Если в CallKit не будет сообщено о достаточном количестве уведомлений VoIP pu sh, Apple прекратит отправлять уведомления VoIP pu sh в приложение. В этом случае клиенту потребуется переустановить приложение, чтобы снова получать уведомления VoIP pu sh.

Ответить с цитатой

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