iOS: Dateien im Hintergrund hochladen?
Guten Tag,
In der Beschreibung für DRACOON for iOS findet sich dieses:
"Please note that the media upload is only carried out if the DRACOON app is in the foreground.
iOS does not allow media upload in the background to save energy.
If you want to use the media upload, you should start the DRACOON app now and then and leave it in the foreground."
Dann wird dies vermutlich auch für das Swift-SDK gelten.
Gibt es wirklich keine Möglichkeit, Daten im Hintergrund unter iOS auf die DRACOON-Cloud hochzuladen?
Im Netz findet man so den einen oder anderen Ansatz für einen allgemeinen Datei-Upload unter iOS.
-
Offizieller Kommentar
Hallo Volker,
iOS schränkt prinzipiell die Abarbeitung von Tasks im Hintergrund ein, unter anderem um den Batterieverbrauch einzuschränken und um der App im Vordergrund die bestmögliche Leistung zur Verfügung zu stellen. Die von dir beschriebenen Workarounds (bspw. das Abfragen der Location um CPU-Zeit im Hintergrund zu erhalten) sind uns bekannt. Wir achten jedoch sehr darauf, dass die von uns angebotenen Anwendungen die von Apple aufgestellten Regeln zur Hintergrundnutzung einhalten.
Generell beobachten wir die Situation sehr genau und reagieren auf neue von Apple angebotene APIs. So ist es ab Version 5.13 unserer iOS-App möglich, bereits gestartete Up- und Downloads im Hintergrund abzuschließen.
Viele Grüße
MichaelAktionen für Kommentare -
Guten Tag,
ich möchte dieses Thema nochmal aufgreifen. Anwender finden es bei Nutzung der eigenentwickelten App sehr lästig, dass Daten nicht im Hintergrund hochgeladen werden können. Muss die App immer wieder beim Upload aktiviert werden. Ist das SDK in der Zwischenzeit so erweitert worden, dass man jetzt selbst im Hintergrund hochladen kann? Oder gibt es einen Ausblick wann dieses realisiert wird ? Sonst würde ich vermutlich den "Trick" mit Abfragen der Location probieren.
Grüße
Volker Jonas
-
Hallo Volker,
mit dem DRACOON Swift SDK ist das Hochladen im Hintergrund möglich. Dazu muss beim Upload eine background session config mitgegeben werden, z.B.:
let sessionConfig = URLSessionConfiguration.background(withIdentifier: "com.dracoon.upload.\(uploadId)")
dracoonClient.nodes.uploadFile(uploadId: uploadId, request: createRequest, fileUrl: fileUrl, callback: callback, resolutionStrategy: .autorename, sessionConfig: sessionConfig))Nach Abschluss des Uploads wird das UIApplicationDelegate in der handleEventsForBackgroundURLSession mit dem in der Session verwendeten Identifier informiert.
Damit die laufende Session wiedergefunden wird, falls die App beispielsweise über einen force close beendet wird, implementiert man im UIApplicationDelegate die applicationDidBecomeActive:
func applicationDidBecomeActive(_ application: UIApplication) {
dracoonClient.nodes.resumeBackgroundTasks()
}Viele Grüße
Mathias
-
Hallo Mathias,
Danke für die Rückmeldung mit dem Dracoon SDK 2.1.0 geht der Datei-Upload jetzt im Hintergrund.
Aber ich frage mich, ist damit auch das grundsätzliche Problem, was ich zu Beginn meines Post - Mai 2020 - gefragt hatte, lösbar ?
Die App selbst befindet sich irgendwann nicht mehr im Vordergrund und der Upload steht so lange still bis der Anwender die App wieder in den Vordergrund holt.Ich hatte gestern auch einiges mit der neuen Funktionalität in einer eigen entwickelten App probiert, Dateien wurden hochgeladen.
Dann habe ich folgenden Test gemacht:
Für ca. 50 Dateien mit je 10 MB direkt 50 Background Sessions erzeugt, also ein Gesamtupload von ca. 500 MB
40 Uploads kamen an, dann hing die App.
Neustart der App erzeugte bei weiteren Versuchen bei dem Objekt der Klasse UploadCallback immer diese Meldung "Response status code was unacceptable: 507"
Auch wenn ich ein Datei-Upload nicht mit der neuen Hintergrundfunktionalität versuchte.
Wenn ich mit Dracoon Web App einen Upload probiere, funktioniert dieser.
Könnte auf ein grundsätzliches Problem der Eigenentwicklung hindeuten, nur wenn ich mit der Dracoon-App ein Upload probiere
kommt immer die Meldung: "Fehler beim Hochladen. Dateien konnten nicht hochgeladen werden, da ihre Gesamtgröße..."
Vor dem Problem mit dem Upload der 50 Dateien, funktionierte Dateiupload mit der Dracoon App einwandfrei.Aktuell ist mir eine Weiterentwicklung der eigenen App so nicht möglich.
Wäre hilfreich, wenn man dieses Problem lösen könnte, ich sehe so direkt nicht, wie ich es lösen kann.Mit freundlichen Grüßen
Volker Jonas -
Hallo Volker,
die erwähnten Fehlermeldungen beim Upload weisen auf ungenügenden Speicherplatz im Zielraum oder -ordner hin.
Der automatische Media-Upload in der DRACOON-App schließt aktuell (v6.4.0/v5.17.0) nur bereits begonnene Uploads im Hintergrund ab, startet allerdings keine neuen, solange sich die App im Hintergrund befindet. Wir werden eine Änderung dieses Verhaltens diskutieren.
Viele Grüße,
Mathias
-
Hallo Mathias,
dann verstehe aber nicht wieso ich mit der Dracoon Web App noch Dateien hochladen kann, mit der Dracoon-App aber nicht. Ich sehe aber auch in der Dracoon App, die mit der Dracoon Web App gerade hochgeladene Datei. Bin somit auch vermutlich im richtigen "Raum" oder "Ordner", habe von 5 GB verfügbaren Speicherplatz gerade mal ca. 200 MB belegt.
Zum automatischen Media-Upload ist dann die Frage, ob dieses auch in einer Eigenwicklung einer App möglich ist. Ist mir leider immer noch nicht klar. Der Quellcode der Dracoon-App steht vermutlich nicht zur Verfügung.
Vielen Dank für die Aufklärung
Mit freundlichen Grüßen
Volker Jonas
-
Die grundsätzliche Ablauf beim automatischen Media-Upload ist der folgende:
Die gewünschten Mediendateien sortiert aus der PhotoLibrary abholen und danach mittels Background Session hochladen. Sobald die App in den Hintergrund geht, kann man weitere Uploads in der Background Session starten, siehe dazu auch hier.
Zwar können auch neue Uploads im Hintergrund gestartet werden, hierfür gibt es allerdings Limitierungen seitens iOS (Abschnitt: "Use Background Sessions Efficiently").
Viele Grüße,
Mathias
-
Hallo Mathias,
Danke würde es ja gerne ausprobieren, aber das Problem mit dem angeblich nicht vorhandenen Speicherplatz besteht weiterhin. Habe alle Ordner und Dateien über die Dracoon-Web-App gelöscht. Kein Upload möglich außer Web-App.
Mit freundlichen Grüßen
Volker Jonas
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
8 Kommentare