我正在開發一個聊天應用程序,在該應用程序中,我必須維護用戶的在線狀態,並且我使用的技術是firebase,因此我該怎麼做才能獲得任何形式的幫助。在此先感謝...如何在Firebase中維護用戶的在線狀態Android
1
A
回答
1
基於你給不考慮性能和帶寬限制的信息,這裏是我將如何解決此問題的方法:
使用服務,並在真實的線 - 時間數據庫:
內實時數據庫,我將有一個OnlineStatus線程,然後我會保存用戶ID的子鍵 - 值對,並設置其值爲「綠色」或「黃色」或「紅」;這會給我關於用戶是在線還是離開的狀態。因此,這將是這樣的:
OnlineStatus
- 用戶1:綠色
- 用戶2:黃色
- 用戶3:紅
創建服務,將檢查:
- 該用戶已通過身份驗證
- 該應用程序在後臺
如果用戶被認證,並且應用程序是開放的,那麼寫入到OnlineStatus線程當前用戶作爲密鑰和「綠」作爲價值。
如果應用程序在後臺並且用戶已通過身份驗證,則執行相同的操作,但「黃色」是值。
其他任何應該導致顏色「紅」。另外請注意,如果用戶註銷,您可能希望在該操作過程中寫入「紅色」。
因此,這允許每個設備更新Firebase實時數據庫。剩下的就是添加對OnlineStatus位置的引用,以通過ValueEventListener監聽更改。
希望這會有所幫助。
1
Mabz看法是正確的概念,但我要強調火力地堡的特點,專門用於解決您的使用案例。
我碰到的麻煩是用'離線'狀態更新RealtimeDatabase。即,如果客戶端(例如您的Android應用程序)處於脫機狀態,它應該如何告知數據庫?
解決方案:使用DatabaseRef.onDisconnect()
設置脫機狀態自動
DatabaseRef presenceRef =
FirebaseDatabase.getInstance().getReference("disconnectmessage");
// Write a string when this client loses connection
presenceRef.onDisconnect().setValue("I disconnected!");
當你建立一個onDisconnect()操作,操作住在 的火力地堡實時數據庫服務器。服務器檢查安全 確保用戶能夠執行所請求的寫事件,並通知 了您的應用程序,如果它是無效的。服務器然後監視連接。如果在任何時候連接超時,或者正在積極 通過實時數據庫客戶端關閉,服務器將檢查安全 第二次(以確保操作仍然有效),然後 調用事件。當你的應用程序第一次連接
A(略)更實際的例子可能會做這樣的事情:
DatabaseRef userStatus =
FirebaseDatabase.getInstance().getReference("users/<user_id>/status");
userStatus.setValue("online");
userStatus.onDisconnect.setValue("offline");
相關問題
- 1. 在Firebase中維護用戶登錄狀態
- 2. 如何在ExtJS4中維護用戶的登錄狀態?
- 3. 如何在Silverlight中維護狀態?
- 4. 維護視圖狀態android
- 5. 如何在用戶控件上維護視圖狀態
- 6. 如何在Android中維護地圖狀態?
- 7. 在MVC3中維護dropdownlist的狀態
- 8. 在IceFaces中維護狀態的問題
- 9. 使用Firebase跟蹤用戶的在線/離線狀態
- 10. 在android應用程序中維護會話或狀態的用戶名
- 11. 如何在應用程序中維護片段的狀態
- 12. 如何維護自動佈線Web服務中的狀態?
- 13. 在express.js中維護用戶登錄狀態
- 14. 在PHP中維護html控件狀態?
- 15. 在餘燼中維護多個狀態
- 16. 在MVC2控制器中維護狀態
- 17. 在JavaScript中維護對象狀態DOJO
- 18. 在jqgrid中維護滾動狀態
- 19. 在Android中維護應用程序狀態
- 20. 如何在PHP類中維護靜態成員狀態?
- 21. 如何維護WCF服務中的每個客戶端狀態?
- 22. 禁用狀態維護
- 23. 使用TabBarController維護狀態
- 24. 如何在backbone.js中維護應用程序狀態?
- 25. 如何在Windows Phone 7中維護應用程序狀態?
- 26. 如何維護複選框的狀態
- 27. 如何維護搜索portlet的狀態
- 28. 如何維護活動的狀態?
- 29. 在Android中維護用戶會話
- 30. 如何查看在線用戶狀態
謝謝您的回覆... –