菜鸟教程小白 发表于 2022-12-12 15:41:56

ios - AFNetworking后台下载一段时间后自动停止,我需要恢复它


                                            <p><p>我正在使用 AFNetwork(它基于 NAFDownloadRequestOperation),我的任务是从亚马逊存储桶中一一下载多个 zip 文件。
当应用程序处于前台时,一切都运行良好,但是当应用程序进入后台模式时,时间下载只运行一段时间,它会自动停止。我读了一些关于它的博客,因为我在下载停止之前调用了以下方法。 </p>

<pre><code> [self.operationUpdate setShouldExecuteAsBackgroundTaskWithExpirationHandler:^{
                NSLog(@&#34;downloading will stop&#34;);
            }];
</code></pre>

<ul>
<li><strong>问题</strong>后台模式下载自动停止</li>
<li><strong>我想要什么</strong>:如果下载在后台停止并且当应用再次进入前台时,我需要从该点继续下载。</li>
</ul>

<p>我也在 AppDelegate 中使用了以下代码,但我不明白如何恢复之前的下载。</p>

<pre><code>__block UIBackgroundTaskIdentifier backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) {
      ;
      NSLog(@&#34;applicationWillResignActive&#34;);

      ;

   //   [ cancelAllHTTPOperations];
    }];
</code></pre>

<p>如果有人有任何解决方案,请告诉我,提前谢谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您应该使用 <a href="https://github.com/steipete/AFDownloadRequestOperation" rel="noreferrer noopener nofollow">AFDownloadRequestOperation</a> </p>

<p>您的请求将如下所示</p>

<pre><code>AFDownloadRequestOperation *operation = [ initWithRequest:request targetPath:path shouldResume:YES];
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
      NSLog(@&#34;Successfully downloaded file to %@&#34;, path);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
      NSLog(@&#34;Error: %@&#34;, error);
    }];
    ;
</code></pre>

<p>重新启动应用程序并生成具有相同 url 的请求后,它将继续下载。 "shouldResume:YES"有效。</p>

<p>因此,您可以在后台任务中重新创建完成下载的请求</p>

<pre><code>__block UIBackgroundTaskIdentifier backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) {
      ;
      NSLog(@&#34;applicationWillResignActive&#34;);

      ;

   //   recreate here your request to finish fownload,
   //or recreate in when app will enter foreground
    }];
</code></pre>

<p>希望对你有帮助</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - AFNetworking后台下载一段时间后自动停止,我需要恢复它,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31176421/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31176421/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - AFNetworking后台下载一段时间后自动停止,我需要恢复它