屏幕锁解锁时网络丢失

时间:2014-11-24 17:33:30

标签: ios iphone nsurlconnection

遇到一个非常奇怪的问题,使用简单的AFNetworking下载操作,即使尝试使用简单的NSURLConnection操作,如果您保持应用程序运行,并且锁定屏幕然后解锁,连接也会失败。尽管在background中工作得非常好。

任何人遇到与NSURLConnection类似的问题想要分享一些解决方案吗?

感谢。

2 个答案:

答案 0 :(得分:1)

它看起来像是一个iOS错误。奇怪的是,锁屏操作会以某种方式影响NSURLSession,以便它停止工作并返回NSURLErrorNetworkConnectionLost。所以在我的应用程序中,我放弃了使用共享会话。我要么为每个请求使用一个新的会话对象,要么(如果我需要不断维护一个会话)每次屏幕解锁时重新创建它。它有效。对于AFNetworking或在NSURLSession之上工作的任何其他第三方图书馆的用户来说,情况当然更难。您需要更正库的代码,这绝对不是一件好事,但我认为没有其他选择

答案 1 :(得分:0)

非常有帮助Andrey Chernukha, 在我的情况下,发现你不必每次都需要重新创建新的会话。 我最终使用数组来保存运行NSURLSessionDataTasks并在手机解锁后恢复它们。

步骤:

  1. 我创建了数组 NSMutableArray * dataTasksToResume

  2. - (void)applicationWillResignActive:(UIApplication *)应用程序我将所有任务保存到 dataTasksToResume 数组

  3. 取消所有正在运行的 NSURLSessionDataTasks
  4. - (void)applicationDidBecomeActive:(UIApplication *)应用程序从数组中获取所有任务并恢复它们(重新创建它们)
  5. 享受!
  6. 希望它有所帮助。

相关问题