2014-11-26 14 views
7

Non riesco a sovrascrivere la categoria o la porta AVAudioSession quando si riproduce l'audio da un WKWebView. Lo stesso codice funziona perfettamente quando si utilizza un UIWebView normale.Impostazione della categoria AVAudioSession non ha alcun effetto sul suono da WKWebView

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

Ho anche provato l'attivazione del sharedInstance come questo, ma non ha aiutato:

[session setActive: YES error: nil]; 

Il codice di cui sopra non ha alcun effetto sulla audio proveniente da un WKWebView. Ho trovato alcuni rapporti su Twitter che iOS 8.1 sta mixando l'audio WKWebView con l'audio dell'app in background, ma non sono riuscito a trovare la fonte per questo. Vedere questo thread Twitter per riferimento: https://twitter.com/marcoarment/status/530881842900373504

+0

Vuoi che l'app continui a riprodurre l'audio del Web sullo sfondo? – dcorbatta

+0

No, voglio cambiare l'audio per riprodurre dall'altoparlante all'auricolare e viceversa. –

+0

Ciao @LylePratt, prova a verificare l'errore possibile in '-setActive: error:' se si verifica un errore, il puntatore viene impostato su un oggetto NSError che descrive l'errore. È possibile che altri oggetti audio (come code, convertitori, lettori o registratori) siano attualmente in esecuzione? – bl4stwave

risposta

0

Quindi apparentemente WKWebView viene eseguito in un processo separato dalla tua app. Il che probabilmente significa che ha una propria AudioSession separata dalla AudioSession della tua app. Ecco perché le modifiche alla AudioSession della tua app non influiranno sulla visualizzazione web. E anche perché funziona con UIWebView (nessun processo separato). Almeno questo è quello che ho raccolto finora ...

La soluzione per me è stato quello di consentire AudioSession di mia app di mescolarsi con gli altri:

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

Naturalmente questo ha altre implicazioni pure. L'audio della tua app verrà mixato con l'audio di tutte le altre app, non solo con la tua webview.

+1

Ciao, sto provando a riprodurre un suono js da wkwebview e NON dovrebbe smettere di riprodurre la musica di sottofondo. Ma non riesco a farlo funzionare, qualche idea? – user2673664