React Native安卓端Firestore无法连接(Web端正常)问题咨询
异常原因
- 标准版Firestore v9默认使用gRPC协议进行通信,React Native安卓环境下(包括Expo场景)对gRPC长连接握手的兼容性较差,极易出现10秒超时的问题,而你使用的
firebase/firestore/lite版本默认走REST协议通信,因此不会触发该问题。 - 你当前使用的firebase 9.1.3属于v9早期版本,本身存在多个React Native安卓端的gRPC适配bug,未进行后续修复。
- 标准版Firestore默认开启离线持久化,若初始化时本地存在异常缓存,会优先进入离线模式,直接返回空数据不会发起网络请求。
解决方案
1. 强制禁用gRPC,使用长轮询HTTP协议通信
替换原有firebase配置文件中初始化Firestore的代码,使用initializeFirestore方法替代getFirestore,开启强制长轮询配置:
import { initializeApp } from "firebase/app"; import { getAuth } from "firebase/auth"; import { initializeFirestore } from "firebase/firestore"; // 替换原有导入 const firebaseConfig = { // 原有配置不变 }; const app = initializeApp(firebaseConfig); const auth = getAuth(app) // 替换原有getFirestore(app)代码 const db = initializeFirestore(app, { experimentalForceLongPolling: true, // 核心配置,强制走HTTP长轮询 }); export {auth, db}
90%以上的同场景问题添加该配置后即可正常使用。
2. 排查缓存问题
如果添加上述配置后仍然异常,可临时关闭离线持久化验证是否为缓存冲突导致,修改初始化配置如下:
const db = initializeFirestore(app, { experimentalForceLongPolling: true, persistence: false // 临时关闭离线持久化 });
验证正常后可根据业务需求决定是否重新开启持久化。
3. 升级Firebase依赖版本
你当前使用的9.1.3版本存在较多已知兼容性问题,可将firebase版本升级到v9系列的最新稳定版(如9.23.0),避免原生适配bug的影响,不要直接跨大版本升级到v10,防止引入其他兼容性问题。
4. 检查安卓网络权限
确认安卓项目android/app/src/main/AndroidManifest.xml中已添加网络权限配置:
<uses-permission android:name="android.permission.INTERNET" />
内容的提问来源于stack exchange,提问作者Rotchot Scharp
相关产品推荐
相关产品推荐

