사용자가 현재 app에 있지 않을 때, app 알림은 app이(가) 생성하여 사용자에게 전달할 수 있는 메시지입니다.
이 빠른 시작에서는 풍부한 콘텐츠와 대화형 작업을 사용하여 Windows 10 또는 Windows 11 app 알림을 만들고, 전달하고, 표시하는 단계를 안내합니다. 이 빠른 시작에서는 구현하는 가장 간단한 알림인 로컬 알림을 사용합니다. 모든 유형의 앱(WPF, UWP, WinForms, 콘솔)에서 알림을 보낼 수 있습니다.
Note
"toast 알림"이라는 용어가 "app 알림"으로 대체되고 있습니다. 이러한 용어는 모두 Windows의 동일한 기능을 참조하지만 시간이 지남에 따라 설명서에서 "toast 알림"의 사용을 단계적으로 중단합니다.
1단계: NuGet 패키지 설치
XML 또는 Windows Community Toolkit(WCT)의 작성기 구문을 사용하여 app 알림을 만들 수 있습니다. 후자를 선호하는 경우, 2단계 로 건너뛰고, 작성기 없는 구문 코드 예제를 참조하세요.
Visual Studio 솔루션 내에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고, "NuGet 패키지 관리..."을 클릭합니다. 그런 다음 Microsoft.Toolkit.Uwp.NotificationsNuGet 패키지를 검색하여 버전 7.0 이상을 설치하십시오.
Builder 구문의 코드 예제들은 이 패키지를 사용할 것입니다. 이 패키지를 사용하면 XML을 사용하지 않고 알림을 만들 app 수 있습니다.
2단계: 네임스페이스 선언 추가
- 작성기 구문
- 작성기 구문 없는
using namespace Microsoft::Toolkit::Uwp::Notifications;
3단계: 알림 보내기 app
Windows 10 및 Windows 11 app 에서는 알림 콘텐츠가 적응 언어를 사용하여 설명되어 있어 알림의 모양에 유연성이 크게 향상됩니다. 자세한 내용은 알림 콘텐츠 설명서를 참조 App 하세요.
간단한 텍스트 기반 알림으로 시작하겠습니다. 알림 라이브러리를 사용하여 알림 콘텐츠를 생성하고 알림을 표시합니다. 네임스페이스가 Microsoft.Toolkit.Uwp.Notifications임을 참고하십시오.
WCT 알림 라이브러리 작성기 구문을 사용하지 않는 경우 대신 XML app 알림 템플릿을 생성하고, 텍스트 및 값으로 채우고, 알림을 구성하고, 표시합니다.
- 작성기 구문
- 작성기 구문 없는
// Construct the content and show the toast!
(ref new ToastContentBuilder())
->AddArgument("action", "viewConversation")
->AddArgument("conversationId", 9813)
->AddText("Andrew sent you a picture")
->AddText("Check this out, The Enchantments in Washington!")
->Show();
4단계: 활성화 처리
사용자가 알림(포그라운드 활성화가 있는 알림의 app 단추)을 클릭하면, 사용자의 app.xaml.cpp의 OnActivated가 호출됩니다.
App.xaml.cpp
void App::OnActivated(IActivatedEventArgs^ e)
{
// Handle notification activation
if (e->Kind == ActivationKind::ToastNotification)
{
ToastNotificationActivatedEventArgs^ toastActivationArgs = (ToastNotificationActivatedEventArgs^)e;
// Obtain the arguments from the notification
ToastArguments^ args = ToastArguments::Parse(toastActivationArgs->Argument);
// Obtain any user input (text boxes, menu selections) from the notification
auto userInput = toastActivationArgs->UserInput;
// TODO: Show the corresponding content
}
}
Important
OnLaunched 코드와 마찬가지로 프레임을 초기화하고 창을 활성화해야 합니다.
app.
OnLaunched 및 OnActivated을 사용자 자신의 OnLaunchedOrActivated 메서드로 결합하여 사용할 것을 권장합니다. 두 메서드 모두에서 동일한 초기화가 필요하기 때문입니다.
심층 활성화
알림을 실행 가능하게 만드는 첫 번째 단계는 알림에 몇 가지 시작 인수를 추가하여 사용자가 알림을 클릭할 때 무엇을 시작할지 알 수 있도록 app 하는 것입니다(이 경우 나중에 대화를 열어야 함을 알려주는 몇 가지 정보를 포함하고 있으며, 어떤 특정 대화를 열어야 하는지 알고 있습니다).
- 작성기 구문
- 작성기 구문 없는
// Construct the content and show the toast!
(ref new ToastContentBuilder())
// Arguments returned when user taps body of notification
->AddArgument("action", "viewConversation")
->AddArgument("conversationId", 9813)
->AddText("Andrew sent you a picture")
->Show();
이미지 추가
알림에 다양한 콘텐츠를 추가할 수 있습니다. 인라인 이미지와 프로필(app 로고 재정의) 이미지를 추가합니다.
Note
이미지는 app 패키지에서, app 로컬 저장소에서 또는 웹에서 사용할 수 있습니다. Fall Creators Update를 기준으로 웹 이미지는 일반 연결에서 최대 3MB, 요금제 연결의 경우 1MB가 될 수 있습니다. 아직 Fall Creators Update를 실행하지 않는 디바이스에서는 웹 이미지가 200KB 이하여야 합니다.
- 작성기 구문
- 작성기 구문 없는
// Construct the content and show the toast!
(ref new ToastContentBuilder())
...
// Inline image
->AddInlineImage(ref new Uri("https://picsum.photos/360/202?image=883"))
// Profile (app logo override) image
->AddAppLogoOverride(ref new Uri("ms-appdata:///local/Andrew.jpg"), ToastGenericAppLogoCrop::Circle)
->Show();
단추 및 입력 추가
단추 및 입력을 추가하여 알림을 대화형으로 만들 수 있습니다. 단추는 포그라운드 app, 프로토콜 또는 백그라운드 작업을 시작할 수 있습니다. 회신 텍스트 상자, "좋아요" 단추 및 이미지를 여는 "보기" 단추를 추가합니다.
- 작성기 구문
- 작성기 구문 없는
// Construct the content
(ref new ToastContentBuilder())
->AddArgument("conversationId", 9813)
...
// Text box for replying
->AddInputTextBox("tbReply", "Type a response")
// Buttons
->AddButton((ref new ToastButton())
->SetContent("Reply")
->AddArgument("action", "reply")
->SetBackgroundActivation())
->AddButton((ref new ToastButton())
->SetContent("Like")
->AddArgument("action", "like")
->SetBackgroundActivation())
->AddButton((ref new ToastButton())
->SetContent("View")
->AddArgument("action", "view"))
->Show();
포그라운드 단추의 활성화는 주 알림 본문과 동일한 방식으로 처리됩니다( App.xaml.cpp OnActivated가 호출됨).
백그라운드 활성화 처리
알림 또는 알림 내의 단추에서 app 백그라운드 활성화를 지정하면 포그라운드 app를 활성화하는 대신 백그라운드 작업이 실행됩니다.
백그라운드 작업에 대한 자세한 내용은 백그라운드 작업 지원을 참조하세요app.
빌드 14393 이상을 대상으로 하는 경우 프로세스 내 백그라운드 작업을 사용하여 작업을 크게 간소화할 수 있습니다. 주의: In-Process 백그라운드 작업은 이전 버전의 Windows에서 실행에 실패할 수 있습니다. 이 코드 샘플에서는 프로세스 내 백그라운드 작업을 사용합니다.
const string taskName = "ToastBackgroundTask";
// If background task is already registered, do nothing
if (BackgroundTaskRegistration.AllTasks.Any(i => i.Value.Name.Equals(taskName)))
return;
// Otherwise request access
BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
// Create the background task
BackgroundTaskBuilder builder = new BackgroundTaskBuilder()
{
Name = taskName
};
// Assign the toast action trigger
builder.SetTrigger(new ToastNotificationActionTrigger());
// And register the task
BackgroundTaskRegistration registration = builder.Register();
그런 다음 App.xaml.cs 파일에서 OnBackgroundActivated 메서드를 재정의합니다. 그런 다음 전경 활성화와 유사하게 미리 정의된 인수 및 사용자 입력을 검색할 수 있습니다.
App.xaml.cs
protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
{
var deferral = args.TaskInstance.GetDeferral();
switch (args.TaskInstance.Task.Name)
{
case "ToastBackgroundTask":
var details = args.TaskInstance.TriggerDetails as ToastNotificationActionTriggerDetail;
if (details != null)
{
string arguments = details.Argument;
var userInput = details.UserInput;
// Perform tasks
}
break;
}
deferral.Complete();
}
만료 시간 설정
Windows 10 및 11에서 모든 app 알림은 사용자가 해제하거나 무시한 후 알림 센터로 이동하므로 팝업이 종료된 후 사용자가 알림을 볼 수 있습니다.
그러나 알림의 메시지가 일정 기간 동안만 관련이 있는 경우, 사용자가 app에서 오래된 정보를 보지 않도록 알림에 만료 시간을 설정해야 합니다. 예를 들어 승격이 12시간 동안만 유효한 경우 만료 시간을 12시간으로 설정합니다. 아래 코드에서는 만료 시간을 2일로 설정합니다.
Note
로컬 app 알림의 기본 및 최대 만료 시간은 3일입니다.
// Create toast content and show the toast!
(ref new ToastContentBuilder())
->AddText("Expires in 2 days...")
->Show(toast =>
{
toast->ExpirationTime = DateTime::Now->AddDays(2);
});
알림에 대한 app 기본 키 제공
보내는 알림을 프로그래밍 방식으로 제거하거나 바꾸려면 Tag 속성(및 선택적으로 그룹 속성)을 사용하여 알림의 기본 키를 제공해야 합니다. 그런 다음 나중에 이 기본 키를 사용하여 알림을 제거하거나 바꿀 수 있습니다.
이미 배달된 app 알림을 대체/제거하는 방법에 대한 자세한 내용은 빠른 시작: 알림 센터(XAML)에서 알림 관리toast를 참조하세요.
태그 및 그룹 결합은 복합 기본 키 역할을 합니다. 그룹은 "wallPosts", "messages", "friendRequests" 등과 같은 그룹을 할당할 수 있는 보다 일반적인 식별자입니다. 그런 다음 태그는 그룹 내에서 알림 자체를 고유하게 식별해야 합니다. 그런 다음 제네릭 그룹을 사용하여 RemoveGroup API를 사용하여 해당 그룹에서 모든 알림을 제거할 수 있습니다.
// Create toast content and show the toast!
(ref new ToastContentBuilder())
->AddText("New post on your wall!")
->Show(toast =>
{
toast.Tag = "18365";
toast.Group = "wallPosts";
});
알림 지우기
앱은 자체 알림을 제거하고 지울 책임이 있습니다. app이 시작되면 알림이 자동으로 지워지지 않습니다.
Windows는 사용자가 알림을 명시적으로 클릭하는 경우에만 알림을 자동으로 제거합니다.
메시징이 수행해야 하는 작업의 app 예는 다음과 같습니다.
- 사용자가 대화에서 새 메시지에 대한 여러 app 알림을 받습니다.
- 사용자가 해당 알림 중 하나를 탭하여 대화를 엽니다.
- app 대화가 열리고 해당 대화에 대해 제공된 그룹에서 RemoveGroup을 사용하여 해당 대화에 app대한 모든 알림을 지웁니다.
- 이제 알림 센터에 남아 있는 대화에 대한 부실 알림이 없으므로 사용자의 알림 센터는 알림 상태를 올바르게 반영합니다.
모든 알림을 지우거나 특정 알림을 제거하는 방법에 대한 자세한 내용은 빠른 시작: XAML(알림 센터)에서 알림 관리를 toast참조하세요.
ToastNotificationManagerCompat::History->Clear();
Resources
Windows developer