10

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

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

4

1 回答 1

2

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

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

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

当然,这也有其他含义。您的应用程序的音频将与所有其他应用程序的音频混合,而不仅仅是您的网络视图。

于 2016-10-14T13:59:56.150 回答