Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 构建类似Snapchat的Firebase数据库_Swift_Firebase_Data Structures_Firebase Realtime Database_Snapchat - Fatal编程技术网

Swift 构建类似Snapchat的Firebase数据库

Swift 构建类似Snapchat的Firebase数据库,swift,firebase,data-structures,firebase-realtime-database,snapchat,Swift,Firebase,Data Structures,Firebase Realtime Database,Snapchat,我一直在研究snapchat克隆,以此来学习如何使用firebase 我目前一直在研究如何最好地组织数据,以便模仿简单版本的Snapchat 在我的简化版本中,我想做什么: 向多个用户发送图片消息 将图片信息发布到“故事”订阅源,我的所有朋友都可以看到它 我真的不需要更多了。我并没有试图实现Snapchat的当前功能,即能够发送文本消息或类似的内容。我只想把照片发送给朋友,并把它们发布到公共订阅源 我的数据结构如下: 并将其分解: 用户: 用户之间的友谊结构如下: 如下结构的单个消息:

我一直在研究snapchat克隆,以此来学习如何使用firebase

我目前一直在研究如何最好地组织数据,以便模仿简单版本的Snapchat

在我的简化版本中,我想做什么:

  • 向多个用户发送图片消息
  • 将图片信息发布到“故事”订阅源,我的所有朋友都可以看到它
  • 我真的不需要更多了。我并没有试图实现Snapchat的当前功能,即能够发送文本消息或类似的内容。我只想把照片发送给朋友,并把它们发布到公共订阅源

    我的数据结构如下:

    并将其分解:

    用户:

    用户之间的友谊结构如下:

    如下结构的单个消息:

    此类对话的索引:

    现在,我已经在stack和online上看到了很多关于在聊天应用程序中构建消息的帖子。我一直关注的是如何构造我的数据库,以便将消息发送给用户,以便只有接收用户的用户才能看到它

    我一直在阅读firebase文档,我知道我应该对数据进行非规范化处理,以便能够更高效地读取数据,但我真的不知道使用firebase的最佳方法

    在我当前的
    用户消息
    实现中,我必须在我的代码中实现一个检查,以查看消息是否由我的用户发送,然后防止用户看到它。理想情况下,只有发送消息的人才能看到图像。(就像snapchat一样)

    有什么建议吗


    我是否需要对用户树中的聊天/消息进行一些引用?

    问题似乎是

    如何构造我的数据库,以便将消息发送给用户,以便 只有接收用户的用户才能看到它

    有很多“方向”,但这里有两个

    1) 手动“告诉”每个用户有关pic的信息

    users
      uid_0
        pics_for_me
          pic_0
            url: "http://...."
          pic_1
            url: "http://...."
        my_users
          uid_2: true
      uid_1
        pics_for_me
        my_users
          uid_0: true
          uid_2: true
    
    在这种结构中,uid_1有两个用户想要与之共享图片(uid_0和uid_2),因此当需要共享图片时,读取my_users节点,遍历它,并在该用户各自的pics_for_me节点中存储指向图片的链接。显然,您可以存储其他数据,例如它来自谁等。当uid_0登录时,读取pic_for_me节点并查看pics,完成后可能会将其删除

    2) 为用户观察节点的PIC

    users
      uid_0
        name: "Henry"
      uid_1
        name: "Joe"
    
    all_pics
      pic_0
       for_user: "uid_0"
       url: "http://..."
    
    在这种情况下,uid_0登录并向包含其用户id的任何for_用户的所有_pic添加查询。这适用于1-1情况,其中pic是针对一个用户的。如果你想让多个用户得到一张照片,那么

    all_pics
      pic_0
        uid_0: true
        uid_1: true
    

    当用户登录时,向用户uid为true的所有图片添加一个查询,然后在添加包含其uid子项的图片时,他们将收到一个事件。

    请不要在问题中包含图像。将代码和结构作为文本包含。要获取Firebase结构,请使用Firebase控制台->导出JSON并复制粘贴结构片段。看见