离线 Firestore:流已关闭,状态为:Status{code=UNAVAILABLE

问题描述 投票:0回答:2

当我离线使用我的应用程序时,我收到这些错误消息(它在我在线时工作):

W/Firestore(23675): (24.0.1) [WatchStream]: (da69cba) 流已关闭 状态:Status{code=UNAVAILABLE,description=流结束或 IOException,原因=null}。 W/Firestore(23675): (24.0.1) [WriteStream]: (9780b0d) 流已关闭,状态为:Status{code=UNAVAILABLE, 描述=流结束或 IOException,原因=null}。 W/Firestore(23675): (24.0.1) [WriteStream]: (9780b0d) 流已关闭 状态:Status{code=UNAVAILABLE,description=无法解析 主机 firestore.googleapis.com,原因=java.lang.RuntimeException: java.net.UnknownHostException:无法解析主机 “firestore.googleapis.com”:没有与主机名关联的地址

这是我的 main.dart :

  await Firebase.initializeApp();
  FirebaseFirestore.instance.settings = Settings(cacheSizeBytes: Settings.CACHE_SIZE_UNLIMITED);
  FirebaseFirestore.instance.settings = Settings(persistenceEnabled: true);

我错过了什么? (我有最新版本的flutter和cloud_firestore包)

是因为我使用 Android 模拟器处于调试模式吗?

firebase flutter google-cloud-firestore offline
2个回答
1
投票

这可能是服务器错误,也可能与 Github 上的此问题有关。

如您所见,Github 上的问题仍然处于开放状态并正在调查中,如果您可以更新到最新版本的 flutter。

对于

UNAVAILABLE
Firebase ErrorCode 文档说:

UNAVAILABLE (HTTP error code = 503) The server is overloaded.   The server couldn't process the request in time. Retry the same request, but you must:
- Honor the Retry-After header if it is included in the response from the FCM Connection Server.
- Implement exponential back-off in your retry mechanism. (e.g. if you waited one second before the first retry, wait at least two second before the next one, then 4 seconds and so on). If you're sending multiple messages, delay each one independently by an additional random amount to avoid issuing a new request for all messages at the same time. Senders that cause problems risk being denylisted.

查看此处以了解有关错误代码的更多信息

另外,基本但值得测试,确保设备连接稳定,不掉线。


0
投票

当您的设备未连接到互联网时,会抛出此错误,因此您必须确保它已连接到互联网,或者离线缓存的内容被弄乱。

问题是,正如一些评论表明 Firebase 默认启用离线缓存,因此我想说,即使启用离线缓存,它仍然意味着只允许查询或读取数据而不允许写入。这意味着您无法执行任何与将数据写入 firebase 相关的操作,否则应该抛出此错误。

© www.soinside.com 2019 - 2024. All rights reserved.