当从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
答案 0 :(得分:0)
显然,WKWebView在与您的应用程序不同的进程中运行。这可能意味着,它也有自己的AudioSession,与你的应用程序的AudioSession分开。这就是为什么更改您应用的AudioSession不会影响webView的原因。以及为什么它适用于UIWebView(没有单独的过程)。至少到目前为止我收集的内容......
我的解决方案是让我的应用程序的AudioSession与其他人混合使用:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionMixWithOthers
error:&error];
当然这也有其他含义。您应用的音频将与所有其他应用混合在一起'音频,而不仅仅是你的网页浏览。