设置AVAudioSession类别对WKWebView的声音没有影响

时间:2014-11-26 14:54:54

标签: ios cordova cordova-plugins avaudiosession wkwebview

当从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

1 个答案:

答案 0 :(得分:0)

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

我的解决方案是让我的应用程序的AudioSession与其他人混合使用:

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

当然这也有其他含义。您应用的音频将与所有其他应用混合在一起'音频,而不仅仅是你的网页浏览。