Неизвестный выбранный источник данных для Port Speaker (тип: Speaker)? - PullRequest
0 голосов
/ 03 октября 2018

Я получаю это сообщение в журнале кошек несколько раз:

[avas] AVAudioSessionPortImpl.mm:56:ValidateRequiredFields: Unknown selected data source for Port Speaker (type: Speaker)

Я использую этот код для воспроизведения фоновой музыки:

  let path = Bundle.main.path(forResource: fileName, ofType:"mp3")!
        let url = URL(fileURLWithPath: path)

        do {
                let sound = try AVAudioPlayer(contentsOf: url)
                self.player = sound
                sound.prepareToPlay()
                sound.volume = 0.05
                sound.numberOfLoops = loops
                sound.play()
        } catch {
            print("[PLAY SOUND][DELEGATE] error loading file -> \(fileName)")
        }

Я провел исследование и нашел похожиепроблемы, поэтому я добавил аудио категорию в viewdidload:

  do {
            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, mode: AVAudioSessionModeDefault)
            try AVAudioSession.sharedInstance().setActive(true)
        } catch {
            print(error)
        }

после того, как я добавил вышеупомянутый код, фоновая музыка играет, даже если телефон в беззвучном режиме!и сообщение отладчика для Unknown selected data source for Port Speaker (type: Speaker) все еще показывает

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Начиная с Swift 4.2, я изначально настроил его так:

try AVAudioSession.sharedInstance().setCategory(.playAndRecord, mode: .default, options: [])

Мне фактически не нужны были возможности записи, поэтому я изменил его на

try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])

Это удаленоошибка (и это было единственное, что я мог сделать, чтобы устранить ошибку).Однако, если вам также нужны возможности записи, очевидно, это не сработает.

0 голосов
/ 19 октября 2018

Сообщение Unknown selected data source for Port Speaker, похоже, является проблемой с iOS 12. По-видимому, появляется некоторое предупреждение, даже если код работает.Возможно, Apple исправит это в ближайшее время, поэтому, возможно, сейчас вы можете проигнорировать это предупреждение, и как только они найдут решение, вы сможете отключить его.

Источник: Ошибки AVAudioSession в iOS 12

Что касается фоновой музыки, воспроизводимой в беззвучном режиме, то это из-за выбранного вами AVAudioSessionCategory.В соответствии с документацией AVAudioSessionCategoryPlayback ( source ):

При использовании этой категории аудио в вашем приложении продолжает работать, если для переключателя Silent установлено значение Silent или когда экран блокируется.

В зависимости от стиля вашего приложения, возможно, вы можете использовать AVAudioSessionCategorySoloAmbient ( source ):

Звук отключается при блокировке экрана иТихий переключатель (на iPhone он называется «Звонок / Тихий»).

Или, может быть, AVAudioSessionCategoryAmbient ( source ):

Эта категория такжеподходит для приложений в стиле «подыграй», таких как виртуальное пианино, на котором пользователь играет во время воспроизведения приложения «Музыка».Когда вы используете эту категорию, звук из других приложений смешивается с вашим аудио.Ваш звук заглушается блокировкой экрана и переключателем Silent (так называемый переключатель Ring / Silent на iPhone).

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