我有2个应用,骑手和驱动程序(在Firebase中的同一个项目中)。如果在Firebase中设置推送通知,我该如何设置条件?例如,如果骑车者请求乘车,则警告建议驾驶员接受或取消。如果驱动程序接受请求,则会将子项添加到数据库,如ref = FIRDatabase.database().reference()
:
ref.child("riders").child("RydeAccepted").child(usersname).setValue(data)
如何进行设置以便在发生这种情况时,会向骑手应用发送通知,说明已添加或删除了请求?
任何帮助都将不胜感激。
答案 0 :(得分:1)
这种可能的结构可能有助于简化问题中的结构
drivers
-Yuiu9jasjdasd
name: "driver 1"
-Huuajwiojiejw
name: "driver 2"
riders
-Yij99js9skos
name: "rider 1"
-Y090jssiisss
name: "rider 2"
rider_driver_requests
-Yuljai8jsid99jsds
requested_by_rider: "-Yij99js9skos"
for_driver: "-Yuiu9jasjdasd"
driver_response: "Pending"
-Y99mskksmnjndjnsj
requested_by_rider: "-Y090jssiisss"
for_driver: "-Huuajwiojiejw"
driver_response: "Accepted"
在上面的结构中,rider_1已经请求来自driver_1,但driver_1尚未响应(当他们这样做时,driver_response将从挂起更改为拒绝或接受)。
rider_2要求从司机2开始骑行,而司机2已经接受了。
骑手和司机都在观察rider_driver_requests节点,并且每个节点都会收到有关该节点中添加,更改或删除事件的通知。
在你说这个节点会变得庞大之前!',我之所以如此构建它的原因是将来,骑手可能没有请求特定的驱动程序 - 他们可能正在请求一个地区的司机。
因此,该区域内的所有驾驶员都希望收到请求的通知,这样他们就可以观察该节点,并将他们当前的位置(例如,长,lat)与请求骑行的骑手的位置进行比较。