Две одновременные AVAudioSessions - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть приложение, которое использует WebRTC для голосового чата.После долгих проблем я пришел к выводу, что всякий раз, когда я получаю поток, WebRTC будет устанавливать для общего экземпляра AVAudioSession следующее: try AVAudioSession.sharedInstance().setCategory(.playAndRecord, mode: .voiceChat, options: .allowBluetooth)

Я хочу воспроизвести аудиофайл (длительностью около секунды) и если я просто загрузлю его и сделаю player.play(), он не будет играть.Если я попытаюсь установить категорию на .playback или что-нибудь, что будет иметь смысл для аудиофайла, аудио потока прекратит воспроизводиться.

Я также попытался создать новый экземпляр AVAudioSession, но после воспроизведения аудиофайлааудио потока остановится.

Можно ли воспроизвести аудиофайл, не затрагивая аудио потока и его конфигурацию?

Вот полный код

    private func playTapSound() {
        guard let url = Bundle.main.url(forResource: App.AudioFile.emojiTapSound, withExtension: "mp3") else { return }

        do {
            let audioSesson = AVAudioSession()
            try audioSesson.setCategory(.playback, mode: .default)
            try audioSesson.setActive(true)

            audioPlayer = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)

            guard let player = audioPlayer else { return }

            player.play()

        } catch let error {
            LogManager.shared.print("Error - playing emoji tap audio -", error.localizedDescription, type: [.Error, .Audio])
        }
//        var chime1URL: NSURL?
//        var chime1ID: SystemSoundID = 0
//        let filePath = Bundle.main.path(forResource: "emojiTapSound", ofType: "wav")
//        chime1URL = NSURL(fileURLWithPath: filePath!)
//        AudioServicesCreateSystemSoundID(chime1URL!, &chime1ID)
//        AudioServicesPlaySystemSound(0)
    }

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

...