离线支持
编辑页面
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
当你的应用遇到互联网连接状况不佳或完全不可用的情况时,它仍然需要尽可能正常工作。本指南提供了更多信息和最佳实践,帮助你在设备离线时提供出色的体验。
在后台加载 JS 更新
当你为应用 发布 一个更新时,用户会在更新中收到你代码的新版本。新版本会在应用下次启动时,或者你下次调用 Updates.reload() 时下载。此行为也适用于用户第一次打开你的应用时。
Expo 提供了多种下载 JS 的行为方式。它可以在新 JS 下载完成之前用 启动画面 或 AppLoading 组件阻塞 UI,或者也可以立即显示旧版本的 JS,并在后台下载更新。前一种方式更适合用户必须始终拥有最新版本的情况;后一种方式更适合互联网连接较差、需要立刻显示内容的情况。
若要强制 JS 更新在后台运行(而不是在应用启动时同步检查并下载),请在 app.json 中将 updates.fallbackToCacheTimeout 设置为 0。你还可以监听新版本何时完成下载。有关更多信息,请参阅 配置更新。
在下载后缓存你的资源
默认情况下,当你发布应用更新时,所有资源(图片、字体等)都会上传到 Expo 的 CDN。一旦它们被下载,你就可以将其缓存,这样就不需要再次下载。如果你发布了更改,缓存将失效,并下载变更后的版本。
将资源打包到你的独立二进制文件中
Expo 可以在构建过程中将资源打包进你的独立二进制文件中,这样即使用户以前从未运行过你的应用,它们也会立即可用。如果出现以下情况,这一点很重要:
- 用户第一次打开你的应用时可能没有网络,或
- 你的应用首屏运行正常依赖于相当数量的资源。
EAS Build
使用 eas build 时,构建过程中不会运行 expo publish,因此 assetBundlePatterns 键在这种情况下不适用。相反,代码库中任何显式 require() 的资源(包括依赖中的资源)都会被打包进你的二进制文件。这与直接使用 Xcode 或 Android Studio 构建的常规 React Native 应用行为相同。
经典构建
要将资源打包到二进制文件中,请在 app.json 中使用 assetBundlePatterns 键,提供项目目录中的路径列表:
路径与给定模式匹配的图片将在你下次运行 expo build 时被打包进原生二进制文件中。
监听网络可用性的变化
React Native 社区创建了 @react-native-community/netinfo 包,它会在你的设备可达性发生变化时通知你。如果你注意到当前没有可用连接,你可能希望更改 UI(例如,显示横幅,或禁用某些功能)。