当从 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
显然,WKWebView 在与您的应用程序不同的进程中运行。这可能意味着,它也有自己的 AudioSession 与您应用程序的 AudioSession 分开。这就是为什么对应用程序的 AudioSession 的更改不会影响 webView。以及为什么它与 UIWebView 一起使用(没有单独的过程)。至少这是我到目前为止收集到的......
我的解决方案是允许我的应用程序的 AudioSession 与其他应用程序混合:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionMixWithOthers
error:&error];
当然,这还有其他含义。您的应用程序的音频将与所有其他应用程序的音频混合,而不仅仅是您的网络视图的音频。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)