2017-04-12 4 views
0

Alamofire 및 백그라운드 작업에 대해 구성된 SessionManager의 동작에 관한 질문이 있습니다. 백그라운드에서 비디오를 업로드하는 데 사용하고 있습니다.백그라운드 작업 채우기 Alamofire

단계 I : 비디오 업로드 : 나는 서버에 DELETE 요청을 보낼 필요가
:

단계 II : 완료 업로드 업로드가 완료
이 부분은 있지만, 표준, 동영상 업로드가 완료되었음을 알려줍니다. 성공하면 새로 업로드 된 동영상의 위치 헤더가 응답에 포함됩니다. 제목 및 설명이 나는 PATCH 요청에 비디오 메타 데이터를 필요한 위치로
: III 비디오 메타 데이터를 추가

단계.

제 질문은 세션 관리자 대리인 종료를 재정의하는 것에 대한 것입니다. 나는 sessionDidFinishEventsForBackgroundURLSessiontaskDidComplete을 오버라이드 할 수 있으며 배경이 완전히 끝났을 때 SessionManager에 속성으로 저장하고있는 시스템 completionHandler를 호출해야합니다 ... 언제/어디에서 삭제 요청을 시작해야합니까? PATCH 요청을 어디서부터해야합니까?

3 가지 백그라운드 세션 구성 식별자를 만들어서 식별하고 올바른 순서로 연결해야합니까? 분명히 나는 ​​폐쇄에서 말할 수 없기 때문에 : 처음에 당신은이 요청에 대해 불을 질렀다. 그러나 두 번째 불은이 불을 끌었다. 그리고 2의 어떤 폐쇄가 전체 프로세스를 끝내고 시스템 완성을 호출하는 올바른 방법입니다 .Handler? Alamofire 업로드 응답 처리기와 동기화되지 않기 때문에 이것이 맞는지 확실하지 않습니다.

또한 Alamofire 응답 처리기에 대해 궁금합니다. 앱이 전경에서 포 그라운드에 있었다면? 응답 핸들러를 사용하여 alamofire 요청을 함께 연결하면됩니까? 그러나 앱이 종료되고 백그라운드에서 실행중인 경우 이러한 핸들러는 계속있을 것입니다.

여기에 대한 통찰력은 크게 감사하겠습니다. 나는 여기에 많은 일이 일어나고 있으며, Apple eve rate는 백그라운드 작업을 제한한다는 것을 알고 있으며, 이것이 가능한지 궁금해하고 있습니다.

+0

단락이있는 부분으로 나누어 가독성을 높이십시오. –

답변

0

나는 식별자 내가 그들을 확인하고 바로 위해 내가 그들을 체인 확인 할 수 있도록 3 가지 배경 세션 구성을 만들어야합니까?

완료 블록이 호출 된 요청을 식별하고 다음 요청을 연결하기 위해 여러 개의 백그라운드 세션이 필요하다고 생각하지 않습니다. 당신은

  1. 비동기 NSOperation과를 얻을 수 있습니다 당신은 여러 요청 체인에 비동기 NSOperations를 사용할 수있다. 작업간에 종속성을 추가하고 iOS가 종속성을 예약하고 처리하도록합니다. 참고 : 내가 언급 한 비동기 NSOperation. NSOperations는 동기 성입니다.

  2. 약속 키트 : 비동기 NSOperations이 너무 복잡하면, 당신은 항상 약속 키트를 사용할 수 있습니다. Promise 키트는 특정 요청이 완료된 후에 만 ​​요청을 실행하고 상단에있는 하나가 실패하면 전체 종속성 체인이 단락됩니다.

  3. 업로드 작업의 완료 블록에 새 데이터 작업을 만들어 비디오를 업로드하기 만하면됩니다. 태스크에 대한 위임 패턴을 사용하는 대신 완료 블록을 사용하십시오. 그렇게하면 각 작업이 자체 완료 블록을 갖기 때문에 델리게이트가 호출 된 요청을 식별하지 않아도되므로 코드를 작성하는 동안 쉽게 연결할 수 있습니다.

앱이 종료 이러한 핸들러는 여전히 주위에있을 것이다 백그라운드에서 실행중인 경우?

그래도 100 % 확신 할 수는 없지만 백그라운드 작업 (백그라운드 세션)을 예약하면 작업이 계속 실행될 것입니다. 결국, 우리가 사용하는 이유는 무엇입니까? 배경 세션. 따라서 완성 된 핸들러는 앱을 죽여도 실행될 것입니다.