알림 메시지 예약

예약된 알림 메시지를 사용하면 해당 시간에 앱이 실행되고 있는지 여부에 관계없이 나중에 알림이 표시되도록 예약할 수 있습니다. 이는 사용자에 대한 미리 알림 또는 기타 후속 작업을 표시하는 등의 시나리오에 유용합니다. 이 경우 알림의 시간 및 콘텐츠가 미리 표시됩니다.

예약된 알림 메시지의 전송 기간은 5분입니다. 예약된 전송 시간 동안 컴퓨터가 꺼져 있고 5분 넘게 꺼진 상태를 유지하는 경우 알림은 사용자와 더 이상 관련이 없는 것으로 “삭제”됩니다. 컴퓨터가 꺼진 기간에 관계없이 알림 전송이 보장되어야 하는 경우 이 코드 샘플에 나와 있는 것처럼 시간 트리거와 함께 백그라운드 작업을 사용하는 것이 좋습니다.

Important

데스크톱 응용 프로그램(패키지된 응용 프로그램과 패키지되지 않은 응용 프로그램 모두)은 알림을 보내고 활성화를 처리하는 단계가 약간 다릅니다. 아래 지침을 따릅니다. 그러나 데스크톱 앱 설명서의 ToastNotificationManagerDesktopNotificationManagerCompat 클래스로 바꿉니다.

중요 API: ScheduledToastNotification 클래스

필수 조건

다음은 이 문서의 내용을 완전히 이해하는 데 도움이 되는 항목입니다.

  • 알림 메시지 용어 및 개념에 관한 실무 지식 자세한 내용은 알림 및 알림 센터 개요를 참조하세요.
  • Windows 10 알림 메시지 콘텐츠에 대한 기본 지식 자세한 내용은 알림 콘텐츠 설명서를 참조하세요.
  • Windows 10 UWP 앱 프로젝트 만들기

1단계: NuGet 패키지 설치

Microsoft.Toolkit.Uwp.Notifications NuGet package를 설치합니다. 코드 샘플에서는 이 패키지를 사용합니다. 문서 끝에서 NuGet 패키지를 사용하지 않는 “일반” 코드 조각을 제공합니다. 이 패키지를 사용하면 XML을 사용하지 않고 알림 메시지를 만들 수 있습니다.

2단계: 네임스페이스 선언 추가

using Microsoft.Toolkit.Uwp.Notifications; // Notifications library

3단계: 알림 예약

오늘까지 해야 하는 숙제에 대해 학생에게 알려주는 간단한 텍스트 기반 알림을 사용합니다. 알림을 구성하고 예약합니다!

// Construct the content and schedule the toast!
new ToastContentBuilder()
    .AddArgument("action", "viewItemsDueToday")
    .AddText("ASTR 170B1")
    .AddText("You have 3 items due today!");
    .Schedule(DateTime.Now.AddSeconds(5));

알림에 대한 기본 키 제공

예약된 알림을 프로그래밍 방식으로 취소하거나 제거하거나 바꾸려면 Tag 속성과 Group 속성(옵션)을 사용하여 알림에 대한 기본 키를 제공해야 합니다. 그런 다음 나중에 이 기본 키를 사용하여 알림을 취소하거나 제거하거나 바꿀 수 있습니다.

이미 전송한 알림 메시지 바꾸기/제거에 대한 자세한 내용은 빠른 시작: 알림 센터(XAML)에서 알림 메시지 관리를 참조하세요.

결합된 Tag와 Group은 복합 기본 키 역할을 합니다. Group은 “wallPosts”, “messages”, “friendRequests”와 같은 그룹에 할당할 수 있는 더 일반적인 식별자이고, Tag는 그룹 내에서 알림 자체를 고유하게 식별해야 합니다. 그러면 일반 그룹을 사용하여 RemoveGroup API로 해당 그룹에서 모든 알림을 제거할 수 있습니다.

// Construct the content and schedule the toast!
new ToastContentBuilder()
    .AddArgument("action", "viewItemsDueToday")
    .AddText("ASTR 170B1")
    .AddText("You have 3 items due today!");
    .Schedule(DateTime.Now.AddSeconds(5), toast =>
    {
        toast.Tag = "18365";
        toast.Group = "ASTR 170B1";
    });

예약된 알림 취소

예약된 알림을 취소하려면 먼저 모든 예약된 알림 목록을 검색해야 합니다.

그런 다음 앞에서 지정한 태그(및 필요에 따라 그룹)와 일치하는 예약된 알림을 찾고 RemoveFromSchedule()을 호출합니다.

// Create the toast notifier
ToastNotifierCompat notifier = ToastNotificationManagerCompat.CreateToastNotifier();

// Get the list of scheduled toasts that haven't appeared yet
IReadOnlyList<ScheduledToastNotification> scheduledToasts = notifier.GetScheduledToastNotifications();

// Find our scheduled toast we want to cancel
var toRemove = scheduledToasts.FirstOrDefault(i => i.Tag == "18365" && i.Group == "ASTR 170B1");
if (toRemove != null)
{
    // And remove it from the schedule
    notifier.RemoveFromSchedule(toRemove);
}

Important

패키지되지 않은(런타임 시 패키지 ID 부족) Win32 앱은 위에서 설명한 대로 ToastNotificationManagerCompat 클래스를 사용해야 합니다. ToastNotificationManager 자체를 사용하는 경우 element-not-found 예외가 발생합니다. 모든 유형의 앱은 Compat 클래스를 사용할 수 있으며 제대로 작동합니다.

활성화 처리

활성화 처리에 대한 자세한 내용은 로컬 알림 보내기 문서를 참조하세요. 예약된 알림 메시지의 활성화는 로컬 알림 메시지의 활성화와 동일하게 처리됩니다.

작업, 입력 등 추가

작업 및 입력과 같은 고급 항목에 대해 자세히 알아보려면 로컬 알림 보내기 문서를 참조하세요. 작업 및 입력은 로컬 알림에서도 예약된 알림에서와 동일하게 작동합니다.

리소스