Dateien, Downloads und Transfer
Vieles, was bei Dateien auf dem iPhone willkürlich wirkt, folgt aus einer einzigen Isolationsregel — und vieles, was Downloads zuverlässig macht, aus einer einzigen HTTP-Funktion. Hier sind beides, plus die Wege, auf denen Dateien von einem Gerät zum anderen gelangen.
-
Sandbox
-
Die Regel, dass jede App nur ihren eigenen Speicher sieht. Deshalb kann eine App die Downloads einer anderen nicht öffnen — und deshalb gibt es unter iOS kein „die Datei liegt neben dem Video“.
Jede App bekommt ein privates Verzeichnis und keinen Einblick in fremde. Dateien wandern zwischen Apps nur durch bewusste Schritte — Teilen-Sheet, Dokumentenauswahl, Drag & Drop — jeweils eine Entscheidung der Person, nicht ein Griff der App.
Der Preis zeigt sich an kleinen Stellen. Desktop-Player finden
film.srtnebenfilm.mkvvon allein; unter iOS gibt es kein „neben“, also muss eine Untertiteldatei absichtlich übergeben werden und die App die Paarung merken.Siehe auch: App-GruppeSecurity-scoped Bookmark
-
App-Gruppe
App Group -
Ein gemeinsamer Container, den zwei Apps desselben Entwicklers öffnen dürfen — der einzige erlaubte Riss in der Sandbox. So übergibt eine Share-Extension eine Datei an die zugehörige App.
Eine Share-Extension ist ein eigenes Programm, getrennt von der App, zu der sie zu gehören scheint — mit eigener Sandbox und sehr kurzer Lebensdauer. Sie kann nicht in den Speicher der Haupt-App schreiben.
Also schreibt sie in einen Container, den beide sehen dürfen, und die App leert ihn beim nächsten Öffnen. Nichts überschreitet eine Entwicklergrenze, und nichts wandert ohne einen bewussten Tipp.
Siehe auch: Sandbox
-
Security-scoped Bookmark
-
Ein Token, das die Erlaubnis für einen Ordner außerhalb der Sandbox merkt — externe Festplatte, Ordner in iCloud — damit die App ihn später ohne erneute Nachfrage öffnen kann.
Wenn du einen Ort über den System-Dateiauswähler wählst, gilt die Erlaubnis nur für diesen Moment. Ein Bookmark erhält sie über App-Starts hinweg, und die App muss den Zugriff, den er darstellt, ausdrücklich starten und beenden.
Damit lässt sich eine externe SSD durchsuchen, ohne etwas zu kopieren — und genau auf das beschränkt, was du gewählt hast: Ein Bookmark auf einen Ordner sagt nichts über den Nachbarordner aus.
Siehe auch: Sandbox
-
Range-Anfrage
Range Request -
Den Server nach einem bestimmten Ausschnitt einer Datei fragen — Bytes 5.000.000 bis 5.999.999 — statt nach dem Ganzen. Das macht Downloads fortsetzbar und erlaubt mehreren Verbindungen, eine Datei gleichzeitig zu holen.
Ein Server mit Range-Unterstützung antwortet mit 206 Partial Content und dem gewünschten Ausschnitt. Einer ohne antwortet mit 200 und schickt alles von vorn — der Unterschied zwischen Fortsetzen und neu starten.
Alles Interessante an einer Download-Engine hängt an dieser einen HTTP-Funktion. Ohne sie gibt es kein Fortsetzen nach Verbindungsabbruch, keines nach dem Neustart und keinen Weg zu mehr als einer Verbindung.
Siehe auch: Fortsetzbarer DownloadParallele Verbindungen
-
Fortsetzbarer Download
-
Ein Transfer, der genau dort weitergeht, wo er gestoppt hat, statt von vorn zu beginnen — indem er festhält, wie viele Bytes festgeschrieben sind, und nur den Rest anfordert.
Voraussetzung: Die gezählte Zahl darf nie optimistisch sein. Ein Byte, das als geschrieben gilt, aber noch im Puffer liegt, wird zum Loch in der Datei, wenn die App beendet wird — und ein Loch mitten in einem Video zeigt sich erst nach einer Stunde Wiedergabe.
Deshalb muss die Zählung dem Schreiben auf die Festplatte folgen, nicht dem Lesen aus dem Netz — und jeder Übergang zwischen Vordergrund- und Hintergrund-Transfer muss sich auf eine Zahl einigen.
Siehe auch: Range-AnfrageHintergrund-Transfer
-
Parallele Verbindungen
Multi-Connection, Chunked Download -
Eine Datei in Ranges aufteilen und mehrere gleichzeitig holen. Hilft, wenn eine einzelne Verbindung gedrosselt wird — und bringt nichts, wenn deine eigene Leitung der Engpass ist.
Ein Server, der jede Verbindung begrenzt, lässt sich oft dazu bringen, über mehrere in Summe mehr zu liefern. Hier verdient Multi-Connection-Download seinen Ruf.
Es ist kein Zauber und wird oft missverstanden. Ist deine Leitung schon ausgelastet, teilen mehr Verbindungen dieselbe Kapazität in kleinere Stücke und erzeugen Overhead. Manche Server lehnen mehrere Anfragen von einer Adresse auch ab oder drosseln sie.
Siehe auch: Range-AnfrageFortsetzbarer Download
-
Hintergrund-Transfer
-
Ein Download, der an das Betriebssystem übergeben wird, damit er weiterläuft, nachdem die App geschlossen ist. Das System entscheidet über das Timing — der Preis dafür, dass er überhaupt weiterläuft.
Eine iOS-App stoppt kurz nachdem du sie verlässt. Ein Transfer an den Hintergrunddienst des Systems überlebt das, überlebt das Beenden der App und setzt nach einem Neustart fort.
Was du aufgibst, ist Kontrolle. Das System bündelt solche Transfers nach eigener Einschätzung von Strom und Netz — ein Hintergrund-Download kann also pausieren und fortsetzen, wo ein In-App-Download das nicht täte — und er wird fertig.
Siehe auch: Fortsetzbarer DownloadSandbox
-
WebDAV
-
Eine HTTP-Erweiterung, die einen Webserver zum Dateiserver macht: auflisten, lesen, schreiben, verschieben, löschen. Das sprechen Nextcloud und ownCloud — und die meisten NAS-Geräte.
Weil darunter HTTP liegt, läuft WebDAV über dieselbe Infrastruktur wie alles andere im Web — keine Sonderports, kein Sonderprotokoll — deshalb hat es überlebt, während aufwendigere Dateiprotokolle verschwunden sind.
Für alle, die Dateien lieber nicht in die Cloud eines Unternehmens legen, ist es die praktische Alternative: eigener Server, eigene Zugangsdaten, gewöhnliche Standards.
Siehe auch: Cloud-Speicher
-
Cloud-Speicher
-
Dateien auf dem Server eines anderen, erreichbar über dessen API — Dropbox, OneDrive, Box, pCloud. Jeder hat seine eigene Schnittstelle, deshalb unterstützen Apps sie einzeln.
Es gibt kein universelles Cloud-Protokoll. Jeder Anbieter hat eigene API und eigenen Anmeldefluss gebaut, deshalb ist ein neuer Anbieter in einer App echte Arbeit und kein Konfigurationseintrag.
Die Anmeldung läuft meist über OAuth: Die App sieht das Passwort nie; der Anbieter authentifiziert dich und gibt ein Token zurück, das du jederzeit in dessen Einstellungen widerrufen kannst.
Siehe auch: WebDAV
-
WebRTC
-
Ein Standard, mit dem zwei Geräte sich direkt verbinden — ohne Server dazwischen, sobald die Verbindung steht. So verschiebt Device-to-Device-Transfer eine Datei quer durch den Raum.
Ein kleiner Signalisierungs-Server stellt die beiden Geräte einander vor — dafür ist der sechsstellige Code da — und zieht sich dann zurück. Die Datei wandert direkt zwischen den Geräten und wird nirgends dazwischen gespeichert.
Im selben Netz ist es so schnell, wie das Netz erlaubt. Über das Internet hängt es davon ab, ob beide Seiten direkt erreichbar sind — dort scheitern Verbindungen gelegentlich aus Gründen, die keines der Geräte sehen kann.
Siehe auch: Lokaler HTTP-Server
-
Lokaler HTTP-Server
-
Eine App, die im eigenen Netz Webanfragen beantwortet, damit ein Webbrowser auf dem Computer eine Seite öffnen kann, die das Telefon ausliefert. So funktioniert Wi-Fi-Transfer — ohne Kabel und ohne Konto.
Das Telefon zeigt eine Adresse; der Computer öffnet sie; die Seite kommt vom Telefon selbst. Dateien wandern direkt über das lokale Netz und verlassen es nie.
Weil jeder im selben Netz die Adresse erreichen kann, braucht es eine Sperre — einen Code, Berechtigungen pro Aktion, und destruktive Operationen aus, bis du sie bewusst einschaltest.
Siehe auch: WebRTC