Windows Phone의 백그라운드 파일 전송

2013-12-05

적용 대상: Windows Phone 8 | Windows Phone OS 7.1

 

Windows Phone OS 7.1 에서는 응용프로그램이 더 이상 포그라운드에서 실행되지 않더라도 백그라운드로 실행될 HTTP를 통한 하나 이상의 파일 업로드 또는 다운로드를 대기할 수 있습니다. 파일 전송 초기화에 사용되는 API는 기존 전송의 상태를 쿼리하고 최종 사용자에게 진행률 표시기를 제공하는 데 사용되어야 합니다. 백그라운드 파일 전송을 사용하는 응용프로그램을 만드는 단계별 연습은 Windows Phone의 백그라운드 파일 전송 구현하는 방법을 참조하세요.

이 항목에는 다음 단원이 포함되어 있습니다.

 

백그라운드 전송 서비스 API는 Microsoft.Phone.BackgroundTransfer 네임스페이스에서 찾을 수 있습니다. 사용할 기본 프로그래밍 요소는 BackgroundTransferRequestBackgroundTransferService 클래스입니다. BackgroundTransferRequest 개체는 대상 및 대상 파일 경로, 전송 메서드 및 전송의 현재 상태를 비롯한 하나의 전송 요청을 나타냅니다. BackgroundTransferService 개체는 새 전송을 초기화하고 기존 파일 전송을 쿼리하거나 제거하는 데 사용됩니다.

백그라운드 전송 서비스는 HTTP와 HTTPS를 사용한 전송만 지원하며, FTP는 지원하지 않습니다. BackgroundTransferService를 사용하여 백그라운드에서 파일을 업로드 및 다운로드할 수 있습니다. GET HTTP 메서드는 파일 다운로드를 위해 지원되고, POST 메서드는 파일 다운로드 또는 업로드를 위해 지원됩니다. BackgroundTransferRequest 개체의 Method 속성을 사용하여 전송에 대한 메서드를 설정합니다.

모든 백그라운드 전송에는 로컬 파일 경로가 필요합니다. 다운로드 시에는 다운로드된 파일이 저장될 위치를 지정하는 대상 경로가 필요하고, 업로드 시에는 파일을 업로드할 위치를 지정하는 소스 경로가 필요합니다. 백그라운드 전송에 대한 모든 로컬 경로는 "/shared/transfers"라는 루트 디렉터리에서 응용프로그램에 대한 격리된 저장소 내에 있어야 합니다. 이 디렉터리는 응용프로그램을 설치할 때 운영 체제에 의해 만들어지지만 응용프로그램에서 이 디렉터리를 삭제하거나 이름을 바꾸면 파일 전송이 초기화되기 전에 이를 다시 만들어야 합니다. "/shared/transfers" 루트 디렉터리 아래에 선택한 추가 디렉터리 구조를 만들 수 있고, 파일 전송이 완료된 후 백그라운드 전송 서비스가 파일을 수정하지 못하도록 파일을 복사하거나 이동할 수 있습니다. 그러나 "/shared/transfers" 디렉터리 외부의 경로를 사용하여 전송을 초기화하려고 하면 예외가 발생합니다.

BackgroundTransferRequest 개체의 Headers 속성은 전송 요청에 대한 HTTP 헤더를 설정하는 데 사용됩니다. 다음 헤더는 시스템에서 사용할 용도로 예약되어 있으며 호출 응용프로그램에 의해 사용될 수 없습니다. 다음 헤더 중 하나를 Headers 컬렉션에 추가하면 전송 요청을 대기하기 위해 Add(BackgroundTransferRequest) 메서드가 사용될 때 NotSupportedException이 발생합니다.

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • Range

  • Unless-Modified-Since

백그라운드 전송 API를 사용하여 초기화된 백그라운드 전송은 일반적으로 TransferPreferences 속성에 의해 설정된 요구 사항과 배터리 전력 및 사용 가능한 연결에 관한 시스템 요구 사항이 충족되면 바로 시작됩니다. 그러나 여러 응용프로그램이 백그라운드 전송을 대기하고 있으므로 이전에 추가된 전송이 완료되더라도 전송이 시작되기까지 추가 지연이 있을 수 있습니다.

Windows Phone 8 에서는 사용자가 자신이 사용하는 데이터 요금제의 제한에 가까워짐에 따라 앱이 데이터 전송을 제한하도록 요청할 수 있게 해주는 Data Sense 기능을 도입합니다. 사용자가 기능을 켰으면 다음 ConnectionCost 구성원의 값에 따라 백그라운드 전송이 일시 중지될 수 있습니다.

  • ApproachingDataLimit – 이 값이 true이면 앱이 현재 포그라운드에서 실행되고 있는지 여부에 관계없이 백그라운드 전송이 계속 진행됩니다.

  • OverDataLimit – 이 값이 true이면 앱이 현재 포그라운드에서 실행되고 있는 경우에만 백그라운드 전송이 계속 진행됩니다.

  • Roaming – 이 값이 true이면 앱이 현재 포그라운드에서 실행되고 있는지 여부에 관계없이 백그라운드 전송이 일시 중지됩니다.

