swift firebase onDisconnectRemoveValue关闭wifi时不会触发

时间:2019-05-18 23:17:47

标签: ios swift firebase

当他们的应用程序意外失去连接时,我希望能够从我的应用程序的实时Firebase数据库中删除连接值。根据我已经尝试过的方法,这似乎是不可能的。

我尝试使用“ goOffline”功能正确关闭套接字,因为据我所知,当您关闭wifi时,它无法正确关闭。

func connect() {
    let connectionsRef = self.rootRef.child("connections")
    AF.request("https://projectname.cloudfunctions.net/Connect").response { response in
        if response.data != nil {
            if self.visiblename != nil {
                connectionsRef.observeSingleEvent(of: .value, with: { snapshot in
                    for value in JSON(snapshot.value!).arrayValue {
                        if value["Address"].string! == self.visiblename {
                            let connectionRef = connectionsRef.child(String(value["Index"].int!))
                            connectionRef.keepSynced(true)
                            connectionRef.onDisconnectRemoveValue()
                        }
                    }
                })
            }
        }
    }
}

self.reachability.whenUnreachable = { _ in
    Database.database().goOffline()
}
self.reachability.whenReachable = { _ in
    Database.database().goOnline()
}

do {
    try self.reachability.startNotifier()
} catch {}

它会在大约60秒后自动删除该值,但我需要我的应用程序能够处理任何互联网中断并迅速删除连接值。

此外,如果没有可用的方法在客户端关闭其wifi时从客户端删除该值。有没有办法在服务器本身上检测与服务器的断开连接?我尝试将date.getTime()与另一个date.getTime()变量进行比较,当您调用Connect请求时,它将更新该变量。然后服务器进行监视,但是它似乎没有工作,因为由于某种原因,它在客户端断开连接后就立即停止监视该变量,并且没有时间实现它。我认为这是因为服务器基于云功能,并且在没有客户端调用该服务器时没有理由运行它。

0 个答案:

没有答案