Windows 8.1의 Windows 스토어 장치 앱을 위한 장치 동기화 및 업데이트

Windows 8.1에서 Windows 스토어 앱은 장치 백그라운드 작업을 통해 주변 장치의 데이터를 동기화할 수 있습니다. 앱이 장치 메타데이터와 연결된 경우 해당 Windows 스토어 장치 앱은 장치 백그라운드 에이전트를 사용하여 펌웨어 업데이트와 같은 장치 업데이트를 수행할 수도 있습니다. 장치 백그라운드 에이전트에는 사용자의 동의를 확인하고 장치가 동기화 및 업데이트되는 동안 배터리 사용 시간을 보존하는 데 도움이 되는 정책이 적용됩니다.

장치 동기화 및 업데이트 작업을 수행하려면 각각 DeviceUseTriggerDeviceServicingTrigger를 사용하는 장치 백그라운드 작업을 만듭니다. 사용자 지정 USB 장치 샘플펌웨어 업데이트 USB 장치 샘플을 사용하여 이 작업을 수행하는 방법을 알아보려면 장치 백그라운드 작업 만들기를 참조하세요.

  Windows 8.1에서는 장치 메타데이터가 필요하지 않은 Windows 런타임 장치 API를 소개합니다. 즉, 앱이 Windows 스토어 장치 앱이 아니어도 이 API를 사용할 수 있습니다. Windows 스토어 앱은 이러한 API를 사용하여 USB, HID(휴먼 인터페이스 장치), Bluetooth GATT, Bluetooth RFCOMM, Wi-Fi Direct 장치 등에 액세스할 수 있습니다. 자세한 내용은 Windows 8.1: 새로운 API 및 기능을 참조하세요.

장치 백그라운드 작업 개요

사용자가 Windows 스토어 앱을 화면 밖으로 이동하면 Windows에서는 해당 앱을 메모리에서 일시 중단시킵니다. 그러면 다른 앱이 포그라운드에서 실행될 수 있습니다. 앱이 일시 중단된 경우 Windows에서 해당 앱의 실행을 중지시켰지만 해당 앱은 메모리에 상주하고 있습니다. 이 경우 장치 백그라운드 작업의 도움이 없으면 동기화 및 업데이트와 같은 진행 중인 장치 작업이 중단됩니다. Windows 8.1에서는 앱이 일시 중단되더라도 앱이 백그라운드에서 안전하게 주변 장치에서의 오래 실행 중인 동기화 및 업데이트 작업을 수행할 수 있는 새로운 백그라운드 작업 트리거 두 개를 제공합니다. 앱 일시 중단에 대한 자세한 내용은 실행, 다시 시작 및 멀티태스킹을 참조하세요.

백그라운드 작업 트리거장치 메타데이터 필요설명
DeviceUseTrigger앱이 일시 중단된 동안 주변 장치에서 오래 실행되는 동기화 작업을 수행할 수 있게 합니다. 백그라운드에서 장치를 동기화하려면 사용자가 앱의 백그라운드 동기화를 승인해야 합니다. 또한 장치가 PC에 연결되거나 쌍을 이루고 활성 I/O가 있어야 하며, 최대 10분 동안 백그라운드 작업을 실행할 수 있습니다. 정책 적용에 대한 자세한 내용은 이 항목의 뒷부분에서 설명합니다.
DeviceServicingTriggerDeviceServicingTrigger에는 장치 메타데이터가 필요합니다.앱이 일시 중단된 동안 설정 전송이나 펌웨어 업데이트 같은 오래 실행되는 장치 업데이트를 수행할 수 있게 합니다. 백그라운드에서 장치를 업데이트하려면 백그라운드 작업이 사용될 때마다 사용자가 승인해야 합니다. DeviceUseTrigger 백그라운드 작업과 달리, DeviceServicingTrigger 백그라운드 작업은 장치 다시 부팅 및 연결 끊김을 허용하며 최대 30분 동안 백그라운드 작업을 수행할 수 있습니다. 정책 적용에 대한 자세한 내용은 이 항목의 뒷부분에서 설명합니다.

 

장치 업데이트 작업을 수행하려면 앱을 권한 있는 앱으로 지정해야 하므로 DeviceServicingTrigger에는 장치 메타데이터가 필요합니다.

앱 권한

오래 실행되는 장치 업데이트와 같은 일부 중요한 장치 작업은 권한 있는 앱만 수행할 수 있습니다. 권한 있는 앱은 장치 제조업체가 이러한 작업을 수행할 권한을 부여한 앱입니다. 장치 메타데이터는 장치에 대한 권한 있는 앱으로 지정된 앱(있는 경우)을 지정합니다.

