2014-11-26 2 views
7

Я не могу переопределить категорию или порт AVAudioSession, когда звук воспроизводится из WKWebView. Тот же код отлично работает при использовании обычного UIWebView.Настройка категории AVAudioSession не влияет на звук из WKWebView

AVAudioSession *session = [AVAudioSession sharedInstance]; 
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&err]; 

Я также попытался активировать sharedInstance, как это, но это не помогло:

[session setActive: YES error: nil]; 

Приведенный выше код не оказывает никакого влияния на звук, приходящий из WKWebView. Я нашел некоторые сообщения в Twitter о том, что iOS 8.1 смешивает аудио WKWebView с фоновым звуком приложения, но я не мог найти источник этого. Смотрите эту нить нитки для справки: https://twitter.com/marcoarment/status/530881842900373504

+0

Вы хотите, чтобы приложение продолжало воспроизводить аудио в Интернете на фоне? – dcorbatta

+0

Нет, я хочу переключить звук для воспроизведения с динамика на динамик и обратно. –

+0

Привет @LylePratt, попробуйте проверить возможную ошибку в '-setActive: error:', если возникает ошибка, указатель устанавливается на объект NSError, который описывает ошибку. Возможно ли, что в настоящее время запущены другие звуковые объекты (такие как очереди, конвертеры, проигрыватели или рекордеры)? – bl4stwave

ответ

0

Таким образом, очевидно, WKWebView запускается в отдельном процессе из вашего приложения. Это, вероятно, означает, что у него есть собственный AudioSession отдельно от AudioSession вашего приложения. Вот почему изменения в AudioSession вашего приложения не повлияют на веб-просмотр. А также почему он работает с UIWebView (без отдельного процесса). По крайней мере, это то, что я собрал до сих пор ...

Решение для меня было, чтобы AudioSession моего приложения смешивать с другими:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord 
           withOptions:AVAudioSessionCategoryOptionMixWithOthers 
             error:&error]; 

Конечно, это имеет и другие последствия, а также. Звук вашего приложения будет смешан со звуком всех других приложений, а не только с вашим веб-просмотром.

+1

Привет, Я пытаюсь воспроизвести js-звук из wkwebview, и он НЕ должен перестать воспроизводить фоновую музыку. Но я не могу заставить его работать, любая идея? – user2673664