Was ist der beste Ansatz, um die Hintergrundübertragung zu verwenden, um Assets aus der Galerie hochzuladen?NSURLSession: Hochladen von Assets mit Hintergrundübertragung
Scheint, wie uploadTaskWithRequest:fromData:
nicht mit NSURLSession
mit backgroundSessionConfiguration
erstellt funktioniert, da es eine Ausnahme verursacht: „app beenden aufgrund nicht abgefangene Ausnahme‚NSGenericException‘Grund:‚Laden Sie Aufgaben im Hintergrund Sitzungen aus einer Datei sein muss“. Aus der Beschreibung der Ausnahme zu folgern, sollte die Hintergrundübertragung nicht auch mit gestreamten Upload-Aufgaben funktionieren.
Fair genug. uploadTaskWithRequest:fromFile:
ist die erste Sache, die einem in den Sinn kommt, wenn Sie über das Hochladen von Daten nachdenken, die Sie bereits auf der Festplatte haben. Aber die NSURLSession-Klassenreferenz sagt uns, dass diese Methode nur mit Datei-URLs funktioniert, aber wenn Sie den URL-Pfad von Asset abrufen, beginnt dieser mit "assets-library: // asset/..." und vorausgesetzt, dieser Pfad funktioniert auch nicht.
Es scheint also, dass die einzige Option übrig ist, Datei aus der Asset-Bibliothek in ein temporäres Verzeichnis zu kopieren und die Datei-URL uploadTaskWithRequest:fromFile:
bereitzustellen. Aber es macht keinen Sinn, da Sie bereits Asset-Dateien auf Ihrer Festplatte gespeichert haben. Fehle ich etwas?
Update:
Talked mit Apple-Ingenieur bei Tech Talks Veranstaltung und er bestätigt, dass Hintergrund NSURLSession nur Urls Datei unterstützt. In der Tat müssen Sie die Asset-Bibliothek in ein temporäres Verzeichnis kopieren und die Datei-URL uploadTaskWithRequest:fromFile:
angeben, um sie mit Hintergrund NSURLSession hochzuladen. Dieses Verhalten kann sich jedoch in Zukunft ändern.
Nun, ja. Datei kopieren ist im Grunde das was ich gerade mache. Wie geht es dir mit der Nursession? –
Ihre Vermutung schien richtig zu sein. –
@RobertGeifman Also im Prinzip uploadTaskWithRequest: fromData: funktioniert nicht? – marciokoko