장치 메타데이터 마법사를 사용하여 장치 메타데이터를 만드는 경우 Windows 스토어 장치 앱 정보 지정 페이지에서 앱을 지정합니다. 자세한 내용은 2단계: Windows 스토어 장치 앱용 장치 메타데이터 만들기를 참조하세요.

지원되는 프로토콜

DeviceUseTrigger 및 DeviceServicingTrigger를 사용하는 장치 백그라운드 작업은 앱이 일반적으로 Windows 스토어 앱에서 사용되는 시스템 트리거 작업이 지원하지 않는 프로토콜을 통해 통신할 수 있게 합니다.

프로토콜DeviceServicingTriggerDeviceUseTrigger시스템 트리거
USBDeviceServicingTrigger는 USB를 지원함DeviceUseTrigger는 USB를 지원함시스템 트리거는 USB를 지원하지 않음
HIDDeviceServicingTrigger는 HID를 지원함DeviceUseTrigger는 HID를 지원함시스템 트리거는 HID를 지원하지 않음
Bluetooth RFCOMMDeviceServicingTrigger supports Bluetooth RFCOMMDeviceUseTrigger supports Bluetooth RFCOMM시스템 트리거는 Bluetooth RFCOMM을 지원하지 않음
Bluetooth GATTDeviceServicingTrigger supports Bluetooth GATTDeviceUseTrigger supports Bluetooth GATT시스템 트리거는 Bluetooth GATT를 지원하지 않음
MTPDeviceServicingTrigger는 MTP를 지원함DeviceUseTrigger는 MTP를 지원하지 않음시스템 트리거는 MTP를 지원하지 않음
유선 네트워크DeviceServicingTrigger는 유선 네트워크를 지원함DeviceUseTrigger는 유선 네트워크를 지원하지 않음시스템 트리거는 유선 네트워크를 지원하지 않음
Wi-Fi 네트워크DeviceServicingTrigger는 Wi-Fi 네트워크를 지원함DeviceUseTrigger는 Wi-Fi 네트워크를 지원하지 않음시스템 트리거는 Wi-Fi 네트워크를 지원하지 않음
IDeviceIOControlDeviceServicingTrigger는 IDeviceIOControl을 지원함DeviceUseTrigger는 IDeviceIOControl을 지원하지 않음시스템 트리거는 IDeviceIOControl을 지원하지 않음

 

앱 패키지 매니페스트에서 백그라운드 작업 등록

앱은 백그라운드 작업의 일부로 실행되는 코드에서 동기화 및 업데이트 작업을 수행합니다. 이 코드는 IBackgroundTask를 구현하는 Windows 런타임 클래스 또는 JavaScript 앱용 전용 JavaScript 페이지에 포함됩니다. 장치 백그라운드 작업을 사용하려면 앱이 시스템 트리거 백그라운드 작업과 마찬가지로 포그라운드 앱의 앱 매니페스트 파일에서 선언해야 합니다.

이 앱 패키지 매니페스트 파일 예제에서 DeviceLibrary.SyncContentDeviceLibrary.UpdateFirmware는 포그라운드 앱의 진입점입니다. DeviceLibrary.SyncContentDeviceUseTrigger를 사용하는 백그라운드 작업의 진입점입니다. DeviceLibrary.UpdateFirmwareDeviceServicingTrigger를 사용하는 백그라운드 작업의 진입점입니다.


<Extensions>
  <Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
    <BackgroundTasks>
      <m2:Task Type="deviceUse" /> 
    </BackgroundTasks>
  </Extension>
  <Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.UpdateFirmware">
    <BackgroundTasks>
      <m2:Task Type="deviceServicing" /> 
    </BackgroundTasks>
  </Extension>
</Extensions>


장치 백그라운드 작업과 함께 장치 사용

