खोज…


परिचय

इस पोस्ट में आपको Firebase का उपयोग करते समय ऑफ़लाइन क्षमताओं को लागू करने के विभिन्न तरीके मिलेंगे, एक अच्छा विचार कब और क्यों हो सकता है इसके बारे में जानकारी ऑफ़लाइन क्षमताओं और एंड्रॉइड प्लेटफॉर्म के साथ इसके उदाहरणों को सक्षम कर सकती है।

टिप्पणियों

मुझे क्या उपयोग करना चाहिए? डिस्क हठ या रख-रखाव कॉल?


अपने अनुभव से मैं कह सकता हूं कि यह हमेशा निर्भर करता है कि आपका ऐप क्या काम कर रहा है, और आप अपने एप्लिकेशन के लेनदेन और डेटाबेस का प्रबंधन कैसे करते हैं। यदि उदाहरण के लिए आपके पास एक एप्लिकेशन है जहां उपयोगकर्ता सिर्फ डेटा लिख और पढ़ रहा है लेकिन वह इसे हटाने या संपादित करने में सक्षम नहीं है, तो DiskPersistence उपयोग करना सही विकल्प होगा।

इसके अलावा, DiskPersistence कैश में डेटा स्टोर करेगा, जिसका अर्थ है कि आपका ऐप उपयोगकर्ता के उपकरणों में अधिक स्थान का उपयोग करेगा, जो शायद आपके मामले में सबसे अच्छा विचार नहीं है।

दूसरे हाथ में, यदि आपका एप्लिकेशन बहुत अधिक जटिल लेनदेन का प्रबंधन करता है और आपका डेटा वास्तव में अक्सर अपडेट किया जाता है, तो संभवतः आपको DiskPersistence से बचना चाहिए और उन keepSynced में रखने का उपयोग करना चाहिए जिन्हें आप ताज़ा रखना चाहते हैं।

क्यों?


DiskPersistence स्थानीय में पुनर्प्राप्त डेटा संग्रहीत करता है, जो कभी-कभी आपके डेटा को दिखाते हुए बहुत अधिक DiskPersistence कारण बन सकता है यदि आप इसे लगातार ListenerValueEvents साथ उपयोग नहीं करते हैं। उदाहरण के लिए:

  1. उपयोगकर्ता ए आपके एप्लिकेशन पर एक संदेश "हैलो वर्ल्ड" लिखता है, जो उपयोगकर्ता बी के लिए प्राप्त किया जाता है
  2. उपयोगकर्ता B अपने फ़ोन में उपयोगकर्ता A से संदेश डाउनलोड करता है और संदेश "Hello World" देखता है
  3. उपयोगकर्ता ने "फायरबेस कूल है" के अपने संदेश को संपादित किया।
  4. उपयोगकर्ता B तब भी "हैलो वर्ल्ड" संदेश देख रहा होगा, भले ही वह डेटा अपडेट करता हो क्योंकि स्नैपशॉट रेफरी वही है जब फायरबेस इसके लिए फ़िल्टर करता है।

इससे बचने के लिए सबसे अच्छा विचार निरंतर श्रोताओं को उन संदर्भों में रखना है जिन्हें आप हर समय ट्रैक करना चाहते हैं।

क्या मैं दोनों का एक साथ उपयोग कर सकता हूं?


बेशक, आप कर सकते हैं, और अधिकांश ऐप्स में संभवतः बहुत सारा डेटा डाउनलोड करने से बचने और उपयोगकर्ता को आपके ऐप के साथ काम करने की संभावना देने के लिए सबसे अच्छा विचार है, भले ही उसका कोई संबंध न हो।

यदि आप उपयोगकर्ता डिवाइस में कैश स्थान के उपयोग के बारे में परवाह नहीं करते हैं, तो मैं आपको सलाह देता हूं कि आप अपने FirebaseDatabase ऑब्जेक्ट में diskPersistence को सक्षम करें और प्रत्येक संदर्भ में एक keepSync झंडे भी जोड़ें जो कम स्थान समय में बहुत बार हो सकता है या आप चाहते हैं हर समय तरोताजा रहें।

डिस्क दृढ़ता (केवल Android / iOS) सक्षम करें

हठ आप ध्वज सक्षम होना चाहिए डिस्क सक्षम करने के लिए persistenceEnabled में FirebaseDatabaseInstance आपके आवेदन का उद्देश्य:

एंड्रॉयड

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

आईओएस

Database.database().isPersistenceEnabled = true //Swift
[FIRDatabase database].persistenceEnabled = YES; //Objetive-C

यदि आप अपने ऐप जीवनचक्र के कुछ क्षणों में दृढ़ता को निष्क्रिय करना चाहते हैं, तो आपको इसे उसी तरह से अक्षम करना याद रखना चाहिए:

एंड्रॉयड

FirebaseDatabase.getInstance().setPersistenceEnabled(false);

आईओएस

Database.database().isPersistenceEnabled = false //Swift
[FIRDatabase database].persistenceEnabled = NO; //Objetive-C

डेटा ताज़ा रखना (Android / IOs केवल)

फायरबेस मोबाइल उपकरणों पर उपयोग किए जाने पर सक्रिय श्रोताओं के लिए डेटा की एक स्थानीय प्रतिलिपि को सिंक्रनाइज़ और संग्रहीत करता है। इसके अलावा, आप विशिष्ट स्थानों को सिंक में रख सकते हैं।

एंड्रॉयड :

DatabaseReference workoutsRef = FirebaseDatabase.getInstance().getReference("workouts");
scoresRef.keepSynced(true);

iOS:

//Objetive-c
FIRDatabaseReference *scoresRef = [[FIRDatabase database] referenceWithPath:@"scores"];
[scoresRef keepSynced:YES];
//Swift
let scoresRef = Database.database().reference(withPath: "scores")
scoresRef.keepSynced(true)

फायरबेस क्लाइंट इन स्थानों पर डेटा को स्वचालित रूप से डाउनलोड करता है और इसे तब भी अपडेट रखता है, जब संदर्भ में कोई सक्रिय श्रोता न हो। आप कोड की निम्न पंक्ति के साथ सिंक्रनाइज़ेशन को अक्षम करते हैं।

एंड्रॉयड :

scoresRef.keepSynced(false);

iOS:

[scoresRef keepSynced:NO]; //Objetive-C
scoresRef.keepSynced(false) //Swift


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow