SWIFT - 如何检测 Firestore 连接错误/离线连接

SWIFT - How to detect Firestore connection errors / offline connection

当用户将互联网连接设置为离线时,我在 Xcode 控制台收到以下错误消息:

7.8.0 - [Firebase/Firestore][I-FST000001] WriteStream (11ed16098) Stream error: 'Unavailable: DNS resolution failed'

但是如何以编程方式检测连接状态?我在 Firestore 文档中找不到关于该主题的任何文档?

通常情况下,在此状态下最好监控设备的网络连接状态,而不是寻找特定的错误。它不会在 Firebase 失败时告诉您,但会在设备离线时告诉您,因此您可以预料到失败。您可以使用 NWPathMonitor to do that. Here 是实现示例。

更好的选择是启用 offline capabilities of Firebase,这让您不用担心用户离线,并让 Firebase 处理同步。

Firestore 不会生成网络连接错误,因为 Firestore 可以脱机,因此它会在连接 returns 时重试写入(一些写入,不是全部)。因此,您必须独立于 Firestore 确定网络可用性。

但是,如果您想要一种更传统的方法来完成此任务,即在没有连接时失败并且在连接时不会自动重试 returns,您可以在 Firestore 事务中执行它,因为它们是没有缓存在本地。然而,交易确实带有自动重试,但不是出于连接原因。当事务中涉及的文档在事务完成之前被(其他客户端)修改时,事务可以自动重试以保证它们是原子的。