DeviceUseTrigger 및 DeviceServicingTrigger 백그라운드 작업을 개발하려면 다음과 같은 기본 단계를 따릅니다. 백그라운드 작업에 대한 자세한 내용은 백그라운드 작업을 사용하여 앱 지원을 참조하세요.

  1. 앱은 백그라운드 작업을 앱 매니페스트에 등록하고 IBackgroundTask를 구현하는 Windows 런타임 클래스 또는 JavaScript 앱용 전용 JavaScript 페이지에 백그라운드 작업 코드를 포함합니다.
  2. 앱을 시작하면 앱이 적절한 유형(DeviceUseTrigger 또는 DeviceServicingTrigger)의 장치 트리거 개체를 만들어서 구성하고 나중에 사용하기 위해 트리거 인스턴스를 저장합니다.
  3. 앱은 백그라운드 작업이 이전에 등록되었는지 여부를 확인하고, 등록되지 않은 경우 장치 트리거에 대해 등록합니다. 앱에서 이 트리거와 연결된 작업에 조건을 설정할 수는 없습니다.
  4. 백그라운드 작업을 트리거해야 하는 경우 앱은 장치 트리거 개체에 대해 RequestAsync 활성화 메서드를 호출합니다.
  5. 사용자 백그라운드 작업은 다른 시스템 백그라운드 작업처럼 제한되지 않지만(CPU 시간 할당량 없음), 포그라운드 앱의 응답을 유지하기 위해 감소된 우선 순위로 실행됩니다.
  6. Windows는 트리거 유형에 따라 백그라운드 작업을 시작하기 전에 작업에 대한 사용자 동의 요청을 포함하여 필요한 정책이 충족되었는지 확인합니다.
  7. Windows는 시스템 조건 및 작업 런타임을 모니터링하고, 필요한 경우 필수 조건이 더 이상 충족되지 않으면 작업을 취소합니다.
  8. 백그라운드 작업이 진행 중 또는 완료를 보고하면 앱은 등록된 작업의 진행 중 및 완료 이벤트를 통해 이러한 이벤트를 받게 됩니다.

중요  

장치 백그라운드 작업을 사용하는 경우 다음과 같은 중요 사항을 고려하세요.

  • DeviceUseTrigger 및 DeviceServicingTrigger를 사용하는 트리거 백그라운드 작업을 프로그래밍하는 기능은 Windows 8.1에서 새로 추가되었으며, 장치 백그라운드 작업에만 사용하도록 제한됩니다.

  • 특정 정책은 Windows에서 주변 장치를 업데이트할 때 사용자 동의를 확인하기 위해 적용됩니다. 추가 정책은 주변 장치를 동기화 및 업데이트할 때 사용자 배터리 사용 시간을 보존하기 위해 적용됩니다.

  • 최대 백그라운드 시간(벽시계 시간)을 포함하여 특정 정책 요구 사항이 더 이상 충족되지 않을 경우 DeviceUseTrigger 및 DeviceServicingTrigger를 사용하는 백그라운드 작업을 Windows에서 취소할 수 있습니다. 백그라운드 작업을 사용하여 주변 장치를 조작하는 경우 이러한 정책 요구 사항을 고려 하는 것이 중요합니다.

  백그라운드 작업의 작동 방식을 확인하려면 샘플을 다운로드하세요. 사용자 지정 USB 장치 샘플은 DeviceUseTrigger를 사용하여 장치 동기화를 수행하는 백그라운드 작업을 보여 줍니다. 펌웨어 업데이트 USB 장치 샘플은 DeviceServicingTrigger를 사용하여 펌웨어 업데이트를 수행하는 백그라운드 작업을 보여 줍니다.

사용자 동의

DeviceUseTrigger 또는 DeviceServicingTrigger를 사용할 경우 Windows 8.1에서는 사용자가 내용 동기화 및 업데이트를 위해 백그라운드에서 장치에 액세스할 수 있는 앱 권한을 부여받았는지 확인하기 위한 정책을 적용합니다. 또한 정책은 주변 장치를 동기화 및 업데이트할 때 사용자 배터리 사용 시간을 보존하기 위해 적용됩니다.

장치 동기화 사용자 동의

DeviceUseTrigger를 사용하는 백그라운드 작업은 앱이 백그라운드에서 동기화할 수 있도록 하는 일회성 사용자 동의가 필요합니다. 이 동의는 앱 단위 및 장치 모델 단위로 저장됩니다. 사용자는 앱이 포그라운드에 있을 때 장치에 액세스할 수 있도록 동의하는 것처럼 앱이 백그라운드에서 장치에 액세스할 수 있도록 동의합니다.

다음 예제에서 Tailspin Toys라는 앱은 백그라운드에서 동기화하기 위해 사용자 승인을 받습니다.

장치 동기화 사용자 동의 메시지 대화 상자

사용자는 나중에 마음이 바뀔 경우 설정에서 사용 권한을 해지할 수 있습니다.

장치 동기화 사용 권한 설정 대화 상자

장치 업데이트 사용자 동의

