【发布时间】:2012-03-21 13:53:39
【问题描述】:
我们有一个 iPad 应用程序,旨在下载用户在不再连接到 wifi 时可能读取的数据。当它下载时,它会获取数以千计的 PDF。偶尔在测试获取时我会遇到以下行为:
- 开始下载 PDF
- 在某些时候,即使路由器仍在运行并且其他人继续使用它(我距离路由器 12 英尺),wifi 连接也会断开。
NSURLConnection使用NSURLErrorNotConnectedToInternet或NSURLErrorNetworkConnectionLost调用其didFailWithError,因为它的错误和左上角的 wifi 指示器消失了。 - 只要我最小化应用程序(无论是立即还是一小时后),wifi 指示灯就会重新出现。
- 恢复应用,重新开始下载 - 没问题。
是否有一些 iOS 功能可以防止下载过多?我可以调用一些方法来防止这种情况发生吗?
这个问题(http://stackoverflow.com/questions/8121526/wifi-drops-in-ipod-after-a-while-running-my-application)处理类似的问题并指向UIRequiresPersistentWiFi标志(见http://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW12)。问题是该应用被有意设计为不需要持久 wifi。
其他一些花絮:
- 在 iPad2 上运行 iOS 5.1。 (不知道是不是其他的 版本。)
- 我无法修改应用程序以下载一个包含所有内容的大 zip PDF;这是一个产品要求,而且是有道理的。
-
NSURLConnections是从后台线程生成的 同时有 5 个活动连接。
【问题讨论】:
-
我还使用 Wi-Fi iOS 应用程序。尽管我们的应用程序确实明确需要持久的 Wi-Fi(与您的情况不同),但由于失去 Wi-Fi 连接而发疯。我开始怀疑 iOS 5.1。参见例如discussions.apple.com/thread/3790965?start=0&tstart=0。我将尝试使用较旧的 iOS 版本进行测试。如果你有机会,我建议你在疯狂调试不是你的代码的问题之前尝试另一个版本。如果我设法使用旧版本进行测试,我会发布我们的结果。
-
用运行 5.0.1 的 iPhone 4 和运行 5.1 的 4S 测试了我们的应用程序。我们的应用程序在后台模式下保持 TCP 套接字。 5.0.1 手机的行为更加一致,几乎一直显示来自服务器的消息(在少数情况下没有)。 5.1 手机一炮打响。大约有三分之一的时间它没有显示服务器消息,直到我按下电源按钮。他们并排坐着,连接到同一个路由器,运行相同版本的应用程序。不是科学实验,但在我看来 iOS 5.1 没有 Wi-Fi 连接那么好。
-
@chr,感谢您进一步调查。它可以帮助我缩小我的持续搜索范围。
-
经过几次测试后,我不太确定它是 iOS 5.1 了。在我们的案例中,我们使用的网络看起来不堪重负。在检查代码之前,您可能仍希望在 5.0.1 和不同的网络(不同的路由器/接入点)上进行测试。在我们的测试中,所使用的路由器/接入点也是影响连接稳定性(或缺乏连接)的一个因素。很抱歉没有提供更多帮助。 Wi-Fi 稳定性有时也会让我在晚上保持清醒......
-
@chr 我们对我们的网络进行了诊断,以确保它也没有超载,我们的应用每小时左右只提取大约 5 段文本。即使只传输了几千字节的数据,iPad 也会失去连接,直到应用程序被最小化并重新打开。即使没有其他用户连接,我们也遇到了同样的问题。您的网络很可能会导致问题,但 5.1 肯定在 Wi-Fi 方面存在缺陷。
标签: ios ipad wifi nsurlconnection