0

複数のファイルをダウンロードする必要があるアプリを開発しています。アプリがフォアグラウンドにあるときは問題ありません。
アプリがバックグラウンドにあるときにダウンロードを続行するには、次のコードを使用しています (アプリがアクティブでない場合の iOS バックグラウンド ダウンロードから):

    self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
            [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
            self.backgroundTask = UIBackgroundTaskInvalid;
        }];
        /* ここでダウンロード コード、例えば getDataFromServer メソッドとしましょう */

        [self getDataFromServer]; // そのダミーメソッド

        /* ダウンロード コードはここまでです */

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

            [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
            self.backgroundTask = UIBackgroundTaskInvalid;
        });

このコードは、デバイスの画面がオンになるまで問題ありません。しかし、デバイスがスタンバイ状態になると、何かが起こり、ダウンロードが停止します。おそらく ios は、バックグラウンド プロセスのアクティブなインターネット接続を閉じます。

IOS 6 および 7 でスタンバイ中に接続を維持する方法はありますか?

4

1 に答える 1

2

beginBackgroundTaskWithExpirationHandler大量のユーザー データをディスクに保存するなど、実行時間の長いプロセスを完了するためのバックグラウンド時間は約 10 分しかありません。これはファイルのダウンロードには使用しないでください。バックグラウンドでファイルをダウンロードするには、 と を使用することをお勧めしNSURLSessionますNSURLSessionDownloadTask

于 2014-10-06T14:50:09.690 に答える