2017-02-10 92 views
0

您好,我实际上正在使用Swift和Firebase开发聊天应用程序,并且在提取现有数据和新数据时遇到一些问题。Swift - 为聊天应用程序构建Firebase数据

  1. 我的第一个问题是,因为火力地堡做取每一个新的和使用.childAdded(默认设计),观察的时候就已经存在的数据,当一个新的用户已添加到现有的聊天与它现有的消息,怎么我是否告诉应用程序只能获取新消息?因为新添加的用户不应该获取旧的现有消息。

我想过在用户添加和过滤时使用时间戳,但它是一个获取所有数据和过滤器的好方法吗?

  1. 第二个与第一个类似,我让我的应用程序在注销时清除所有数据,并在登录时获取与该用户相关的数据。当前使用相同的观察者来登录数据并获取新消息时获取数据。在这种情况下,我无法确定邮件是现有邮件还是新邮件,我需要为未读的新邮件设置正确的应用图标徽章数量。

我应该为这两种情况使用不同的观察者吗?

回答

2

你第一个问题,你可以使用火力查询

let query = ref.queryOrdered(byChild: messageTime).queryStarting(atValue: timeUserAdded, childKey: messageTime) 
query.observe(of: .childAdded, with: {(snapshot) in 

)} 

和第二个问题

您可以保存最后一次看到消息的时间(即例如WhatsApp不随时间)后可以显示任何消息那个时候作为一个新的消息。

希望这有助于问问你是否有任何困惑。

+0

谢谢我不知道他们有像queryOrdered或查询开始我应该看看他们的文档我是一个白痴哈哈反正谢谢你的答案:) –

+0

另外我有一个问题,我正在使用Coredata来存储我从Firebase获取的数据(如用户,聊天记录,消息和每当我收到新消息时)我使用arrayOfChats.contains(其中:{})检查我是否已经存储它,因为我需要重新加载所有的数据,每当用户登录,所以我想知道这是一个好主意 –

+0

你应该有数据的离线副本瞬间显示给用户。如果你完全实现了coredata,那好吧。但是firebase也提供了拖拽功能,我还没有使用它,所以我不确定它是否有效。 – rv7284

相关问题