[gelöst] Inhalte in Android-App updaten
Eingetragen von missingdot (145)
am 23.06.2015 - 10:51 Uhr in
am 23.06.2015 - 10:51 Uhr in
Hallo zusammen,
mein kleines App-Projekt entwickelt sich prima. Via Services Modul sind nun sämtliche Inhalte meiner Drupalinstallation an die App angebunden. Nun folgendes Szenario:
Aufgrund mehrerer Faktoren soll die App nicht jedes mal den benötigten Inhalt dynamisch laden, sondern in einer lokalen Datenbank auf dem Smartphone zwischenspeichern. (Stichwort Datenvolumen, Internetverbindung, etc) Diese lokale DB soll dann im Falle von Änderungen in der Drupal-DB via Services aktualisiert werden.
Wie lässt sich das lösen? Habt ihr da Erfahrungen bzw. Ideen?
Dankeschön schonmal.
- Anmelden oder Registrieren um Kommentare zu schreiben
Das Datenmodell musst du selbst entwickeln
am 23.06.2015 - 11:45 Uhr
SLQLight ist wohl nutzbar.
http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/
Für die Updates muss natürlich mehr oder weniger Regelmäßig der Service bemüht werden.
Wenn du offline, also lokal, auch Daten erfasst, musst du dir auch dafür eine Aktualisierungsstrategie überlegen.
Aber auch für die Aktualisierungen musst du dir überlegen, wie diese stattfinden sollen.
Werden immer nur die neuesten Daten geladen, und die bestehende Datenbank damit aktualisiert, ist dies komplizierter, spart aber Bandbreite.
Grüße
Ronald
Danke. SQLite haben wir
am 23.06.2015 - 12:03 Uhr
Danke. SQLite haben wir androidseitig schon in Verwendung.
Die Inhalte werden nur in der Drupalinstallation gepflegt. Es gibt Inhalte, die regelmäßig aktualisiert und erweitert werden. Diese Inhalte sollen auf der App auch offline verfügbar sein und zwar immer in der neuesten Version. Und natürlich wäre es schön immer nur die geänderten Daten zu laden.
Die Frage an der ich gerade nicht weiter komme ist: Wie prüfe ich auf neue/aktualisierte Inhalte?
alle nodes haben einen timestamp
am 23.06.2015 - 12:50 Uhr
ich würd mir den letzten abgeholten timestamp lokal merken, um dagegen zu prüfen, ob es etwas mit einem neueren Timestamp gibt.
Wie du das im Service abfragst, musst du wahrscheinlich ein bisschen probieren.
Grüße
Ronald
Das wäre eine Idee. Es gibt
am 23.06.2015 - 15:17 Uhr
Das wäre eine Idee. Es gibt also keinen Service (Modul) der das schon bietet?
Ist ja an sich ein Standardverhalten einer App sich gegen eine Datenbank abzugleichen... Dachte ich zumindest.
ich bin gerade nicht zu 100% im Servicemodul fit
am 23.06.2015 - 20:51 Uhr
schau nach, was geht, und welche Felder dir die nodestruktur liefert, bzw. wonach du selektieren kannst.
Ein Synchronisieren ist jedoch sicherlich etwas eigenes.
Vielleicht weiß ein anderer mehr über das service modul?
Robert vielleicht?
Grüße
Ronald
Hi,
am 24.06.2015 - 08:05 Uhr
da du Zugriff auf eine lokale SQLLite Datenbank hast,
ist die App zumidest eine hybride Android App(WebView).
Danke. SQLite haben wir androidseitig schon in Verwendung.
Die Inhalte werden nur in der Drupalinstallation gepflegt. Es gibt Inhalte, die regelmäßig aktualisiert und erweitert werden. Diese Inhalte sollen auf der App auch offline verfügbar sein und zwar immer in der neuesten Version. Und natürlich wäre es schön immer nur die geänderten Daten zu laden.
Die Frage an der ich gerade nicht weiter komme ist: Wie prüfe ich auf neue/aktualisierte Inhalte?
Es gibt mehrere Möglichkeiten:
Ich würde wie folgt vorgehen:
Du speicherst den letzten Timestamp (mit der höchsten Nummer) lokal auf dem Handy in einer Tabelle (last Timestamp).
Sobald das Handy online ist, sendest Du diesen Timestamp an den Service.
Alle Nodes mit Timestamps welche grösser sind wurden noch nicht gesendet oder Sie wurden aktualisiert.
Hier kannst Du dann die Nodes an das Handy senden und wieder den höchsten Timestamp aktualisieren.
Du kannst den Benutzer dann auch warnen, z.b: Achtung Ihre letzte Aktualisierung ist x Tage alt.
MfG
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
das war auch mein Vorschlag
am 24.06.2015 - 08:44 Uhr
die Frage war nun, gibt es im servicemodul eine vorgefertigte Abfrage dafür?
In etwa "liefere mir alle nodes vom content_type xyz und einem Timestamp > 123"
Grüße
Ronald
Hallo Ronald, er kann es
am 24.06.2015 - 09:12 Uhr
Hallo Ronald,
er kann es probieren mit https://www.drupal.org/project/services_views
Hier kann er den Timestamp dann als Argument übergeben.
Ein Tutorial findet sich hier: https://www.youtube.com/watch?v=DZEhJKMeR5w
Anderenfalls stellt das Services Modul auch eine API zur Verfügung.
Grüsse
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Ja sehr cool! Vielen vielen
am 26.06.2015 - 09:34 Uhr
Ja sehr cool! Vielen vielen Dank, die Lösung mit Services Views funktioniert ganz wunderbar!
Vielen Dank Euch beiden! :)