DeviceUseTrigger를 사용하는 작업과 달리, DeviceServicingTrigger 백그라운드 작업을 사용하는 백그라운드 작업은 백그라운드 작업이 트리거될 때마다 사용자 동의가 필요합니다. 이 동의는 DeviceUseTrigger와 달리 저장되지 않습니다. 장치 펌웨어 업데이트는 위험이 더 큰 작업과 관련이 있고 장치 업데이트에 더 많은 시간이 필요하기 때문입니다. 사용자 동의를 받는 것 외에도 Windows는 업데이트 중 장치를 연결된 상태로 유지하고 PC가 변경되었는지 확인하라는 경고와 같은 장치 업데이트 정보 및 대략적인 작업 실행 시간(앱이 제공하는 경우)을 사용자에게 제공합니다.

장치 업데이트 사용자 동의 메시지 대화 상자

빈도 및 포그라운드 제한

앱이 작업을 시작할 수 있는 빈도에는 제한이 없지만 앱은 한 번에 하나의 DeviceUseTrigger 또는 DeviceServicingTrigger 백그라운드 작업만 실행할 수 있으며(백그라운드 작업 유형에는 영향을 주지 않음), 앱이 포그라운드에 있을 때만 백그라운드 작업을 시작할 수 있습니다. 앱이 포그라운드에 없는 경우에는 DeviceUseTrigger 또는 DeviceServicingTrigger를 사용하여 백그라운드 작업을 시작할 수 없습니다. 첫 번째 백그라운드 작업이 완료되기 전에는 앱에서 두 번째 장치 백그라운드 작업을 시작할 수 없습니다.

장치 백그라운드 작업 정책

Windows는 앱이 장치 백그라운드 작업을 사용할 때 정책을 적용합니다. 이러한 정책이 충족되지 않을 경우 DeviceUseTrigger 또는 DeviceServicingTrigger를 사용하는 백그라운드 작업이 취소될 수 있습니다. 장치 백그라운드 작업을 사용하여 주변 장치를 조작하는 경우 이러한 정책 요구 사항을 고려 하는 것이 중요합니다.

작업 시작 정책

이 표에는 각 백그라운드 작업 트리거에 적용되는 작업 시작 정책이 나와 있습니다.

정책DeviceServicingTriggerDeviceUseTrigger
백그라운드 작업을 트리거할 때 Windows 스토어 앱이 포그라운드에 있습니다.정책이 적용됨정책이 적용됨
장치가 시스템에 연결되어 있거나 무선 장치의 범위에 있습니다.정책이 적용됨정책이 적용됨
백그라운드 작업은 화면이 잠겨 있는 경우 분당 또는 화면이 잠겨 있지 않은 경우 5분당 400ms CPU 시간(1GHz CPU 가정)을 소모합니다. 이 정책을 준수하지 않으면 작업이 취소될 수 있습니다.정책이 적용됨정책이 적용됨
주변 장치 API(USB, HID, Bluetooth 등의 Windows 런타임 API)를 사용하여 앱이 장치에 액세스할 수 있습니다. 앱이 장치에 액세스할 수 없는 경우 백그라운드 작업에 대한 액세스가 거부됩니다.정책이 적용됨정책이 적용됨
앱에서 제공하는 백그라운드 작업 진입점이 앱 패키지 매니페스트에 등록되어 있습니다.정책이 적용됨정책이 적용됨
사용자가 작업을 계속할 수 있도록 승인합니다. 매번 처음에 적용된 후 앱 사용 권한에 의해 제어됨
앱에서 제공하는 예상 시간이 30분 미만입니다.정책이 적용됨정책이 적용되지 않음
앱이 장치의 권한 있는 앱으로 지정되어 있습니다. 장치 컨테이너의 장치 메타데이터에 있는 권한 있는 앱 목록과 일치하는 전체 앱 ID가 있어야 합니다.정책이 적용됨정책이 적용되지 않음
컴퓨터에 33% 이상의 배터리 용량이 남아 있거나 AC 전원에 연결되어 있습니다.정책이 적용됨정책이 적용되지 않음
작업 유형당 하나의 장치 백그라운드 작업만 실행되고 있습니다.정책 검사가 적용됨정책이 적용됨

 

런타임 정책 검사

작업이 백그라운드에서 실행되는 동안 Windows는 다음과 같은 런타임 정책 요구 사항을 적용합니다. 런타임 요구 사항 중 하나라도 true가 아니면 장치 백그라운드 작업이 취소됩니다.

이 표에는 각 백그라운드 작업 트리거에 적용되는 런타임 정책이 나와 있습니다.

