如何让设备连接到多个设备,其中一个设备充当管理员?

时间:2017-05-25 10:41:22

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

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

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

1 个答案:

答案 0 :(得分: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 of Hub才能编写播放列表
  2. 只有Hub会员才能投票给某些视频
  3. 以下是规则:

    {
      "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()"
              }
            }
          }
        }
    
      }
    }
    

    如果父级规则等于true,则会忽略子规则,如果子规则为false则忽略该事件。

    但如果父母的规则等于假,它将继续检查孩子的规则。

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