2014-11-24 1 views
4

간단한 다운로드 작업을 사용하거나 간단한 NSURLConnection 작업을 시도해도 응용 프로그램을 계속 실행하면 연결이 실패하고 화면을 잠그고 잠금을 해제하면 매우 이상한 문제가 발생합니다. 그래도 background에서 절대적으로 작동합니다.화면 잠금에서 네트워크가 손실 됨

NSURLConnection과 비슷한 문제가 발생했습니다. 몇 가지 해결책을 공유하고 싶습니까?

감사합니다.

+0

사용자가 화면을 잠금 해제 한 후에 만 ​​실패합니까? – Antzi

+0

예 @Antzi 예 – iphonic

답변

1

iOS 버그처럼 보입니다. 이상하게 작동하지만 잠금 화면 동작은 어떻게 든 NSURLSession에 영향을 미치므로 작동을 멈추고 NSURLErrorNetworkConnectionLost을 반환합니다. 그래서 내 애플 리케이션에서 나는 공유 세션을 사용하여 포기했다. 나는 모든 요청에 ​​대해 새로운 세션 객체를 사용하거나 (하나의 세션을 계속 유지해야하는 경우) 화면이 잠금 해제 될 때마다 다시 만듭니다. 그리고 그것은 작동합니다. AFNetworking 또는 NSURLSession 상단에서 작업하는 타사 라이브러리 사용자에게는 상황이 더 어려워집니다. 라이브러리의 코드를 수정해야합니다. 좋은 선택은 아닙니다.하지만 다른 선택의 여지가 없다고 생각합니다.

0

매우 도움 됨 Andrey Chernukha, 필자가 생각할 필요는 없다는 것을 알았습니다. 매번 새로운 세션을 다시 생성하십시오. 배열을 사용하여 NSURLSessionDataTasks를 실행하지 않고 전화를 잠그지 않은 상태에서 다시 시작했습니다. (UIApplication *) 응용 프로그램 내가 에 모든 작업을 저장 dataTasksToResume 배열

: - :

단계 (무효) applicationWillResignActive

  1. 나는 에서 배열 있는 NSMutableArray * dataTasksToResume

  2. 을 생성

  3. 모두 취소 NSURLSe ssionDataTasks에서
  4. - (무효) applicationDidBecomeActive : (UIApplication *)가 배열을 다시 시작에서 모든 작업을 얻을 응용 프로그램
  5. 엔조이 (를 다시 만드는)!

희망이 있습니다.