Beim ersten Start der App möchte ich alle Dateien vom Server herunterladen und möchte den Download fortsetzen, auch wenn der Benutzer die App verlässt (es ist nicht im Vordergrund). Die Dateien, die ich herunterladen muss, sind Miniaturansichten, Fotos in Originalgröße, andere Dateien und Videos. Ich möchte sie in der Reihenfolge herunterladen, wie ich zuvor geschrieben habe.
Ich benutze Alamofire und ich setze Session-Manager:
%Vor%Dann benutze ich es so:
%Vor%Es ist in der downloadPhoto-Methode und ich rufe es an:
%Vor%Dann könnte ich Anruf für Datei-Download und Video-Download und andere hinzufügen. Aber alle diese Anfragen haben die gleiche Priorität und ich möchte zuerst Miniaturbilder herunterladen (weil das der Benutzer zuerst sieht), dann Bilder in voller Größe und nachdem alle Bilder heruntergeladen wurden, dann Dateien und Videos. Aber alle müssen sich in der Warteschlange befinden, denn wenn der Benutzer die App startet und sie auf den Hintergrund stellt und für mehrere Stunden belässt, muss alles heruntergeladen werden. Ist das möglich? Und wie kann ich das tun?
Ich habe mir alamofire angesehen, dass es die Komponentenbibliothek AlamofireImage hat, die prioritätsbasiert heruntergeladen wird, aber Bilder sind nur ein Teil von Dateien, die ich priorisieren möchte. Danke für die Hilfe
Sehen Sie sich TWRDDownloadManager an.
Es verwendet NSURLSessionDownloadTask
und unterstützt auch Hintergrundmodi.
Was Sie tun müssen, ist:
1. Setzen Sie HTTPMaximumConnectionsPerHost
auf 1, um sicher zu sein, dass der Download seriell erfolgt:
2. Es folgt die Methode, die nacheinander für die Schleife und den Download von Medien iteriert:
%Vor%Vergessen Sie nicht, den Hintergrundmodus zu aktivieren:
enableBackgroundMode:YES
3. Aktivieren Sie Background Modes
in Xcode:
4. Fügen Sie Ihrer AppDelegate
:
Wenn Sie dies tun, wird das Herunterladen seriell ausgeführt und es wird fortgesetzt, selbst wenn die App im Hintergrund läuft oder der Benutzer das Gerät sperrt.
Bitte fügen Sie einen Kommentar hinzu, wenn Sie Fragen oder Hilfe zu diesem Thema haben.
Ich glaube, dass der iOS-Standard URLSessionDownloadTask
Ihnen helfen wird. Es hat die Eigenschaft priority
, die aussieht wie Sie brauchen.
Hier ist die offizielle Dokumentation
Hier ist ein Tutorial
Tags und Links ios swift alamofire background nsurlsessiondownloadtask