我有一个使用语音识别和Webview的React Native应用程序。在Webview内部,有一个web应用程序播放视频,音频使用AudioContext web API播放。音频和视频都来自一个WebRTC流。
我面临的问题是,我们无法听到任何来自iOS的WebView,但它在Safari浏览器中工作得很好。此外,它在Android上运行良好。语音识别功能在两个平台上都有效。
当我尝试在使用Mac的真实设备上调试Webview控制台时,Safari开发菜单不显示正在运行的Web应用程序。
我已经尝试检查麦克风和相机的权限,它们被授予。我也尝试过使用不同版本的React Native和WebView,但问题仍然存在。
有没有人遇到过类似的问题,你是如何解决的?如有任何建议或指导,我将不胜感激。
<WebView
ref={webviewRef}
originWhitelist={["*"]}
style={{
flex: 1,
height: layout.height,
backgroundColor: "transparent",
...StyleSheet.absoluteFillObject,
top: 60,
}}
source={{
uri: "WEB_APPLICATION_URL",
}}
mediaCapturePermissionGrantType={"grant"}
useWebView2
javaScriptEnabled
javaScriptCanOpenWindowsAutomatically
mediaPlaybackRequiresUserAction={false}
domStorageEnabled
allowsInlineMediaPlayback
allowFileAccessFromFileURLs
allowUniversalAccessFromFileURLs
sharedCookiesEnabled
thirdPartyCookiesEnabled
mixedContentMode="compatibility"
onMessage={handleOnMessageEvent}
/>
<WebView
...
allowsInlineMediaPlayback={true}
originWhitelist={["DOMAINNAME.COM"]}
remoteDebuggingEnabled={true}
...
/>
allowsInlineMediaPlayback允许音频和视频内联播放,而不是全屏播放,这可能会也可能不会解决iOS上的一些音频问题。
remoteDebuggingEnabled将允许您在Safari开发菜单中调试WebView
如果问题仍然存在,你可以尝试使用Web Audio API而不是AudioContext API,因为它在不同的浏览器和平台上得到更广泛的支持。