You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo WebView在iOS端空白但Android正常显示的问题求助

Expo项目iOS端WebView空白问题解决方案

针对你遇到的Expo SDK 51项目中WebView在Android正常、iOS空白的问题,以下是几个有效的排查和解决方向:

1. 替换为Expo官方WebView组件

在Expo managed workflow中,社区版react-native-webview可能与SDK存在兼容问题,建议改用Expo官方维护的expo-webview:

  • 卸载社区组件:
    npm uninstall react-native-webview
    # 或 yarn remove react-native-webview
    
  • 安装expo-webview:
    npx expo install expo-webview
    
  • 修改代码导入:
    import React from 'react';
    import { WebView } from 'expo-webview';
    
    export default function App() {
      return (
        <WebView
          source={{ uri: 'https://example.com' }}
          style={{ flex: 1 }}
        />
      );
    }
    

2. 补充iOS专属配置

即使使用HTTPS链接,仍需确保Info.plist中有必要配置:
在app.json的ios.infoPlist中添加:

"ios": {
  "infoPlist": {
    "NSAllowsArbitraryLoadsInWebContent": true,
    "WKAppBoundDomains": ["example.com"]
  }
}
  • NSAllowsArbitraryLoadsInWebContent:允许WebView加载任意HTTPS/HTTP资源,避免部分内嵌资源加载失败
  • WKAppBoundDomains:若网页需与App交互,需将目标域名添加到白名单

3. 监听WebView加载错误

添加加载状态回调捕获潜在错误,明确空白原因:

<WebView
  source={{ uri: 'https://example.com' }}
  style={{ flex: 1 }}
  onError={(syntheticEvent) => {
    const { nativeEvent } = syntheticEvent;
    console.error('WebView加载错误:', nativeEvent);
  }}
  onHttpError={(syntheticEvent) => {
    const { nativeEvent } = syntheticEvent;
    console.error('WebView HTTP错误:', nativeEvent.statusCode, nativeEvent.url);
  }}
  onLoad={() => console.log('WebView加载完成')}
  onLoadStart={() => console.log('WebView开始加载')}
/>

通过日志可排查是加载失败、资源拦截还是其他问题。

4. 排查模拟器网络与环境

  • 打开iOS模拟器的Safari,访问https://example.com,确认网络正常
  • 重置模拟器:点击模拟器菜单Device > Erase All Content and Settings,清除缓存后重新测试
  • 清除Expo缓存:执行npx expo start -c重启项目

5. 检查版本兼容性

Expo SDK 51推荐的expo-webview版本为~13.8.6,可执行npx expo install --check检查依赖版本匹配度,确保组件与SDK版本兼容。


内容的提问来源于stack exchange,提问作者Ebrardev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:12:46