यदि आपकी फायरबेस संरचना बहुत जटिल नहीं है, तो आप एक इंटरफ़ेस भी बना सकते हैं जो
. जैसी विधियों को परिभाषित करता हैvoid addData(Data data);
Data getData(long id);
void editData(Data data, long id);
void deleteData(long id);
फिर उस इंटरफ़ेस को लागू करने वाले 2 वर्ग बनाएं, एक Firebase का उपयोग करके दूसरा SQLite का उपयोग करके।
DatabaseImplementation
FirebaseImplementation
अपने फायरबेस कार्यान्वयन के अंदर, आप सामान्य की तरह डेटा प्रकाशित करेंगे, और एक नया नोड प्रकाशित करेंगे जैसे root/requestUpdate/userId/push/
और पुश में कहां . की जानकारी होगी आप एक अपडेट का अनुरोध करते हैं, और क्या deviceId इसे प्रकाशित किया।
उसके बाद उस उल्लिखित नोड से एक ValueEventListener बंधा हुआ है, और यदि उसे एक नया बच्चा मिलता है, तो क्या यह देखें कि डिवाइस आईडी समान है या नहीं। अगर ऐसा नहीं है, तो FirebaseImplementation . करें डेटा प्राप्त करें आपको मिली जानकारी का उपयोग करना, और फिर डेटाबेस कार्यान्वयन . का उपयोग करना , डेटा जोड़ें . के लिए ।
यह सुनिश्चित करेगा कि जब भी कोई परिवर्तन किया जाता है, तो कोई अन्य लॉग इन क्लाइंट अपने फायरबेस को अपडेट करना जानता होगा। यदि क्लाइंट ऑनलाइन नहीं है, तो अगली बार जब वह ऑनलाइन होगा, तो वह इसे ValueEventListener के संलग्न होने पर ट्रिगर के रूप में करेगा। यह सुनिश्चित करने के लिए कि सभी अनुरोध किए गए हैं, सभी अनुरोधित अपडेट के माध्यम से लूप करना सुनिश्चित करें। आपके द्वारा पूर्ण किए गए किसी भी अपडेट की पुश कुंजियों को स्थानीय डेटाबेस पर भी संग्रहीत करें ताकि आप एक से अधिक बार अपडेट न करें।
मूल रूप से फायरबेस हमेशा अद्यतित रहेगा और उपयोगकर्ता द्वारा एक अलग नोड पर किए गए किसी भी परिवर्तन को संग्रहीत करेगा जिसे सभी क्लाइंट सुनते हैं।
स्पष्ट रूप से इस समाधान में अभी भी कई समस्याएं हैं जिन्हें आपको ठीक करने की आवश्यकता होगी, जैसे कि यह पता लगाना कि अनुरोध को कब हटाना है, नोड अपडेट करें। तार्किक रूप से प्रत्येक उपयोगकर्ता के सिंक होने के बाद लेकिन आप इसे कैसे निर्धारित करते हैं? ...
पहले लॉगिन के लिए, आपको एक populateDatabaseFromFirebase() write लिखना होगा विधि जो पूरी तरह से getDatas और addDatas करेगी। आप यह कैसे करेंगे यह इस बात पर निर्भर करेगा कि आपका डीबी कैसा दिखता है। फिर आप स्टोर करेंगे कि उपयोगकर्ता पहले से ही साझा वरीयताएँ . के साथ लॉग इन कर चुका है और फायरबेस UID ।
यह सब कहा जा रहा है, यह तभी काम करेगा जब आपका फायरबेस काफी सपाट हो। यदि आपके पास एक जटिल डेटाबेस है, तो सब कुछ बहुत अधिक जटिल और उलझा हुआ हो जाता है और फिर यह बाहरी पुस्तकालय में देखने लायक हो सकता है।