从WKWebView播放音频时,我似乎无法覆盖AVAudioSession类别或端口。使用普通的UIWebView时,相同的代码可以完美地工作。

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

我也尝试过像这样激活sharedInstance,但没有帮助:
[session setActive: YES error: nil];

上面的代码对来自WKWebView的音频没有影响。我确实在Twitter上发现了一些报告,称iOS 8.1正在将WKWebView音频与后台应用程序音频混合在一起,但我找不到该源。请参阅此Twitter线程以供引用:https://twitter.com/marcoarment/status/530881842900373504

最佳答案

因此,显然WKWebView与您的应用程序是在独立的进程中运行的。这可能意味着,它也有自己的AudioSession与应用程序的AudioSession分开。这就是为什么更改应用程序的AudioSession不会影响webView的原因。以及为什么它可以与UIWebView一起使用(没有单独的过程)。至少那是我到目前为止收集到的...

对我来说,解决方案是允许我的应用程序的AudioSession与其他人混合使用:

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

当然,这还具有其他含义。您的应用程序的音频将与所有其他应用程序的音频混合在一起,而不仅仅是Webview的音频。

关于ios - 设置AVAudioSession类别对WKWebView的声音没有影响,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27152211/

10-13 04:13