发生了什么事NKIssue下载后终止,由于网络不可用?(What happened after NK

2019-09-26 14:59发布

我在当用户点击下载按钮,我们使用下载的问题一个报亭应用

[nkAssetDownload downloadWithDelegate:自];

现在,在下载假设网络断开连接之间,NSURLConnection的调用didFailWithError:(NSError *)错误方法。 我告知用户与警报和更新界面,因此下载按钮获得启用。 现在,当用户点击“下载”按钮,我检查

如果(nkIssue.downloadingAssets.count == 1){再次开始下载[nkIssue.downloadingAssets objectAtIndex:0]; }否则{开始下载与nkAssetDownload = [nkIssue addAssetWithRequest:的URLRequest]; }

我对这个几个查询

1)为什么我总是得到nkIssue.downloadingAssets.count == 0时,用户点击一次“下载”按钮? 岂不是1,它应该仍然是iOS中的下载队列中的问题?

2)在用户点击“下载”了,问题应继续从同一位置正确下载? 我并不总是遵守这种行为,有时它开始从开始下载(叹气)。

虽然如果我关闭应用程序,从内存(双击Home键,长按应用图标和删除),然后再次启动我得到删除它[nkLib downloadingAssets] .Count中的“didFinishLaunchingWithOptions” == 1,我的问题继续下载。

报摊东西每个方面都没有明确由苹果记录。

Answer 1:

我有两个理论,如果你想进一步的调查,并没有更好的想法:

  1. 我很惊讶NSURLConnection的要求didFailWithError。 我本来期望下载的资产留在downloadingAssets以后自动重试。 我的理论是:该didFailWithError方法是可选的和书报摊套件行为有所取决于你是否实现这个方法还是不行。 NSURLConnection的可以检查该委托响应的方法来做出这个决定。 如果实现的方法,有一个网络错误,使用didFailWithError方法报告的错误。 之后方法执行结束时,下载的资产会从库中删除。 如果不实现方法下载不会失败的任何错误都被书报亭包进行处理:下载资产将留在队列中,将无限期重试(只要你的软件而言,下载将永远不会失败)。

  2. 如果下载失败(或完成)你被didFailWithError(或connectionDidFinishDownloading)委托回调方法通知。 下载资产可能不会从downloadingAssets被删除,直到之后的方法完成。 如果该方法在提出警告,当用户再次按下按钮,下载该资产不会在那里。



文章来源: What happened after NKIssue download terminated due to network unavailability?