当我离线使用我的应用程序时,我收到这些错误消息(它在我在线时工作):
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 模拟器处于调试模式吗?
这可能是服务器错误,也可能与 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.
另外,基本但值得测试,确保设备连接稳定,不掉线。
当您的设备未连接到互联网时,会抛出此错误,因此您必须确保它已连接到互联网,或者离线缓存的内容被弄乱。
问题是,正如一些评论表明 Firebase 默认启用离线缓存,因此我想说,即使启用离线缓存,它仍然意味着只允许查询或读取数据而不允许写入。这意味着您无法执行任何与将数据写入 firebase 相关的操作,否则应该抛出此错误。