Download der iOS-Hintergrundanwendung

7

Hey! Ich muss wissen, wie ich mit meiner iOS-Anwendung einen Download im Hintergrund der Anwendung starten kann (z. B. den Download in der AppDelegate-Datei ausführen), sodass das Ändern von ViewControllern den Download nicht unterbrechen oder abbrechen kann. Ich muss auch in der Lage sein, den Fortschritt des Downloads zu erhalten ( 0.00000 - 1.00000 ), um ein UIProgressView -Objekt zu setzen, was auch bedeutet, dass ich eine - (void)progressDidChangeTo:(int)progress -Funktion brauche.

    
Hank Brekke 02.01.2011, 18:31
quelle

2 Antworten

18

Verwenden Sie einfach ASIHTTPRequest , das ist viel einfacher als NSURLRequest und macht genau das, was Sie brauchen. Es zeigt Beispiele , die zeigen, wie man im Hintergrund herunterlädt und wie man Fortschritte meldet.

Ich würde nichts direkt im AppDelegate herunterladen. Stattdessen würde ich nur für diesen Zweck eine separate Klasse erstellen. Nennen wir es MyService . Ich würde dann diese Klasse in meinem App-Delegaten initialisieren.

Die Klasse kann als Singleton arbeiten oder an jeden View-Controller übergeben werden, der sie benötigt.

In MyService class Ich würde die ASINetworkQueue und einige Methoden hinzufügen, um die Anfragen zu bearbeiten, wenn sie fertig sind. Hier ist der Code von ASI Beispielen, die Sie verwenden können:

%Vor%

Wenn Sie den Fortschrittsbalken einstellen müssen. Ich würde einfach das setDownloadProgressDelegate von ASINetworkQueue in meiner MyService-Klasse verfügbar machen und es in meinen ViewControllern wie folgt setzen:

%Vor%

Übrigens. Wenn Sie den Download fortsetzen müssen, selbst wenn Ihre App beendet wird, können Sie die Eigenschaft ShouldContinueWhenAppEntersBackground Ihrer Anfrage auf YES setzen.

    
Piotr Czapla 02.01.2011, 19:03
quelle
3

Sie können NSURLConnection verwenden, um eine asynchrone Anfrage zu starten, bei der Ihre Benutzeroberfläche nicht eingefroren wird. Sie können dies tun, indem Sie Folgendes tun:

%Vor%

Um Ihre Fortschritte zu erzielen, können Sie Folgendes verwenden:

%Vor%

Delegieren Sie den Aufruf, um die response.expectedContentLength zu prüfen, und verwenden Sie dann

%Vor%

um die Menge der heruntergeladenen Daten zu verfolgen und einen Prozentsatz zu berechnen.

Hoffe, das hilft, Moszi

    
Moszi 02.01.2011 18:50
quelle