iOS-解锁后第一个网络请求失败

And*_*yan 5 iphone ios swift alamofire

我有一个iOS应用,可从中的服务器提取用户数据applicationDidBecomeActive

如果用户按下主页按钮,然后通过应用程序图标或多任务屏幕返回到应用程序,则该功能可以正常工作。

如果用户在此期间锁定设备(无论是在仍在应用程序中还是在按下主屏幕,然后锁定),则网络请求将失败。我正在使用Alamofire。响应对象为nil,且result.data为空。服务器上也没有记录任何请求。故障立即发生。

typ*_*def 5

Apple Tech Note TN2277表示,内核可以从应用程序下方回收套接字,而无需知道发生什么情况。这是相关的部分:

测试套接字回收

如果要编写代码来处理内核正在回收的套接字资源,则必须弄清楚如何对其进行测试。有目的的没有记录系统可能回收套接字资源的确切情况;这使我们能够灵活地将来进行改进。但是,在当前系统(iOS 4.0到iOS 4.3)上,您可以通过以下方法使系统从应用程序的套接字中回收资源:

  1. 将您的应用置于后台
  2. 确保该应用已暂停
  3. 锁定屏幕

当您的应用恢复执行时,它将发现其套接字已被回收。

要解决此问题,请在每次调用AppDelegate的applicationWillEnterForeground时尝试创建新的Alamofire.Manager。希望这对您有帮助。