音频不能在iOS上工作,在React Native应用程序中使用Webview和AudioContext API, We



我有一个使用语音识别和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,因为它在不同的浏览器和平台上得到更广泛的支持。

最新更新