2017-02-10 47 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

相關問題