Firebase当我从Wifi切换到LTE时,Firebase失去连接并且永远不会重新连接



我正在测试我的iOS应用程序并不断获取数据,并决定在应用程序仍打开时断开Wifi并在LTE上测试它。在我的调试日志中,我看到这个错误"[FirebaseFirestore][I- fst000001] WatchStream (10d119db8)流错误:'不可用:网络连接改变'">正在打印。获取数据不再工作,不是因为我的LTE太慢。我证明了这一点,因为如果我杀死应用程序并重新打开它(测试了很多次),它似乎可以重新获得连接和获取数据。我似乎在网上找不到关于如何重新连接/刷新连接到像这样的网络连接变化的Firestore的任何地方。有人有什么想法吗?

您提到的错误消息清楚地说明了连接更改的问题,即Firebase应用程序在此期间加载数据和切换网络时无法跟上。尽管Firebase应用程序会自动处理暂时的网络中断。离线时可以访问缓存的数据,当网络连接恢复时,Firebase会重新发送任何写操作。向Firestore客户端添加侦听器,以检测连接状态何时发生变化。然后可以使用Firestore客户端的reconnect()方法尝试重新建立到Firestore服务器的连接。另外,你还可以使用onReconnect()方法注册一个回调函数,当Firestore客户端成功重新连接到Firestore服务器时,将调用该回调函数。

同时查看以下文档以供参考:

  • 可以写入firebase直到重新启动wifi连接
  • Firebase firestore使用两个不同的实例
  • 创建ios应用程序可访问的网络监听器
  • 如何检测网络连接缺失
  • firestore中的事务如何出错

经过更多的研究,我了解到Firestore试图自己重建连接。我测试了我的应用中的其他功能,看看这是不是真的。其他功能正常。

所以我决定看看我的代码的其他地方,发现我没有正确地处理一个条件,我的数据在重新加载表之前没有被清除。这是发生我想由于自动Firestore数据缓存丢失连接时?为了重新加载表,需要首先清除数据。所以这是我代码中的一个bug,与网络连接完全无关。

最新更新