Hey!アプリケーションのバックグラウンドでiOSアプリケーションをダウンロードして(AppDelegateファイルでダウンロードを実行するなど)、ViewControllerを変更してもダウンロードが中断されたりキャンセルされたりすることはありません。私はまたUIProgressView
オブジェクトを設定するためにダウンロードの進捗状況(0.00000 - 1.00000
)を得ることができる必要があります。これはまた- (void)progressDidChangeTo:(int)progress
機能が必要であることを意味します。iOSアプリケーションのダウンロード
答えて
に役立ちます。 examplesは、バックグラウンドでダウンロードする方法と進行状況を報告する方法を示しています。
私はAppDelegateで何もダウンロードしません。代わりに、私はその目的のためだけに分離されたクラスを作成します。それをMyService
と呼びましょう。次に、私のアプリケーションデリゲートでそのクラスを初期化します。
このクラスは、シングルトンとして機能したり、シングルトンを必要とする各View Controllerに渡すことができます。
MyService
クラスでは、ASINetworkQueueといくつかのメソッドを追加して、準備ができたら要求を処理します。
- (IBAction)startBackgroundDownloading:(id)sender
{
if (!self.queue) {
self.queue = [[[ASINetworkQueue alloc] init] autorelease];
}
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestDone:)];
[request setDidFailSelector:@selector(requestWentWrong:)];
[self.queue addOperation:request]; //queue is an NSOperationQueue
[self.queue go];
}
- (void)requestDone:(ASIHTTPRequest *)request
{
NSString *response = [request responseString];
//Do something useful with the content of that request.
}
- (void)requestWentWrong:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}
を使用すると、プログレスバーを設定する必要がある場合:ここでは使用することができASIの例からコードがあります。私はちょうど私たMyServiceクラスでASINetworkQueueのsetDownloadProgressDelegateを公開し、そのような私のViewControllersでそれを設定します:
ところで[[MyService service] setDownloadProgressDelegate: self.myUIProgressView];
。アプリが終了してもダウンロードを続行する必要がある場合は、リクエストのShouldContinueWhenAppEntersBackground
プロパティをYESに設定することができます。
NSURLConnectionを使用して非同期要求を開始することができます。非同期要求が発生すると、UIはフリーズしません。あなたが使用することができますあなたの進歩を持つために
NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL:url];
connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
[urlRequest release];
:あなたのような何かをすることによってそれを行うことができます
connection:didReceiveResponse:(NSURLResponse *)response;
デリゲート呼び出しresponse.expectedContentLengthを検査し、その後
connection:didReceiveData:(NSData *)data
を使用するために
ダウンロードしたデータの量を追跡し、パーセンテージを計算します。
希望これはちょうどそれがNSURLRequestより方法が容易であり、あなたが必要な正確に何んASIHTTPRequestを使用し、 Moszi
私はASIHTTPRequestを使用してダウンロードする部分を持っていますが、現在開いているUIViewControllerではなくバックグラウンドでダウンロードを実装する方法を知る必要があるので、View Controllerを終了するとダウンロードが続行されます。 –
ダウンロードを管理するためのシングルトンクラスを作成することができます。この方法では、View Controllerが解放されてもこのクラスが使用されます。 (シングルトンパターンウィキペディア:http://en.wikipedia.org/wiki/Singleton_pattern) – Moszi
- 1. MIMEアプリケーションのダウンロード/ダウンロード
- 2. AWS EC2からiOSアプリケーションへのダウンロード時にタイムアウトの問題
- 3. iOS上でユーザーのダウンロードしたアプリケーションのリストを取得
- 4. iOSアプリケーションのFTPサーバーからファイルをダウンロードする
- 5. iOS 5で自分のアプリケーションをダウンロードできません
- 6. iOSのチェックイン方法は、以前にダウンロードしたアプリケーションですか?
- 7. iOS版は、ダウンロード
- 8. ios 11でデバイスにアプリケーションをダウンロードできません
- 9. iOSデバイスを強制的にダウンロードするアプリケーション
- 10. IOSアプリケーションをdiawiからダウンロードできませんでしたか?
- 11. iPhoneアプリケーションIOS 10でダウンロードできませんでした
- 12. iOS 5.1.1 iPhoneにアプリケーションをダウンロードできません
- 13. iOSアプリケーションで大きなファイルをダウンロードする
- 14. iOSでのファイルのダウンロード
- 15. プログレッシブビデオをiOSでダウンロード
- 16. WPFアプリケーションのダウンロード先
- 17. Image c#アプリケーションのダウンロード
- 18. ランタイムiOSアプリのプログラムファイルをダウンロード
- 19. iOSでの並列ダウンロード
- 20. 私のiosアプリケーションのバックグラウンド/他の画面でダウンロードを続行します
- 21. iOS:アプリケーションのモデルアーキテクチャ
- 22. iosアプリケーションのjpeg2000
- 23. iOSアプリケーションのアプリケーションストレージサイズ
- 24. iOSアプリケーションのベストキャッシュサイズ
- 25. iOSアプリケーションのベンチマーク
- 26. iOSアプリケーションのチェックボックスコントロール
- 27. アプリケーションのローカリゼーション(IOS)
- 28. のiOSアプリケーションは
- 29. 私のアプリケーションのダウンロード数
- 30. SDK ApplicasaをダウンロードするiOS
...私はそうです。 AppDelegateファイルでダウンロードする必要があるので、UIViewControllerを起動したときにダウンロードが停止しないようにします。私は、UIViewControllerを起動してASIHTTPRequestオブジェクトにアクセスさせる方法を知る必要がありますが、オブジェクトをAppDelegateに保持させる必要があります。 –
@hankweb、私はちょうど私の答えを更新しました。 –
問題は、私のアプリがバックグラウンドから戻ってくるたびにreportFailureがASIHTTPRequest.mで呼び出されることです。 あなたの投稿で提案したのと同じ方法で、ShouldContineWhenAppEntersBackgroundをYESに設定しました。 –