iOS Application d'arrière-plan du Téléchargement
Hey! J'ai besoin de savoir comment je peux avoir mon Application iOS de lancer le téléchargement en arrière-plan de l'application (comme l'ont d'exécuter le téléchargement dans l'AppDelegate fichier) afin de changer ViewControllers de ne pas interrompre ou annuler le téléchargement. J'ai aussi besoin d'être en mesure d'obtenir la progression du téléchargement (0.00000 - 1.00000
), pour définir un UIProgressView
objet, ce qui signifie aussi j'ai besoin d'un - (void)progressDidChangeTo:(int)progress
fonction.
OriginalL'auteur Hank Brekke | 2011-01-02
Vous devez vous connecter pour publier un commentaire.
Suffit d'utiliser ASIHTTPRequest il est plus facile que NSURLRequest et fait exactement ce dont vous avez besoin.
Il exemples qui montre comment télécharger en arrière-plan et en faire rapport des progrès.
Je n'aurais pas télécharger quoi que ce soit dans l'AppDelegate directement. Au lieu de cela, je voudrais créer un coin de la classe, juste pour ce but. Appelons ça de la
MyService
je puis initialiser la classe de mon application délégué.La classe peut travailler comme un singleton ou peut être transmis à chaque vue-contrôleur qui l'exige.
Dans
MyService
classe, je voudrais ajouter le ASINetworkQueue et quelques méthodes pour gérer les demandes quand ils sont prêts. Voici le code de l'ASI et des exemples que vous pouvez utiliser:Si vous avez besoin de fixer la barre de progression. Je voudrais juste exposer les setDownloadProgressDelegate de ASINetworkQueue dans mon MyService classe et dans mon ViewControllers comme ça:
BTW. Si vous avez besoin de continuer le téléchargement de même lorsque votre application s'arrête, vous pouvez définir
ShouldContinueWhenAppEntersBackground
propriété de votre demande OUI.J'ai juste mis à jour ma réponse.
Le problème est le reportFailure sera appelée dans ASIHTTPRequest.m a chaque fois que mon application est en revenant de l'arrière-plan. J'utilise de la même manière que vous l'avez suggéré dans votre post et le ShouldContineWhenAppEntersBackground définie sur OUI.
OriginalL'auteur Piotr Czapla
vous pouvez utiliser NSURLConnection pour lancer une requête asynchrone qui ne cause pas de votre INTERFACE utilisateur d'être congelés. Vous pouvez le faire en faisant quelque chose comme:
afin d'avoir votre progression, vous pouvez utiliser le:
de déléguer l'appel d'inspecter la réponse.expectedContentLength et ensuite utiliser le
de suivre la quantité de données qui a été téléchargé et calculer un pourcentage.
Espère que cette aide,
Moszi
Vous pouvez créer une classe singleton pour la gestion de votre téléchargement, de cette façon, cette classe sera autour de même si votre vue-contrôleur est dealloc-ed. (le pattern singleton sur wikipédia: en.wikipedia.org/wiki/Singleton_pattern )
OriginalL'auteur Moszi