React Native Webview文件未在ios设备中加载,但在模拟器中加载良好

时间:2019-10-04 07:50:35

标签: react-native

我将本地文件存储在xcode中,文件正在模拟器中加载,而没有在ios设备中加载

我使用react-native-webview版本5.0.1,在我的webview中,im通过{uri:'ICF-Package / ICFPackage / index.html'}

<WebView
                source={Platform.OS === 'ios' ? 
                {uri: 'ICF-Package/ICFPackage/index.html'} :
                { uri: 'file:///android_asset/ICF-Package/ICFPackage/index.html' }
              }
                    ref={(webView) => this.webView = webView}
                    originWhitelist={'["*"]'}
                    javaScriptEnabled={true}
                    domStorageEnabled={true}
                    startInLoadingState={true}
                    useWebKit = {true}
                    //scalesPageToFit={true}
                    scrollEnabled={false}
                    onLoad={() => this.sendPostMessage()}
                    allowFileAccess={true}
                    allowUniversalAccessFromFileURLs={true}
                    allowFileAccessFromFileURLs={true}
                    allowsInlineMediaPlayback={true}
                    mediaPlaybackRequiresUserAction={true}
                 />

我没有收到任何错误消息,但文件未在真实设备中加载

1 个答案:

答案 0 :(得分:1)

也许可以在您的设备上运行https://stackoverflow.com/a/48572797/1256697

来帮助您更深入地调试WebView。

但是对于本地文件而言,解决方法很少,您可以尝试使用'html'参数代替IOS的'uri'参数:

const myHTML = require('./ICF-Package/ICFPackage/index.html');
<WebView
  source={PolicyHTML}
  style={{flex: 1}}
 />

另请参阅:https://aboutreact.com/load-local-html-file-url-using-react-native-webview/

但是也许为IOS解决它的最干净的方法是将html文件的副本放在Project > resources > index.html中,并将其链接到您的Webview:

<WebView
  style={{flex: 1}}
  originWhitelist={['*']}
  source={'./resources/index.html'}
  javaScriptEnabled={true}
  domStorageEnabled={true}
/>