Laden Sie viele Dateien (Fotos, Videos) im Hintergrund mit Priorität ab

9

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

    
Libor Zapletal 01.12.2016, 14:09
quelle

2 Antworten

3

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:

%Vor%

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 :

die folgende Methode hinzu %Vor%

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.

    
NSPratik 10.01.2017 13:50
quelle
2

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

    
Vitaliy Gozhenko 10.01.2017 23:36
quelle