Looking for ios Keywords? Try Ask4Keywords

iOSNSURLSession


Bemerkungen

Die NSURLSession- Klasse und verwandte Klassen stellen eine API zum Herunterladen von Inhalten bereit. Diese API bietet eine Vielzahl von Delegatmethoden für die Unterstützung der Authentifizierung und gibt Ihrer App die Möglichkeit, Hintergrund-Downloads durchzuführen, wenn Ihre App nicht ausgeführt wird oder in iOS, wenn Ihre App angehalten ist.

Auf hoher Ebene basiert NSURLSession auf dem Konzept von Sitzungen und Aufgaben. Eine Aufgabe stellt eine einzelne Anforderung für eine einzelne URL (oder einen einzelnen Upload zu einer einzelnen URL) dar. Eine Sitzung ist eine Gruppe verwandter Anforderungen.

Das Betriebssystem stellt eine einzige bereits vorhandene Sitzung bereit - die gemeinsam genutzte Sitzung, die im Wesentlichen wie NSURLConnection funktioniert. Darüber hinaus können Sie nach Bedarf eigene Sitzungen in Ihrer App erstellen.

Verschiedene Apps verwenden Sitzungen auf unterschiedliche Weise. Viele Apps erstellen beim Start eine einzige Sitzung, die sie einfach wiederverwenden. Andere Apps profitieren von der Möglichkeit, eine Gruppe verwandter Aufgaben abzubrechen (z. B. ein Webbrowser, der alle ausstehenden Anforderungen abbricht, wenn Sie eine Registerkarte schließen) und somit eine Sitzung für jede Gruppe verwandter Anforderungen erstellen.

Der erste Schritt bei der Verwendung von NSURLSession ist das Erstellen eines Sitzungskonfigurationsobjekts. Das (normalerweise) wiederverwendbare Objekt enthält verschiedene Sitzungseinstellungen, die Sie für Ihre speziellen Bedürfnisse anpassen können, z. B. maximale Parallelität, zusätzliche Header, die mit jeder Anfrage gesendet werden sollen, ob Anfragen über das Mobilfunkgerät (nur iOS) gesendet werden dürfen, Timeouts, Anmeldeinformationsspeicher, minimale TLS-Version und sogar Proxy-Einstellungen.

Es gibt drei Arten von Sitzungskonfigurationen, je nachdem, wie sich die resultierende Sitzung verhalten soll:

  • Standardkonfigurationen erstellen Sitzungen, die ähnlich wie NSURLConnection funktionieren.
  • Hintergrundkonfigurationen erstellen Sitzungen, in denen Anforderungen außerhalb des Prozesses ausgeführt werden, sodass Downloads auch dann fortgesetzt werden können, wenn die App nicht mehr ausgeführt wird.
  • Ephemere Konfigurationen erstellen Sitzungen, in denen nichts auf der Festplatte zwischengespeichert wird, keine Cookies auf der Festplatte usw. gespeichert werden und sich daher zum Sichern von Objekten wie inkognito Browserfenstern eignen.

Wenn Sie eine Hintergrundkonfiguration erstellen, müssen Sie einen Sitzungsbezeichner angeben, mit dem Sie die Hintergrundsitzung später erneut zuordnen können (wenn Ihre App beendet ist oder vom Betriebssystem angehalten oder beendet wird). Es darf nicht mehr als eine Instanz einer Sitzung mit der gleichen ID in Ihrer App aktiv sein. Diese Konfigurationen sind in der Regel nicht wiederverwendbar. Alle anderen Sitzungskonfigurationen können wiederverwendet werden, um beliebig viele Sitzungen zu erstellen. Wenn Sie also mehrere Sitzungen mit ähnlichen Einstellungen erstellen müssen, können Sie die Konfiguration einmal erstellen und bei jeder neuen Sitzung erneut verwenden.

Nachdem Sie eine Sitzung erstellt haben, können Sie in dieser Sitzung Aufgaben erstellen. Es gibt drei Arten von Aufgaben:

  • Datenaufgaben geben Daten als NSData- Objekt zurück. Diese sind für die allgemeine Verwendung geeignet, werden jedoch in Hintergrundsitzungen nicht unterstützt.
  • Download-Aufgaben geben Daten als Datei auf der Festplatte zurück. Diese eignen sich für größere Anforderungen oder für die Verwendung in Hintergrundsitzungen.
  • Aufgaben hochladen Daten von einem NSData-Objekt oder von einer Datei auf der Festplatte hochladen. Sie stellen ein Datenobjekt oder eine Datei bereit, die den POST-Body bereitstellt. Die Body-Daten / -Datei, die Sie für die Task bereitstellen, überschreibt alle Body-Daten / -Dateien, die im NSURLRequest-Objekt (falls vorhanden) bereitgestellt werden.

Mit jedem dieser Typen können Sie die Antwortdaten auf verschiedene Arten abrufen, indem Sie blockbasierte Rückrufe verwenden oder einen Delegaten für die Sitzung bereitstellen und Delegatmethoden implementieren.

Darüber hinaus können Sie mit NSURLSession Delegierungsmethoden für die Authentifizierung, die benutzerdefinierte TLS-Zertifikatsverarbeitung (sowohl für Clientzertifikate als auch für die Serverüberprüfung), das Ändern des Cache-Verhaltens usw. bereitstellen.

NSURLSession Verwandte Beispiele