【问题标题】:my iPad app kills wifi until minimized我的 iPad 应用程序会杀死 wifi 直到最小化
【发布时间】:2012-03-21 13:53:39
【问题描述】:

我们有一个 iPad 应用程序,旨在下载用户在不再连接到 wifi 时可能读取的数据。当它下载时,它会获取数以千计的 PDF。偶尔在测试获取时我会遇到以下行为:

  1. 开始下载 PDF
  2. 在某些时候,即使路由器仍在运行并且其他人继续使用它(我距离路由器 12 英尺),wifi 连接也会断开。 NSURLConnection 使用 NSURLErrorNotConnectedToInternetNSURLErrorNetworkConnectionLost 调用其 didFailWithError,因为它的错误和左上角的 wifi 指示器消失了。
  3. 只要我最小化应用程序(无论是立即还是一小时后),wifi 指示灯就会重新出现。
  4. 恢复应用,重新开始下载 - 没问题。

是否有一些 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


【解决方案1】:

我可以确认 iOS 5.1 在维护 wifi 连接方面存在问题。全球互联网上有很多关于它的论坛帖子,但这是我的证据:

我们在博物馆画廊中设置了 6 台 iPad 2。 3 个正在运行 5.1,3 个正在运行 5.0.1。运行 5.1 的 3 台 iPad 不断与接入点断开连接。运行 5.0.1 的 3 没有问题,并且几周没有问题。他们运行同一个应用程序,在同一个网络上没有安装其他任何东西,并且应用了相同的设置。我正在回复并就此向 Apple 提交通知。我会将所有 iPad 恢复到 5.0.1。

旁注:我是一名 IT 专业人士,与我们的系统管理员一起,我们排除了内部网络、接入点和通过大量设备连接的所有问题。只有运行 5.1 的设备(iPhone 和 iPad 等)才会出现问题。

编辑:不再可能降级。一旦上 5.1,就卡在 5.1 上。我确实找到了对遇到此问题的人的引用,并通过在应用程序的 plist 中添加一行来解决它。在支持文件下,转到您应用的 plist 文件并添加以下行:Application uses Wi-Fi YES。显然,iPad 的设计目的是在用户闲置 30 分钟后关闭 Wi-Fi 适配器(我已经测试并确认这是准确的)。不活动是身体不活动,而不是数据不活动。假设添加此行会覆盖应用程序是否打开。我还没有对此进行测试,但是一旦我有足够的时间来尝试它,我就会尝试。 5.0.1(可能还有一些更早的版本)可能已经“破坏”了这个省电功能。而且,反过来,5.1 可能已经“修复”了 Wi-Fi 不关闭以节省电池的问题。由于我的应用程序,我认为这是一次休息,但谁知道呢。

【讨论】:

  • 太棒了。我会尽量安排在这里进行测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多