我正在创建一个使用Firebase的Android应用程序。我实际上是Firebase的新手,我正在搜索如何执行以下功能。我无法找到具体的答案或我找到的答案,我无法理解它们。如果有人能回答,我会非常感激。 :)
功能
功能1 :在我的应用程序中,当用户A添加用户B.我希望用户B收到通知,例如,"用户A想要将您添加为朋友。 "如果用户B确认了它,那么只有用户B才能被添加到用户A"朋友列表"反之亦然。如果用户B拒绝,则应该发生相反的情况。此外,当用户B从"朋友列表"中删除用户A时,他们都应该彼此删除" friend = list"并且应该发生上述通知。
功能2 :我希望现在发生同样的事情,但这次我希望用户Z成为用户B的管理员,现在当用户A想要添加用户B时。通知应该转到用户Z以及用户B.但是拒绝它或接受它应该仅取决于用户Z.所以这里是用户A和用户Z之间的。
我想知道我是否应该使用Firebase数据库中的触发器来实现此功能,或者我是否应该使用“安全功能”#39; Firebase。我相信有办法做到这一点。我很感激帮助。 :)
答案 0 :(得分:1)
对于一个问题,这是很多事情。我会把它分解成一些组件并从那里开始。
添加用户/接受/拒绝/删除
root/users/userId
root/userFriends/userId/friendUserId:true
root/userFriendRequests/userIdReceiver/userIdSender:true
使用IndexAdapter列出好友请求。
如果用户接受:
delete /userFriendRequest/userId/theirUserId
create /userFriends/myUserId/theirUserId:true
create /userFriends/theirUserId/myUserId:true
如果用户拒绝:
delete /userFriendRequests/myUserId/theirUserId
如果用户删除了朋友:
delete /userFriends/myUserId/theirUserId
delete /userFriends/theirUserId/myUserId
发送请求/已添加/已删除的通知
为此,您需要使用Firebase管理员的应用服务器。
如果删除朋友:
create root/requestNotificationDeleted/targetUserId/myUserId:true
使用ChildEventListener监听requestNotificationDeleted 如果加上孩子, 你有targetUserId和myUserId。
- Get the User data for myUserId using ListenerForSingleValueEvent
- Construct a notification using FCM, using the user data.
- Send the notification to targetUserId via token.
- Delete the child you just listened to, as the notification was sent.
您需要在数据库中连接userId / tokens,例如您的appserver或可能的firebase。
通过相同的逻辑,您可以处理已接受,请求等的通知。
Firebase安全
您需要设置安全规则以强制没有用户可以直接将自己添加为朋友等。所以请使用它们。