【问题标题】:Downloading fails much more frequently on iOS than on Android?在 iOS 上下载失败比在 Android 上更频繁?
【发布时间】:2012-12-24 03:42:57
【问题描述】:

在我的 iOS 项目中,我使用 NSURLConnection 下载文件。我的代码就像http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html 文档一样。 在我团队的 Android 项目中,我们使用 Android 的 API 下载相同的文件。也没什么特别的。 iOS 和 Android 项目都有相同的失败重试机制,它们都向服务器发送相同的统计数据。 他们尝试下载的文件在 1M 到 10M 之间。

统计服务器显示,对于相同的URL,在安卓上下载失败率为2%,而在iOS上为20%!由于他们试图下载相同的 URL,这似乎不是服务器的问题,而更像是客户端的问题。

为什么 iOS 下载会如此频繁地失败?我应该为 iOS 使用任何特殊的 API,以使下载变得健壮吗?目前我正在使用NSURLConnection,我刚刚发现NSURLDownloader 写文件更方便。它们的下载成功率会有所不同吗?

附:我得到的错误 -
(void) connection: (NSURLConnection *) connection didFailWithError: (NSError *) , is usually -1005, NSURLErrorNetworkConnectionLost.

【问题讨论】:

  • 你的代码不会有问题吧?
  • 您确定这是 20% 的实际失败,而不是 20% 的用户中止吗?
  • 我们已经仔细检查了几次代码,我很确定没有什么特别之处。
  • 内存泄漏或内存不足怎么办?我们没有关于您如何处理下载的信息。
  • 隐含在所有这些问题中,这样的失败率是不寻常的。尽管你保证,代码可能是罪魁祸首。您可能应该分享您的下载代码。

标签: android ios download


【解决方案1】:

我建议您进一步了解为什么您会收到 NSURLErrorNetworkConnectionLost。即使您的设备显示已连接,有时它也可能会断开连接并在指标相应更新之前尝试重新连接。

这是了解有关更好地处理可达性的更多信息的良好起点。 Checking For Internet Connectivity in Objective C

否则,我建议您发布与下载相关的代码,以便其他人可以查找可能的问题。

【讨论】:

    猜你喜欢
    • 2021-05-16
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    相关资源
    最近更新 更多