정책 검사DeviceServicingTriggerDeviceUseTrigger
벽시계 시간 제한 – 앱 작업이 백그라운드에서 실행될 수 있는 총 시간입니다.30분10분
장치가 시스템에 연결되어 있거나 무선 장치의 범위에 있습니다.정책이 적용되지 않음정책 검사가 적용됨
작업에서 장치에 정기적인 I/O를 수행하고 있습니다(5초마다 1 I/O). 정책이 적용되지 않음정책 검사가 적용됨
앱이 작업을 취소하지 않았습니다.정책 검사가 적용됨정책 검사가 적용됨
앱이 종료되지 않았습니다.정책 검사가 적용됨정책 검사가 적용됨

 

모범 사례

다음은 장치 백그라운드 작업을 사용하는 Windows 스토어 장치 앱에 대한 모범 사례입니다.

장치 백그라운드 작업 프로그래밍 모델

앱에서 DeviceUseTrigger 또는 DeviceServicingTrigger 백그라운드 작업을 사용하면 사용자가 앱을 전환하고 Windows에서 포그라운드 앱을 일시 중단한 경우에도 포그라운드에서 시작된 동기화 또는 장치 업데이트 작업이 백그라운드에서 계속 실행됩니다. 백그라운드 작업을 등록, 트리거 및 등록 취소하기 위한 다음과 같은 전체 모델을 따르는 것이 좋습니다.

  1. 트리거를 요청하기 전에 백그라운드 작업을 등록합니다.

  2. 진행 중 및 완료 이벤트 처리기를 트리거에 연결합니다. 앱이 일시 중단에서 반환되면 Windows는 백그라운드 작업의 상태를 확인하는 데 사용할 수 있는 대기 진행 중 또는 완료 이벤트를 앱에 제공합니다.

  3. DeviceUseTrigger 또는 DeviceServicingTrigger 백그라운드 작업을 트리거할 때 열려 있는 장치 개체를 모두 닫아 백그라운드 작업이 이러한 장치를 열고 사용할 수 있게 합니다.

  4. 트리거를 등록합니다.

  5. 작업이 완료되면 백그라운드 작업의 등록을 취소합니다. 백그라운드 작업이 완료되면 백그라운드 작업의 등록을 취소하고 장치를 다시 열어 Windows 스토어 앱에서 정기적으로 사용할 수 있습니다.

  6. 백그라운드 작업 클래스에서 취소 이벤트에 등록합니다. 취소 이벤트에 등록하면 백그라운드 작업 코드를 통해 Windows 또는 포그라운드 앱에서 취소한 실행 중인 백그라운드 작업을 깔끔하게 중지할 수 있습니다.

  7. 앱을 종료할 때(일시 중단 아님) 실행 중인 모든 작업을 등록 취소하고 취소합니다.

    • 앱을 종료할 때 실행 중인 모든 작업을 등록 취소하고 취소합니다.

    • 앱을 종료하면 백그라운드 작업이 취소되고 기존 백그라운드 작업에서 기존 이벤트 처리기의 연결이 끊어집니다. 이 경우 백그라운드 작업의 상태를 확인할 수 없습니다. 백그라운드 작업을 등록 취소하고 취소하면 취소 코드를 통해 백그라운드 작업을 깔끔하게 중지할 수 있습니다.

  사용자 지정 USB 장치 샘플펌웨어 업데이트 USB 장치 샘플을 사용하여 이 작업을 수행하는 방법에 대한 자세한 내용은 장치 백그라운드 작업 만들기를 참조하세요.

백그라운드 작업 취소

백그라운드에서 실행 중인 작업을 포그라운드에서 취소하려면 앱에 사용된 BackgroundTaskRegistration 개체의 Unregister 메서드를 사용하여 DeviceUseTrigger 또는 DeviceServicingTrigger 백그라운드 작업을 등록합니다. BackgroundTaskRegistration의 Unregister 메서드를 사용하여 백그라운드 작업의 등록을 취소하면 백그라운드 작업 인프라가 백그라운드 작업을 취소합니다.

또한 Unregister 메서드는 부울 true 또는 false 값을 사용하여 현재 실행 중인 백그라운드 작업 인스턴스가 완료되기 전에 취소해야 하는지 여부를 나타냅니다. 자세한 내용은 BackgroundTaskRegistration.Unregister에 대한 API 참조를 참조하세요.

관련 항목

장치 백그라운드 작업 만들기
사용자 지정 USB 장치 샘플
펌웨어 업데이트 USB 장치 샘플
실행, 다시 시작 및 멀티태스킹
백그라운드 작업을 사용하여 앱 지원

 

 

표시:
© 2015 Microsoft