Meine App-Daten zu Google Drive sichern bzw. synchronisieren

  • Antworten:24
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 29

03.09.2018, 18:26:45 via Website

Hallo,

ich bin nicht der große Entwickler aber ich arbeite mich langsam ran :). Ich hab eine kleine App deren Daten ich aktuell auf das Handy selbst exportieren lasse. Nun suche ich einen einfachen Ansatz meine Daten auf Google Drive sichern bzw. zu synchronisieren. Es geht dabei um ein .json File und verschiedene Daten die in der App als Anhänge gespeichert werden können. Eben so das ich die Daten auch auf einem anderen Gerät (z.B. Tablet) verwenden kann. Ich hab schon mal etwas geschaut aber irgendwie kommt mir das alles recht kompliziert vor. Gibt es da nicht einen einfachen bzw. fertigen Ansatz von Google? Andere Apps lösen, so wie es ausschaut, doch auch recht einfach. Also alle Daten zu Drive und dort in einem Ordner ablegen. Wenn es zu Synchronisierungsfehlern kommt macht das wie es ausschaut ja Drive von alleine. Also eine weitere Version anlegen etc...

Wäre euch echt dankbar für ein paar Denkanstöße.

Gruß

— geändert am 03.09.2018, 18:54:41

Diskutiere mit!
  • Forum-Beiträge: 2.909

03.09.2018, 18:30:42 via Website

Hallo derGü,

hier ist alles , was Dein Herz begehrt

https://developers.google.com/drive/android/get-started

EInfacher geht es nicht , es sei denn , du suchst Dir eine Library.
Allerdings kommst du auch da nicht um die Sicherheits-relevanten Dinge nicht drumrum

Macht also keinen Sinn, da der Aufwand gleichzusetzen ist

— geändert am 03.09.2018, 18:33:24

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 29

03.09.2018, 18:43:29 via Website

Hmm... Storing app data hatte ich auch schon gesehen. Das war ja was für mich etwas kompliziert ausschaute :). Aber wenn es nur so geht muss ich mich wohl damit auseinandersetzen. Hab ich auf dem Weg denn auf die Synchronisierung Einfluss? Ich möchte in meiner App ja bestimmen können wann er synchronisieren soll. Und wie machen das denn andere Apps wo ich in meinem Drive einfach einen sichtbaren Ordner der App habe?

Hast du vielleicht ne Empfehlung für ne gute Library?

Ich suche halt irgendwas das mir die ganze Synchronisierung abnimmt.

— geändert am 03.09.2018, 18:50:24

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 2.909

03.09.2018, 18:51:49 via Website

Ich suche halt irgendwas das mir die ganze Synchronisierung abnimmt.

So etwas mache ich zu Fuss, damit ich auch weis , wann wo und wieso passieren soll .
Sorry - eine Library verwende ich nicht - schau mal auf Github

— geändert am 05.09.2018, 12:28:40

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 29

03.09.2018, 21:45:26 via Website

Hey Leute,

danke! Ich schaue mir beides mal an und melde mich morgen wenn ich noch Fragen haben sollte. Aber schon mal danke für die schnelle und nette Hilfe. (cool)

— geändert am 03.09.2018, 21:51:20

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 29

05.09.2018, 12:04:27 via Website

Ich hätte noch eine ggf. oberflächlichen Gedanken.

Gibt es bei der Verwendung von Drive oder Dropbox nicht einen Ordner der automatisch seinen Inhalt synchronisiert, also so wie am PC? Wenn ich nun die lokalen Daten meiner App in einen solchen Ordner lege und direkt von dort auf die Daten zugreife, wäre das nicht ein einfacher Ansatz? Oder gibts sowas gar nicht?

Und noch eine andere Frage bitte. Was würde es mich ggf. kosten wenn man die Synchronisationsfunktionalität an einen fähigen Entwickler auslagern würde? Ist sowas sehr kostspielig?

— geändert am 05.09.2018, 12:06:54

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 2.909

05.09.2018, 12:13:41 via Website

Hallo

a) Nein , du musst das schon anstossen

b) "Wieviel kostet ein Auto ?" Diese Gegenfrage ist mit deiner Frage gleichzusetzen.

Es kommt darauf an , was du lieferst , was du benötigst, welchen Service du erwartest etc. etc.
In deinem laufenenden Projekt wird kaum einer was tun - allerhöchstens Dir eine Library stricken.
Dazu müsstest du aber auch erst mal eine Art Plichtenheft auf die Beine stellen .

an einen fähigen Entwickler auslagern

Die Stundenlöhne bei Entwicklern , die auch Praxiserfahrung haben und wissen was sie tun , liegen gut um die 100 Eus und aufwärts.

