iCloud und Logbuch App

Update vom 18.09.2021 (überarbeitet am 19.09.2021)

TLDR

Wenn Dir der Text hier zu lang ist, gehe zur letzten Überschrift, und befolge das bitte immer. Für mehr Details lese auch gerne alles dazwischen.

iCloud synchronisierung nicht zum aufzeichnen nutzen!

In den letzten Wochen kam es vermehrt dazu, dass mir Anwender von Problemen mit der Synchronisierung der Logbuch Daten berichteten. Auch ich selbst konnte teilweise Probleme bei meinem Segeltörn letzte Woche nachstellen und musste auf die lokale Datenbank ausweichen. Darum rate ich ausdrücklich davon ab die iCloud synchronisierung aktiv während dem Törn zu nutzen!
Es ist aber durchaus möglich die Daten nach dem Törn in die iCloud zu kopieren und dort dann synchron auf alle Deine Geräte zu verteilen. Dort ist es dann auch möglich Anpassungen an den Einträgen durchzuführen die sich sauber synchronisieren zwischen Deinen Geräten. Lediglich die automatische Aufzeichnung eines Törns im Hintergrund während die iCloud synchronisierung aktiv ist, führt zu Problemen. Wenn Du die automatische Aufzeichnung (blauer Rahmen in der App) nicht nutzt, wirst Du keine Probleme bekommen.

Technischer Hintergrund

Wenn ich von iCloud synchronisierung spreche meine ich eigentlich die Nutzung von Core Data mit Cloud Kit (wurde mit iOS 13 von Apple vorgestellt und eingeführt). Das Problem ist, dass diese synchronisierung seit einiger Zeit nicht mehr zuverlässig im Hintergrund funktioniert. Dies führt dazu, dass der Upload eines neuen Eintrags in die iCloud teilweise nicht stattfindet, und noch schlimmer, iOS die Logbuch App im Hintergrund beendet, weil iOS sich an den Hintergrund Tasks von Core Data mit Cloud Kit stört. Als Entwickler kann ich keinen Einfluß auf Core Data mit Cloud Kit nehmen. Ich kann es einschalten oder ausschalten, die funktionalität stellt Apple.

Dies sind die bekannten Probleme

Empfohlene Nuzung der iCloud synchronisierung

Wenn Du die iCloud synchronisierung nutzen willst, dann bitte nur zur Datenhaltung, nicht aber zum aufzeichnen auf dem Wasser!

Was es generell zu verstehen gilt

OK, und wie mache ich es jetzt, so dass es keine Probleme gibt?

Wiederhole folgendes für jeden Törn
  1. Du willst einen neuen Törn starten und automatisch aufzeichnen
  2. Deaktiviere iCloud Sync (Logbuch App > Einstellungen > iCloud) auf dem Gerät das Du auf dem Törn zur Aufzeichnung benutzt. Und prüfe es nach dem App neustart (Schalter grau).
  3. Nutze die Logbuch App nun wie üblich zum aufzeichnen
  4. Am Ende des Törns, exportiere Deine Datenbank (Hilfswerkzeuge > Export > SQLite) und wähle In Dateien sichern und speichere die Datei entweder in iCloud Drive (oder alternativ im lokalen Ordner wenn Du kein iCloud Drive haben solltest)
  5. Aktiviere iCloud Sync wieder (Logbuch App > Einstellungen > iCloud). Und prüfe es nach dem App neustart (Schalter grün).
  6. Öffne in der Dateien App die eben exportierte Datenbank mit der Logbuch App und wähle das Logbuch zum imporen aus.