【问题标题】:how do I make a device connect to several device where one device act as a admin? [closed]如何让一个设备连接到多个设备,其中一个设备充当管理员? [关闭]
【发布时间】:2017-05-25 10:41:21
【问题描述】:

我想创建一个任何人都可以创建集线器的应用。创建集线器的人现在是集线器的管理员。他可以搜索 YouTube 视频并将其添加到播放列表中。其他用户可以搜索不同的集线器并连接到它,他们将看到管理员创建的相同播放列表,并且相同的视频正在连接到同一集线器的所有设备上播放。问题是有一个投票系统,用户可以投票给特定的播放列表中的视频,下一个播放票数最高的视频

谢谢,我想使用 firebase 来实现这一点。任何人都可以指导我如何实现这一点吗?我知道播放列表必须发送到其他用户也可以看到的数据库。我只需要知道如何实施它的步骤或想法,任何链接或建议或其他替代方案都非常感谢?

【问题讨论】:

  • 什么是集线器?
  • 这只是应用程序中的一个概念。这就像创建一个创建者是管理员的组
  • 你应该告诉更多。言归正传。一个字都听不懂。
  • 它应该是一个组,不同的用户可以连接到这个组。该组的主要目标是每个人都将看到相同的 youtube 视频,但只有管理员可以将视频添加到播放列表中,其中一首歌曲结束并且播放列表中的下一首歌曲开始。每当管理员添加到播放列表时,应在每个连接的设备中看到更新的播放列表。我是菜鸟,请指导我如何实现它。任何链接、想法或替代方案都可以

标签: android firebase firebase-realtime-database firebase-cloud-messaging


【解决方案1】:

当管理员创建 HUB 时,您需要创建:

1. AdminHubDB :
     -$hubId1 :
       - adminId : $userid1
     -$hubId2 :
       - adminId : $userid2

2. MemberHubDB :
     -$hubId1 :
        - $userid1 : true
     -$hubId2 :
        - $userid1 : true
        - $userid2 : true

3. HubJoinedDB :
     -$userId1 :
          - $hubId1 : true
          - $hubId2 : true
     -$userId2 :
          - $hubid2 : true

4. PlayListDB :
     -$hubId1 :
          - $videoId1 :
                - videoUrl : https://www.youtube.com/watch?v=[SOMEID]
                - voteCount : 2
          - $videoId2 :
                - videoUrl : https://www.youtube.com/watch?v=[SOMEID]
                - voteCount : 1
     -$hubId2 :
          - $videoId3 :
                - videoUrl : https://www.youtube.com/watch?v=[SOMEID]
                - voteCount : 5
          - $videoId4 :
                - videoUrl : https://www.youtube.com/watch?v=[SOMEID]
                - voteCount : 10

出于安全考虑,您需要指定一些规则:

  1. 只有 Hub 的管理员可以编写 playlistDB
  2. 只有 Hub 的成员可以对特定视频进行投票

这是规则:

{
  "rules": {
    "PlayListDB": {
      ".read": "auth !== null",
      "$hubId": {
        ".write": "root.child('AdminHubDB/'+$hubId+'/adminId'+'/'+auth.uid).exists()",
        "$videoId" :{
          "voteCount" :{
            ".write" : "root.child('MemberHubDB/'+$hubId+'/'+auth.uid).exists()"
          }
        }
      }
    }

  }
}

如果 parent 的规则等于 true,它将忽略 child 的规则,如果 child 的规则为 false,则事件。

但是如果parent的规则等于false,它会继续检查child的规则。

此外,当您更新 voteCount 时,请确保您使用 Firebase 事务方法来进行有效计数

【讨论】:

  • 如何指定这些规则?你能帮我解决这个问题吗?
  • @Abhinav422 那里,我已经更新了我的答案
猜你喜欢
  • 1970-01-01
  • 2016-11-22
  • 2016-05-25
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多