Deine Frage ist also pauschal nicht zu beantworten ...

— geändert am 05.09.2018, 12:25:27

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 29

05.09.2018, 14:23:12 via Website

Unterm Strich brauch ich eine Automatisierung die Inhalte in einem Ordner mit Google Drive synchronisiert. Also die reine Funktionalität. Damit ich aus meiner App eben dort die Daten reinlegen kann.

Aber ich versuche mich die Tage erstmal noch alleine. Kann ja so schwer nicht sein (thinking). Sollte ich nicht weiter kommen würde ich mich wegen dem Thema noch mal melden.

Super das hier Leute sind die einem auch mal antworten.

Nett von euch.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 29

05.09.2018, 18:22:24 via Website

So hab mir das jetzt mal genau angeschaut. Wenn ich das richtig verstehe muss ich die Synchronisierung also für jede Datei einzeln machen und auch alle Eventualitäten beim fehlerhaftem Upload wegen Disconnects etc... abfangen. Reden wir mal nicht von der synchronen Nutzung auf zwei Geräten.

Also ich glaub das überscheidet meine Fähigkeiten bei weitem.

Was ich gefunden habe ist die Dropbox API v1 in der das ja wie es scheint deutlich leichter ging. Warum man sowas nun auslaufen lässt verstehe ich nicht. Alles was ich als einfachere Lösungen gefunden habe wird von aktuellen APIs irgendwie nicht mehr unterstützt. Warum ist das eigentlich so? Warum macht man einfache Dinge unnötig schwerer.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 486

05.09.2018, 18:56:23 via Website

Hallo es gibt doch einen Nachfolger v2.
Wenn du nicht gleichzeitig auf zwei Geräten arbeiten tust und sicher stellen kannst das nur ein Gerät eingeloggt ist sollte doch der Datei zeitstempel als sync kreterium reichen.

— geändert am 05.09.2018, 19:43:21

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 29

05.09.2018, 19:03:07 via Website

Aber auch da muss ich das dann ja für jede Datei einzeln machen und eben wieder prüfen ob meine Dateien auch alle hochgeladen wurden. Also bevor ich meine App auf einem anderen Gerät öffne. Und wenn ich das dann mache und ändere auf Gerät 2 etwas kommt es ja wenn Gerät 1 wieder Internet hat zu einem Konflikt. Und so wie ich das gelesen habe lief das in der v1 anders.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 29

05.09.2018, 19:35:09 via Website

Mein Problem ist es am ehesten das ich keine richtige Kontrolle über die Uploads und Downloads habe. Also so kleine Dateien (.json mit der Struktur) sind ja kein Problem. Aber bei den größeren Dateien wie Bilder und so komme ich nicht mit der Prüfung klar dass diese auch vollständig hochgeladen wurden und was zu tun ist wenn das eben nicht funktioniert hat. Manchmal bekomme ich das gar nicht mit. Das muss doch irgendwie einfacher gehen (thinking)

Hilfreich?
Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.182

05.09.2018, 19:37:19 via Website

Um welche Art von Daten geht es denn?
Vielleicht ist eine online DB mit Live Update besser geeignet für dich?
Dafür brauchst du aber eine Dauerhafte Verbindung oder ein DB sync.
PS: Daten in Json lassen sich gut in DBs schreiben entweder in Objektorientierte DBs a la Firebase oder Relationale DBs a la MySql.

— geändert am 05.09.2018, 19:39:19

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 486

05.09.2018, 19:39:17 via Website

Gut mit der v1 und v2 hab3 ich mir nicht näher angesehen.

Aber warum muss es zu einen Konflikt kommen wenn du von Gerät 1 zu zwei gehst. Beim Start der app oder beim einloggen prüfst du die Zeit Stempel und die neueren lädst halt neu in deine app.
Kannst ja auch eine logg Datei in der cloud anlegen in der gespeichert wird welche Dateien verändert wurden auf dem ersten Gerät. Beim einloggen von Gerät zwei musst du sicher stellen das eins nicht mehr Online ist oder es einfach ausloggen.
Sonst wirst du sicherlich Konflikte haben.
Nach dem neu laden der Datein in deine app löschenden Inhalt der logg Datei.

Wenn es mehr als zwei Geräte sind ist der verwaltungs Aufwand etwas größer.
Und sicher auch etwas komplexer .
Denke dazu kann dir saw00 weitere Tipps geben.
Klar ist das viel Hand Arbeit ist aber doch auch mal interessant so etwas zu machen.

Auch wenn du eine lib benutzt musst du sicher stellen das deine Daten ströme geschlossen sind . Oder du musst immer synchron in deine app und in die cloud schreiben .

