현재 응용 프로그램에서 여러 이미지를 서버에 업로드하기위한 시스템을 설계하고 있습니다. 파일은 로컬 장치에 저장되며 현재 아이디어는 파일을 청크로 분할 한 다음 청크별로 서버에 업로드하여 다음 메시지를 업로드하기 전에 성공 메시지를 기다립니다.iOS 7 - NSURLSession 재개 가능한 업로드
이 프로세스는 사용자가 원활하게 수행해야하며 버튼을 눌러 모든 이미지를 제출 한 다음 애플리케이션을 닫고 백그라운드에서 계속 진행할 수 있어야합니다. iOS 7에서는 새로운 NSURLSession API에 업로드를 전달하고 애플리케이션과 독립적으로 업로드 작업을 처리 할 수 있음을 확인했습니다.
누군가이 전송이 얼마나 안정적인지 알고 있는지 궁금합니다. 전체 이미지를 전달하면 인터넷 연결이 절반 정도 떨어진다면 어떻게됩니까? 배경 전송 서비스가 나중에 다시 시도합니까? 아이디어는 우리가 이미지를 업로드 할 수 있고, 반쯤 실패한 경우 나중에 연결이 다시 시작될 때까지 계속 진행할 수 있다는 것입니다.
우리가 생각한 한 가지 아이디어는 파일을 청크로 분할 한 다음 모든 청크를 별도의 NSURLSessionUploadTasks로 전달하여 결국 모든 서버에 전송한다고 가정합니다.
uploadTaskWithRequest:fromData:completionHandler:
그리고 다음 completitionHandler에서 다음 다음 청크를 보낼 :
또 다른
을 사용하여 첫 번째 덩어리를 보낼 수 있었다. 이 나의 문제는 백그라운드에서 다음 청크가@property BOOL discretionary = true
있을 것이다 경우에 연결하는 경우에만 무선 랜을 통해 전송된다는 것을 의미하는 것입니다. 나는 모든 네트워크를 통해 작업하고 대처 할 수 있도록이 필요 interuptions.
코드를 원하지 않습니다.이 문제를 해결하는 올바른 방법이 있다면 조언하십시오.
위임자를 사용 중이면 이전 사진을 업로드 할 때 완성 델리게이트 콜백에서 다음 사진 업로드 작업을 대기시킬 수 있습니다. 그 맞습니까? -thanks –
네 말이 맞아. 너 그렇게 할 수있어. –
@ErbenMo 그래도주의해야합니다. 앱이 백그라운드에있는 동안 백그라운드 전송이 시작되면 구성 객체의 임의 속성이 true로 처리됩니다. 이 플래그가 설정되면 전원이 연결되고 Wi-Fi에 연결될 때 전송이 발생할 가능성이 더 높습니다. 이 값은 기본적으로 false입니다. 응용 프로그램이 백그라운드에있는 동안 작업이 시작된 경우이 작업의 실제 값에 관계없이 임의로 true로 처리됩니다. 따라서 WiFi에 연결되어있을 때까지 다음 업로드가 이루어지지 않을 수 있습니다. –