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

Expo/Supabase iOS应用闲置后出现Network Request failed错误排查

iOS平台闲置后Supabase请求失败+生产白屏排查思路

一、Supabase会话相关排查

  • 检查Supabase会话自动刷新机制:确认是否启用autoRefreshToken,闲置前后打印supabase.auth.session()状态,验证会话是否在闲置后失效。
  • 监听会话状态变更:给Supabase auth添加onAuthStateChange监听,当状态变为SIGNED_OUT或TOKEN_REFRESH_ERROR时,记录日志并尝试重新初始化客户端,避免用失效会话发起请求。
  • 校验请求会话携带:检查所有Supabase请求是否正确携带当前会话token,闲置后会话若已清空但未拦截请求,无权限场景可能被iOS网络层判定为请求失败。

二、iOS网络特性相关排查

  • 确认后台网络权限:在app.json的ios.infoPlist中检查是否添加UIBackgroundModes的fetch或remote-notification权限,iOS后台无对应权限会限制网络请求。
  • 验证ATS配置:检查ios.infoPlist里的NSAppTransportSecurity是否允许Supabase域名的HTTPS请求,生产环境证书配置异常可能在闲置后触发ATS校验失败。
  • 测试网络切换场景:iOS闲置后可能切换网络(WiFi→蜂窝),检查应用是否监听网络状态变化,未重新初始化Supabase客户端会导致连接失效。

三、Expo构建与原生层排查

  • 检查EAS Build参数:查看eas.json的iOS构建配置,确认是否启用developmentClient等影响网络的原生设置,生产构建是否遗漏Supabase相关原生依赖。
  • 核对版本兼容性:确认package.json中supabase-js、@supabase/supabase-react-native与Expo SDK的版本匹配度,版本不兼容可能引发闲置后底层网络模块异常。
  • 清除缓存测试:开发环境执行expo r -c清除缓存,生产构建时禁用缓存,避免旧原生配置或bundle残留问题。

四、错误捕获与日志增强

  • 添加全局错误监听:用React Native的ErrorUtils.setGlobalHandler捕获未处理错误,给每个Supabase请求添加.catch(),打印请求URL、headers、会话状态等详细信息。
  • 启用Supabase debug模式:初始化客户端时添加{ debug: true }参数,输出所有网络请求日志,定位闲置后请求的异常点。
  • 生产日志收集:集成Expo Logger等工具,上传生产环境错误信息,重点收集白屏发生时的会话状态、最后一次请求上下文。

五、生产白屏关联排查

  • 确认白屏触发时机:检查白屏是否发生在会话失效后的首次请求失败时,若未处理网络错误导致未捕获异常崩溃,需在全局错误边界中处理异常,避免直接白屏。
  • 验证生产bundle完整性:检查生产构建后的bundle是否存在语法错误或依赖缺失,闲置后重新加载bundle可能因缓存或加载失败导致白屏。
  • 模拟后台唤醒场景:将应用置于后台数小时后唤醒,逐步排查是会话失效引发请求失败,还是原生网络连接问题导致白屏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:50:53