— geändert am 05.09.2018, 19:55:02

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 29

05.09.2018, 20:41:12 via Website

Also DB ist keine Option. Möchte ja keine zusätzlichen Kosten oder so generieren wenn ich die App Freunden gebe wo ich ja nicht wissen kann was die da so alles ablegen. Die sollen dann mal fein ihren eigenen Drive oder die Dropbox füllen :).

Also das Json beinhaltet die Struktur inklusive Texte und so. Ist also sehr klein. Aber die weiteren Inhalte können auch schon mal 50 oder 100 MB groß sein. Sind halt große PDFs mit Bildern drin aber auch Audio oder kleine Video Files.

Das Json geht gut durch aber bei den größeren Sachen kommt es selbst im WLAN mitunter zu Abbrüchen beim Upload. Wie soll das dann erst im Datennetz sein wenn da mal n Funkloch kommt. Gibt hier ja zu genüge ;). Und einen solchen Fall muss ich dann ja irgendwie abfangen. Kann ich aber manchmal gar nicht weil ich es mitunter gar nicht mitbekomme. Und am Ende soll die App ja rund laufen.

Das ist aktuell mein größtest Problem.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 2.909

05.09.2018, 20:50:14 via Website

Du könntest Dir natürlich noch deinen eigenen Überprüfungs-Mechanismus hinzufügen.
Und am Ende des Up/Downloades nochmal gegenchecken, z.b. MD5.

Wie schon oben erwähnt : Es gibt nicht die eierlegende Wollmilchsau - Vieles musst du selbst initiieren, abfangen und überprüfen.

Du wirst also nicht um eine ordentliche Entwicklung herum kommen und die Zeit investieren.
Das ist auch bei Libraries so, deshalb anfangs auch mein "Basis"- Link.

Bist du auf der Flucht, oder warum drängelt es dir so ? :-)

— geändert am 05.09.2018, 20:55:00

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 29

05.09.2018, 21:17:51 via Website

@swa00

Die Wollmilchsau ohne Eier würde mir auch schon reichen. Die Eier bekomme ich dann sicher hin. :)

Bin nicht auf der Flucht aber wenn ich mir was in den Kopf gesetzt habe will ich das auch durchziehen. Gerade wenn hier so nette Leute sind die mir ihre Erfahrungen mitteilen. (cool)

Ich verstehe halt nicht warum mir bei manchen Files die Uploads abbrechen. Ist auch total random wann und warum.

@Jokel

Ich werde sicher nicht verhindern können das wer anders die App auf zwei Geräten öffnet. Hab mir aber schon was überlegt was ich dann mache.

Mein Gedanke: Wenn ein User die App auf einem Gerät nutzt welches gerade kein Internet hat und er vor dem Upload sein Projekt (man kann mehrere "Projekte" in der App anlegen) auch auf einem anderen Gerät die alte Version des Projekts bearbeitet und dann beide hochgeladen werden gibts einen Konflikt der Json-Datei. Diese lasse ich dann beide mit je einem anderen Namen in der Cloud. Der User sieht dann beim nächsten laden zwei Projekte in der App. Das alte und das neue. Er kann dann entscheiden welches er behalten will und löscht das andere einfach. Die Anhänge bleiben davon ja unberührt da beide Projekte auf die gleichen Anhänge verweisen.

Das macht aber alles nur Sinn wenn ich die anderen Files auch gescheit transferiert bekomme.

Wer ne Idee wie ich das mit den Upload besser in den Griff bekomme? Stimmt es eigentlich das Android einfach Prozesse beenden kann wenn ihm danach ist? Also wenn zu viele Apps offen sind.

— geändert am 05.09.2018, 21:40:13

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 486

05.09.2018, 21:57:50 via Website

Hallo mal eine Frage wie machst du denn das mit dem upload? Eigene Methoden oder über eine lib wie okhttp zb.

Ja Android kann schon mal einen Service beenden. Meistens erfolgt das erst nach Ca 30 min. Solange wird wohl der upload nicht dauern.
Machst du den upload auch in einem eigenen thread ?

Wenn sich dein Service wirklich beenden sollte dann setze doch einen hardbeet drauf. Damit er nicht vom System beendet wird. Erfahrungs gemäß reicht da 30 min aus.

— geändert am 05.09.2018, 22:02:57

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 29

06.09.2018, 07:52:28 via Website

Also ich verwende aktuell REST-API (normaler XHR-Request) und nein die Uploads laufen nicht in einem eigenen Thread. Warum ist das sinnvoll?

Hilfreich?
Diskutiere mit!

Empfohlene Artikel