我正在开发运输应用程序。这个想法是驾驶员可以接受客户已经要求的服务。因此,当驱动程序从客户端获取服务时,它将从Firebase数据库上的“可肛门化服务”中删除该服务,我有一个观察者来监听何时删除了服务,并告知客户端其服务已被使用,这是完美的。
现在想象一下这种情况,驾驶员接受服务,但客户在那一刻没有连接到互联网,因此他不会“听”被移走的孩子,并且每当他再次连接时,他就不会知道已经接受了该服务。我知道firebase提供了“持久性”,但是我不确定在这种特定情况下如何使用它。
这是我的代码的一部分:
RefConductores.child(IDUsuarioActual).child("Servicios Tomados").observe(.childAdded)
{ (snapshot) in
let key = snapshot.value as? String
if key != nil
{
if let i = MisServicios.Instancia.VectorMisServicios.index(where: { $0.Key == key })
{
MisServicios.Instancia.VectorMisServicios.remove(at: i)
Alertas.Instancia.CrearNotificaciones(Tipo: 1)
}
MisServicios.Instancia.CargarMisServicios(IDServicio: key!)
}
}
它运行完美,没有错误。林试图弄清楚的是,当用户没有互联网连接时如何使它工作。当驾驶员(由于驾驶员的移动设备)开始服务时,在客户应用程序中(客户的移动设备中),将执行所显示的代码(如果客户具有正确的互联网连接,这将非常有效)。我的问题是:假设客户端没有Internet连接,他将无法收听“ childAdded”,并且当他再次连接到Internet时,该孩子将已经在“ Servicios Tomados”节点上,但是他永远不会知道它。我该如何解决这个问题?
谢谢大家
答案 0 :(得分:0)
Firebase数据库同步状态,它不一定同步所有状态更改。
如果您想与客户交流乘车的事实,则应存储数据库中乘车的事实。因此,您要(仅)将信息从“可肛门化服务”中移除,而不是将信息存储在“乘车路线”节点中。