Data Sense 기능과, 앱이 Data Sense를 사용하여 데이터 사용량을 조정하는 방법에 대한 자세한 내용은 Windows Phone 8용 데이터 감지 API를 사용하여 데이터 사용량을 조정하는 방법을 참조하세요.

중요중요:

일반 응용프로그램의 요구 사항 외에, 백그라운드 파일 전송을 사용하는 응용프로그램이 스토어 에 표시되려면 충족해야 하는 추가 인증 요구 사항이 있습니다. 응용프로그램을 디자인하고 구현할 때 이러한 요구 사항을 고려해야 합니다. 자세한 내용은 Additional requirements for specific app types for Windows Phone을 참조하세요.

운영 체제는 파일 크기, 연결 속도 및 장치 리소스와 관련하여 백그라운드 전송에 대한 몇 가지 제한 사항을 적용합니다. 이 섹션에는 Windows Phone 의 백그라운드 전송에 대한 정책이 나와 있습니다. Windows Phone 에뮬레이터는 Wi-Fi 및 외부 전원에 연결된 장치를 시뮬레이션합니다. 다른 조건에서 응용프로그램이 작동하는지 확인하려면 실제 장치에서 테스트해야 합니다.

크기

최대 업로드 파일 크기

셀룰러 연결의 경우 - 5MB

배터리 전원을 통한 Wi-Fi 연결의 경우 - 20MB

외부 전원을 통한 Wi-Fi 연결의 경우 - 100MB

셀룰러 연결을 통한 최대 다운로드 크기

20MB – 파일이 이 크기를 초과하면 전송의 TransferPreferences 속성이 AllowBattery로 변경되어 전송 시 Wi-Fi가 필요하게 됩니다.

외부 전원 없이 Wi-Fi를 통한 최대 다운로드 크기

100 MB – 100MB보다 큰 파일의 경우 전송의 TransferPreferences 속성을 None으로 설정해야 합니다. 그렇지 않으면 전송되지 않습니다. 전송 크기를 모르고, 전송 크기가 이 제한을 초과할 가능성이 있을 경우에는 이 값을 None으로 설정해야 합니다. 이는 곧 휴대폰이 외부 전원에 연결되고 Wi-Fi 연결이 설정되어 있을 때에만 전송된다는 뜻입니다.

제한

응용프로그램당 대기열의 처리 중인 최대 요청 수(활성 요청과 보류 중인 요청 포함)

25 – 전송이 완료되더라도 대기열에서 자동으로 제거되지 않습니다. 응용프로그램은 새 전송을 위한 빈 슬롯을 확보하기 위해 Remove(BackgroundTransferRequest)를 사용하여 대기열에서 완료된 전송을 제거해야 합니다.

장치의 모든 응용프로그램에서의 최대 동시 전송 수

2

장치의 모든 응용프로그램에서의 최대 대기 전송 수

500

요청당 최대 HTTP 헤더 수

15

HTTP 헤더의 최대 크기

각 16KB

정책

  • 백그라운드 전송 서비스는 앱이 포그라운드에 있을 때 다음 데이터 네트워크에서 전송합니다. 앱이 포그라운드에 있지 않으면 이 네트워크에서 전송이 진행되지 않습니다. 이 제한은 HttpWebRequest 개체가 공유하므로, 이런 점에서 여러분 자신의 전송을 수행하는 것이 배경 전송을 사용하는 것에 비해 유리합니다.

    • 2G, EDGE, 표준 GPRS

    3G 이상의 네트워크에서는 다른 모든 조건이 충족되었다고 가정하여 백그라운드 전송이 앱이 포그라운드에서 실행되고 있는지 여부에 관계없이 계속 진행됩니다.

  • 5MB를 넘는 파일에 대해서는 서버 측에 Content-Length 헤더가 필요합니다. 서버는 응답 시 항상 Content-Length를 반환해야 합니다. 이 작업이 실패하면 전송 성능이 심각하게 저하될 수 있습니다.

  • 5MB를 넘는 파일에 대해서는 서버 측에 Range 헤더가 필요합니다. 서버는 Range 요청 헤더를 지원해야 합니다. 이 작업이 실패하면 전송 성능이 심각하게 저하될 수 있습니다.

저속 전송

장치의 네트워크 연결 속도가 다음 제한 아래로 떨어지면 전송이 일시 중지되었다가 다시 시도됩니다. Kbps(초당 킬로비트)로 나타낸 이 제한 속도는 매우 낮으므로 일반적으로는 이러한 수준에 이르지 않습니다.

네트워크 미디어

최저 데이터 속도

3G

50Kbps

Wi-Fi/USB

100Kbps

표시:
© 2014 Microsoft