다음을 통해 공유


백그라운드 작업으로 시스템 이벤트에 응답

중요 API

SystemTrigger 이벤트에 응답하는 백그라운드 작업을 만드는 방법을 알아봅니다.

이 토픽에서는 사용자의 앱에 맞게 작성된 백그라운드 작업 클래스가 있으며, 시스템에서 트리거되는 이벤트(예: 인터넷 가용성이 달라지는 경우 또는 사용자가 로그인하는 경우)에 대한 응답으로 이 작업을 실행해야 한다고 가정합니다. 이 토픽에서는 SystemTrigger 클래스를 중점적으로 다룹니다. 백그라운드 작업 클래스 작성에 대한 자세한 내용은 In-process 백그라운드 작업 생성 및 등록 또는 Out-of-process 백그라운드 작업 생성 및 등록에서 확인할 수 있습니다.

SystemTrigger 개체 생성

앱 코드에서 새 SystemTrigger 개체를 생성하세요. 첫 번째 매개변수인 triggerType은 이 백그라운드 작업을 활성화할 시스템 이벤트 트리거의 유형을 지정합니다. 이벤트 유형 목록은 SystemTriggerType을 참조하세요.

두 번째 매개변수인 OneShot은 백그라운드 작업이 다음에 시스템 이벤트가 발생할 때 한 번만 실행될지, 아니면 작업의 등록이 취소될 때까지 시스템 이벤트가 발생할 때마다 실행될지 여부를 지정합니다.

다음 코드는 인터넷 사용이 가능해질 때마다 백그라운드 작업이 실행되도록 지정합니다.

SystemTrigger internetTrigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
Windows::ApplicationModel::Background::SystemTrigger internetTrigger{
    Windows::ApplicationModel::Background::SystemTriggerType::InternetAvailable, false};
SystemTrigger ^ internetTrigger = ref new SystemTrigger(SystemTriggerType::InternetAvailable, false);

백그라운드 작업 등록

백그라운드 작업 등록 함수를 호출해서 백그라운드 작업을 등록하세요. 백그라운드 작업 등록에 대한 자세한 내용은 백그라운드 작업 등록을 참조하세요.

다음 코드는 Out-of-process가 실행되는 백그라운드 프로세스에 대한 백그라운드 작업을 등록합니다. 호스트 앱과 동일한 프로세스에서 실행되는 백그라운드 작업을 호출하려는 경우에는 entrypoint을(를) 설정하지 않습니다.

string entryPoint = "Tasks.ExampleBackgroundTaskClass"; // Namespace name, '.', and the name of the class containing the background task
string taskName   = "Internet-based background task";

BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" }; // don't set for in-process background tasks.
std::wstring taskName{ L"Internet-based background task" };

Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
    RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass"; // don't set for in-process background tasks
String ^ taskName   = "Internet-based background task";

BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);

참고 항목

유니버설 Windows 플랫폼 앱은 백그라운드 트리거 형식을 등록하기 전에 RequestAccessAsync를 호출해야 합니다.

업데이트를 배포한 후에도 유니버설 Windows 앱이 계속해서 제대로 실행되도록 하려면, 업데이트 후 앱이 시작될 때 RemoveAccess를 호출한 다음 RequestAccessAsync를 호출해야 합니다. 자세한 내용은 백그라운드 작업 지침을 참조하세요.

참고 항목

백그라운드 작업 등록 매개변수는 등록 시 유효성 검사를 거칩니다. 등록 매개변수 중 하나라도 유효하지 않으면 오류가 반환됩니다. 백그라운드 작업 등록이 실패하는 시나리오를 앱이 정상적으로 처리해야 합니다. 그 대신 앱이 작업 등록을 시도한 후 유효한 등록 개체를 갖는 데 의존할 경우에는 충돌이 발생할 수 있습니다.  

설명

진행 중인 백그라운드 작업 등록을 확인하려면 백그라운드 작업 샘플을 다운로드하세요.

SystemTrigger 이벤트 및 MaintenanceTrigger 이벤트에 대한 응답으로 백그라운드 작업을 실행할 수 있지만, 이 경우에도 애플리케이션 매니페스트에서 백그라운드 작업을 선언해야 합니다. 또한 백그라운드 작업 유형을 등록하기 전에 RequestAccessAsync를 호출해야 합니다.

앱으로 TimeTrigger 이벤트, PushNotificationTrigger 이벤트 및 NetworkOperatorNotificationTrigger 이벤트에 응답하는 백그라운드 작업을 등록할 수 있고, 이러한 작업들을 통해 앱이 포그라운드에 없는 경우에도 사용자와의 실시간 통신을 제공할 수 있습니다. 자세한 내용은 백그라운드 작업을 이용한 앱 지원을 참조하세요.