gpt4 book ai didi

ios - NKIssue 由于网络不可用而终止下载后发生了什么?

转载 作者:行者123 更新时间:2023-11-29 13:39:19 25 4
gpt4 key购买 nike

我有一个 NewsStand 应用程序,当用户点击下载按钮时,我们使用

下载问题

[nkAssetDownload downloadWithDelegate:self];

现在在下载之间假设网络断开连接,NSURLConnection 调用 didFailWithError:(NSError *)error 方法。我通过警报通知用户并更新 UI,以便启用下载按钮。现在,当用户点击“下载”按钮时,我会检查

if(nkIssue.downloadingAssets.count == 1) { again start download with [nkIssue.downloadingAssets objectAtIndex:0]; } else { start download with nkAssetDownload = [nkIssue addAssetWithRequest:urlRequest]; }

我对此没什么疑问

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

2) 用户再次点击“下载”后,问题应该继续从同一位置下载,对吧?我并不总是观察到这种行为,有时它会从头开始下载(叹气)。

虽然如果我关闭应用程序,将其从内存中删除(双击主页按钮,长按应用程序图标并删除它)并再次启动我确实在“didFinishLaunchingWithOptions”中得到 [nkLib downloadingAssets].count == 1 并且我的问题恢复下载。

Apple 并未明确记录 NewsStand 内容的每个方面。

最佳答案

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

  1. 我很惊讶 NSURLConnection 调用 didFailWithError。我本来希望下载 Assets 保留在 downloadingAssets 中并稍后自动重试。我的理论是:didFailWithError 方法是可选的,Newsstand Kit 的行为会根据您是否实现此方法而有所不同。 NSURLConnection 可能会检查委托(delegate)是否响应了做出此决定的方法。如果您实现该方法并且出现网络错误,则会使用 didFailWithError 方法报告该错误。该方法执行完毕后,下载的资源将从库中删除。如果您不实现该方法,下载将不会失败,任何错误都将由 Newsstand Kit 处理:下载 Assets 将保留在队列中,并将无限期重试(就您的软件而言,下载永远不会失败).

  2. 如果下载失败(或完成),您会收到 didFailWithError(或 connectionDidFinishDownloading)委托(delegate)回调方法的通知。在该方法完成之前,下载 Assets 可能不会从 downloadingAssets 中删除。如果您在此方法中显示警报,则当用户再次按下“下载”按钮时, Assets 将不存在。

关于ios - NKIssue 由于网络不可用而终止下载后发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9615945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com