如何在Swift中使用条件触发Firebase中的通知?

时间:2017-01-19 20:46:59

标签: firebase swift3 firebase-realtime-database ios10

我有2个应用,骑手和驱动程序(在Firebase中的同一个项目中)。如果在Firebase中设置推送通知,我该如何设置条件?例如,如果骑车者请求乘车,则警告建议驾驶员接受或取消。如果驱动程序接受请求,则会将子项添加到数据库,如ref = FIRDatabase.database().reference()

ref.child("riders").child("RydeAccepted").child(usersname).setValue(data)

如何进行设置以便在发生这种情况时,会向骑手应用发送通知,说明已添加或删除了请求?

任何帮助都将不胜感激。

1 个答案:

答案 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)与请求骑行的骑手的位置进行比较。