2017-08-31 49 views
0

我有一個脫機數據丟失的情況,但它似乎應該已經同步到服務器。在重新連接註銷後,Firebase會同步脫機數據嗎?

場景:

用戶登錄到我們的火力地堡的應用程序。持久性已開啓的火力地堡的建議:

Database.database().isPersistenceEnabled = true 

如果用戶關閉應用程序,並重新啓動它,而離線,他/她可以繼續使用應用程序來創建和查詢數據下線。當用戶重新獲得網絡連接時,數據將同步。我們對這一點很好。

但是,如果用戶在離線狀態下退出應用程序,他/她需要重新獲得網絡連接才能登錄。此時,應用程序將獲得新的身份驗證令牌。但以前在離線時使用第一個登錄會話/令牌保存的數據尚未同步。數據丟失了嗎?還是有辦法告訴Firebase使用以前的或新的令牌來同步該離線數據?

timeline of sync

TL;博士:

你怎麼火力數據被創建註銷離線之前,同步一旦有聯繫嗎?

注意:我沒有使用trasactions。我知道在重新啓動應用程序時事務丟失了。

+1

丟失的數據是否受安全規則保護? –

+0

否。如果用戶沒有註銷,重新連接時數據會同步。編輯:沒有與此數據相關的規則。 – dwaz

+0

如果您所得到的是數據在可以同步之前可能會從設備中刪除,否則不會刪除數據。它從來沒有讓它到服務器。 – dwaz

回答

1

在Firebase的支持下工作之後,我學到了這些。如果您有需要用戶進行身份驗證的安全規則,則以下情況屬實。

離線收集的數據需要身份驗證令牌才能在獲得連接後將數據複製回服務器。 firebase.auth()。signOut()命令破壞了令牌,導致用戶的數據丟失。

爲了避免丟失數據,您必須阻止您的應用程序註銷,或者單獨存儲離線數據,並提供一種方法讓數據在新身份驗證令牌上重新提交/同步到Firebase。

這是一個希望Firebase將會改進的領域。我的想法是,Firebase應該基於用戶仍然登錄時使用的令牌來同步數據。僅僅因爲用戶已經註銷,即使用戶處於離線狀態,他/她在數據收集時也已登錄。我被告知這將是一項功能要求。

相關問題