타이머에 따라 백그라운드 작업을 실행하는 방법(HTML)
[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]
일회성 백그라운드 작업을 예약하거나 Windows 스토어 앱과 관련된 정기적 백그라운드 작업을 실행하는 방법을 알아봅니다. 사용자가 앱을 잠금 화면에 배치하면 앱이 Windows에서는 최대 15분 간격, Windows Phone에서는 최대 30분 간격으로 실행되는 백그라운드 작업을 등록할 수 있습니다. 예를 들어 백그라운드 작업을 사용하여 정기적인 타일 또는 배지 업데이트를 제공할 수 있습니다.
알아야 할 사항
기술
사전 요구 사항
- 이 예제에서는 앱을 지원하기 위해 정기적으로 또는 특정 시간에 실행해야 하는 백그라운드 작업이 있다고 가정합니다. Windows에서는 RequestAccessAsync 호출을 사용하여 앱이 잠금 화면에 있도록 요청했으며 사용자가 프롬프트를 수락한 경우에만 백그라운드 작업이 TimeTrigger를 사용하여 실행됩니다. Windows Phone에서는 RequestAccessAsync를 호출해야 하지만 사용자 프롬프트가 없습니다. 자세한 내용은 잠금 화면에 타일 표시를 참조하세요.
- 이 항목에서는 백그라운드 작업 진입점으로 사용되는 Run 메서드를 비롯하여 백그라운드 작업 클래스를 이미 만들었다고 가정합니다. 백그라운드 작업을 빠르게 작성하려면 빠른 시작: 백그라운드 작업 만들기 및 등록을 참조하세요. 조건 및 트리거에 대한 자세한 내용은 백그라운드 작업을 사용하여 앱 지원을 참조하세요.
지침
단계 1: 시간 트리거 만들기
새 TimeTrigger를 만듭니다. 두 번째 매개 변수인 OneShot은 백그라운드 작업이 한 번 실행되는지, 아니면 정기적으로 계속 실행되는지를 지정합니다. OneShot이 true로 설정된 경우 첫 번째 매개 변수(FreshnessTime)는 백그라운드 작업을 예약하기 전에 대기할 시간(분)을 지정합니다. OneShot이 false로 설정된 경우 FreshnessTime은 백그라운드 작업의 실행 빈도를 지정합니다.
Windows 8에는 15분 간격으로 백그라운드 작업을 실행하는 기본 제공 타이머가 있습니다. Windows Phone에서 이 간격은 30분입니다.
FreshnessTime이 15분으로 설정되고 OneShot이 true이면 작업이 등록된 시간부터 0분에서 15분 사이에 한 번 실행됩니다.
FreshnessTime이 15분으로 설정되고 OneShot이 false이면 작업이 등록된 시간부터 0분에서 15분 사이에 시작하여 15분마다 실행됩니다.
참고 FreshnessTime이 15분 이하로 설정된 경우 백그라운드 작업을 등록하려면 예외가 발생합니다.
예를 들어 다음 트리거는 백그라운드 작업을 한 시간에 한 번 실행합니다.
var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, false);
단계 2: (옵션) 조건 추가
필요한 경우 작업이 실행되는 시간을 제어하는 백그라운드 작업 조건을 추가합니다. 그러면 조건이 충족되는 경우에만 백그라운드 작업이 실행됩니다. 자세한 내용은 백그라운드 작업 실행 조건을 설정하는 방법을 참조하세요.
이 예제에서는 트리거된 작업이 사용자가 활성 상태일 때만 실행되도록 조건을 UserPresent로 설정합니다. 가능한 조건 목록은 SystemConditionType을 참조하세요.
다음 코드는 백그라운드 작업에 조건을 추가합니다.
var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);
단계 3: 잠금 화면 액세스 요청
TimeTrigger 백그라운드 작업을 등록하기 전에 RequestAccessAsync를 호출하여 잠금 화면에 추가하도록 사용자에게 사용 권한을 요청합니다.
Windows에서 다음 코드는 앱을 잠금 화면에 추가하도록 요청하는 대화 상자를 표시합니다. Phone에서는 앱에 백그라운드 작업 실행 권한을 부여하도록 요청만 합니다.
Windows.ApplicationModel.Background.BackgroundExecutionManager.RequestAccessAsync();
참고 앱은 잠금 화면 액세스를 한 번만 요청할 수 있습니다. 사용자는 두 옵션 중 하나만 선택할 수 있으므로 옵션의 우선 순위가 결정됩니다. RequestAccessAsync에 대한 추가 호출은 무시됩니다.
단계 4: 백그라운드 작업 등록
백그라운드 작업 등록 함수를 호출하여 백그라운드 작업을 등록합니다. 백그라운드 작업 등록에 대한 자세한 내용은 백그라운드 작업을 등록하는 방법을 참조하세요.
다음 코드는 백그라운드 작업을 등록합니다.
var entryPoint = “js\\ExampleBackgroundTask.js”;
var taskName = “Example hourly background task”;
var task = RegisterBackgroundTask(entryPoint, taskName, hourlyTrigger, userCondition);
참고
Windows 8.1부터 백그라운드 작업 등록 매개 변수는 등록 시 유효성이 검사됩니다. 등록 매개 변수가 하나라도 유효하지 않으면 오류가 반환됩니다. 백그라운드 작업 등록이 실패할 경우 앱에서 시나리오를 처리할 수 있어야 합니다. 예를 들어 조건문을 사용하여 등록 오류를 확인한 다음 다른 매개 변수 값을 사용하여 실패한 등록을 다시 시도해야 합니다.
설명
참고 Windows에서는 사용자가 앱을 잠금 화면에 추가하거나 앱이 액세스를 요청할 때 사용 권한을 부여한 경우에만 백그라운드 작업이 시간 트리거에 등록됩니다. 잠금 화면에 타일 표시를 참조하세요. 앱을 잠금 화면에 배치하도록 요구하지 않는 트리거에 백그라운드 작업을 연결할 수 있습니다. 이러한 백그라운드 작업 트리거 유형에 대한 자세한 내용은 백그라운드 작업을 사용하여 앱 지원을 참조하세요.