Приложение не перенаправляет звук на наушники (изначально) - PullRequest
0 голосов
/ 25 октября 2019

У меня есть приложение VOIP, реализованное с использованием Sinch SDK и CallKit. Все работает нормально, за исключением случаев, когда к устройству подключены наушники. В последнем случае, когда начинается звонок, звук все еще направляется через основной динамик устройства. Если я отключу и снова подключу наушники - во время разговора - тогда звук будет правильно направлен на наушники.

Все, что я делаю, это

func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {
    guard let c = self.currentCall else {
        action.fail()
        return
    }

    c.answer()

    self.communicationClient.audioController().configureAudioSessionForCallKitCall()
    action.fulfill()
}

Разве это не должно быть принятозаботиться автоматически ОС?

1 Ответ

1 голос
/ 29 октября 2019

Похоже, Sinch SDK перекрывает выходной аудиопорт. Попробуйте запустить этот код сразу после настройки аудио-сеанса:

do {
    try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none)
} catch {
    print("OverrideOutputAudioPort failed: \(error)")
}

Если он не работает, попробуйте настроить аудио-сеанс самостоятельно, вместо того, чтобы полагаться на Sinch SDK, если это возможно. Замените configureAudioSessionForCallKitCall вызов чем-то вроде этого:

let session = AVAudioSession.sharedInstance()
do {
    try session.setCategory(
        .playAndRecord,
        mode: .voiceChat,
        options: [.allowBluetooth, .allowBluetoothA2DP])
    try session.setActive(true)
} catch {
    print("Unable to activate audio session: \(error)")
}
...