APP mit Web Synchronisieren

  • Hallo Leute,


    ich habe eine APP gebaut, die auf einen PHP-JSON Controller im Web zugreift und hier Daten ausliest (MySQL Datenbank). Das klappt soweit super, nur möchte ich das natürlich auch ermöglichen, wenn kein Internet zur Verfügung steht.


    ich benötige also


    A) Eine Möglichkeit die abgerufenen Daten zu Cachen


    und


    B) Eine Möglichkeit die Daten zu Synchronisieren


    Beispiel:


    • Ich kann mich auf der Internetseite anmelden und dort eine Liste anlegen. (funktioniert bereit)
    • Diese Liste wird mir, bei aktiver Internetverbindung, via JSON in die APP geschickt. (funktioniert bereit)
    • Die Daten sollen gecached werden, sodass die Liste auch noch angezeigt wird, wenn ich Internet abschalte
    • Ich kann über die APP (auch bei inaktivem Netz) neue Datensätze anlegen, also die Liste bearbeiten.
    • Sobald Internet zur Verfügung steht, sollen diese Änderungen via JSON mit dem Web synchronisiert werden



    Ich habe hier an einen automatischen sync bei aktivem WLAN gedacht und einen Sync-Button der jederzeit gedrückt werden kann um die APP-Datensätze mit der Web-Datenbank zu synchronsieren.


    Leider habe ich bis jetzt keine Idee wie ich das umgesetzt bekomme... habt ihr Vorschläge?

  • Hallo zusammen,


    der Tipp von @ChampS war super, ich habe jetzt meine Datenbank-Struktur aus dem Web etwas vereinfacht in der SQLite Datenbank abgebildet. Allerdings bin ich mit dem Synchronisierungsvorgang noch etwas unzufrieden. Dieser funktioniert wie folgt:


    Anmerkung:
    Es können neue Einträge sowohl im Web als auch mit dem Smartphone erstellt werden. Die Synchronisierung muss also in beide Richtungen erfolgen.


    Schritt 1:
    Es wird ein JSON Objekt erstellt, welches alle Daten der SQLite Tabellen enthält. (alle Daten die mit isWebSync = 0 geflagged sind)


    Schritt 2:
    Das JSON Objekt wird an einen PHPScript gepostet welcher die Daten in die MySQL Datenbank im Web einfügt. Danach gibt er die IDs der gemachten Einträge zurück


    Schritt 3:
    Die App erhält die neuen(und alten) IDs und überschreibt die bestehen IDs mit den neuen aus dem Web. Damit stelle ich sicher, dass die ID im Web und Mobile identisch sind. Danach wird das Flag isWebSync auf 1 gesetzt.


    Schritt 4:
    Neue Einträge (isMobileSync = 0) aus dem Web werden ebenfalls zurückgeliefert und entsprechend 1:1 ins SQLite übernommen. Im Web gibt es ein gegengesetztes Flag isMobileSync welches in dem Fall dann auf 1 gesetzt wird.



    Meine Fragen:
    Findet ihr den Ablauf generell so sinnvoll oder könnte ich das effizienter lösen?
    Es können teilweise extrem viele Datensätze sein, die über Web gepostet werden. Kann das mit dem JSON Objekt ein Problem werden?


    Ich freue mich auf eure Anregungen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!