Zoeken…


Invoering

In dit bericht vindt u de verschillende manieren om offline mogelijkheden te implementeren bij het gebruik van Firebase , informatie over wanneer en waarom een goed idee zou kunnen zijn om offline mogelijkheden en voorbeelden hiervan met Android-platform in te schakelen.

Opmerkingen

Wat moet ik gebruiken? Schijfpersistentie of gesynchroniseerde oproepen?


Uit mijn ervaring kan ik zeggen dat het altijd afhangt van wat uw app werkt en hoe u de transacties en database van uw applicatie beheert. Als u bijvoorbeeld een toepassing hebt waarbij de gebruiker alleen gegevens schrijft en leest, maar deze niet kan verwijderen of bewerken, is DiskPersistence de juiste keuze.

DiskPersistence slaat ook gegevens op in de cache, wat betekent dat uw app meer ruimte op de apparaten van de gebruiker zal gebruiken, wat in uw geval misschien niet het beste idee is.

In andere kant, als uw toepassing beheert veel complexe transacties en uw gegevens is echt vaak bijgewerkt, misschien je moet vermijden DiskPersistence en gebruik keepSynced in de referenties die u wilt vers te houden.

Waarom?


DiskPersistence slaat de opgehaalde gegevens op in lokaal, wat soms kan leiden tot veel desynchronisatie waarbij uw gegevens worden weergegeven als u deze niet samen met continue ListenerValueEvents . Bijvoorbeeld:

  1. Gebruiker A schrijft een bericht "Hallo wereld" op uw app, dat wordt ontvangen voor gebruiker B
  2. Gebruiker B download bericht van gebruiker A in zijn telefoon en ziet het bericht "Hallo wereld"
  3. Gebruiker Een bericht van een bewerking naar "Firebase is cool".
  4. Gebruiker B zal nog steeds het bericht "Hallo wereld" bekijken, zelfs als hij de gegevens bijwerkt, omdat de snapshot-ref hetzelfde is als de Firebase-filter ervoor.

Om dit te voorkomen, is het beste idee om voortdurend luisteraars in de referenties te houden die u altijd wilt bijhouden.

Kan ik beide samen gebruiken?


Natuurlijk kan dat, en in de meeste apps is het misschien het beste idee om veel gegevens te downloaden en de gebruiker de mogelijkheid te geven om met je app te werken, zelfs als hij geen verbinding heeft.

Als u niet diskPersistence bent in het gebruik van diskPersistence in het gebruikersapparaat, raad ik u aan diskPersistence in te schakelen in uw FirebaseDatabase object en ook een keepSync vlaggen toe te voegen aan elke referentie die vaak in korte tijd kan voorkomen of u wilt altijd vers houden.

Schijfpersistentie inschakelen (alleen Android / iOS)

Om schijfpersistentie in te schakelen, moet u de vlag persistenceEnabled inschakelen in het FirebaseDatabaseInstance object van uw toepassing:

Android

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

iOS

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

Als u de persistentie op een bepaald moment van uw app-levenscyclus wilt uitschakelen, moet u onthouden om het op dezelfde manier uit te schakelen:

Android

FirebaseDatabase.getInstance().setPersistenceEnabled(false);

iOS

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

Gegevens actueel houden (alleen Android / iO's)

Firebase synchroniseert en slaat een lokale kopie van de gegevens op voor actieve luisteraars bij gebruik op mobiele apparaten. Bovendien kunt u specifieke locaties gesynchroniseerd houden.

Android:

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)

Firebase-client downloadt automatisch de gegevens op deze locaties en houdt deze bijgewerkt, zelfs als de referentie geen actieve luisteraars heeft. U schakelt synchronisatie uit met de volgende coderegel.

Android:

scoresRef.keepSynced(false);

iOS:

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow