이 항목은 C# 또는 C++가 아닌 패키지 app 되지 않은 항목을 개발하는 경우에 적합합니다.
즉, 패키지된 프로젝트(패키지된 WinUI 3 데스크톱app에 대한 새 프로젝트 만들기 참조)를 개발하지 않거나, 외부 위치로 패키지된 app 프로젝트(외부 위치로 패키징하여 패키지 ID 부여 참조)를 개발하지 않으며, 사용 중인 app이 C# 또는 C++가 아닌 경우입니다.
app 알림은 사용자가 현재 귀하의 app를 사용하고 있지 않을 때 app가 작성하여 사용자에게 전달할 수 있는 메시지입니다. 이 빠른 시작에서는 Windows app 알림을 만들고, 전달하고, 표시하는 단계를 안내합니다. 이 빠른 시작에서는 구현하는 가장 간단한 알림인 로컬 알림을 사용합니다.
Note
"toast 알림"이라는 용어가 "app 알림"으로 대체되고 있습니다. 이러한 용어는 모두 Windows의 동일한 기능을 참조하지만 시간이 지남에 따라 설명서에서 "toast 알림"의 사용을 단계적으로 중단합니다.
Important
C# app을 작성하는 경우 C# 설명서를 참조하세요. C++ app를 작성하는 경우 C++ UWP 또는 C++WRL 설명서를 참조하세요.
1단계: 레지스트리에 등록 app
먼저 레지스트리에 app를 식별하는 고유한 AUMID, app의 표시 이름, 아이콘 및 COM 활성화자의 GUID를 포함하여 app의 정보를 등록해야 합니다.
<registryKey keyName="HKEY_LOCAL_MACHINE\Software\Classes\AppUserModelId\<YOUR_AUMID>">
<registryValue
name="DisplayName"
value="My App"
valueType="REG_EXPAND_SZ" />
<registryValue
name="IconUri"
value="C:\icon.png"
valueType="REG_EXPAND_SZ" />
<registryValue
name="IconBackgroundColor"
value="AARRGGBB"
valueType="REG_SZ" />
<registryValue
name="CustomActivator"
value="{YOUR COM ACTIVATOR GUID HERE}"
valueType="REG_SZ" />
</registryKey>
2단계: COM 활성화기 설정
알림은 app가 실행 중이 아니더라도 언제든지 클릭할 수 있습니다. 따라서 알림 활성화는 COM 활성화자를 통해 처리됩니다. COM 클래스는 INotificationActivationCallback 인터페이스를 구현해야 합니다. COM 클래스의 GUID는 레지스트리 CustomActivator 값에 지정한 GUID와 일치해야 합니다.
struct callback : winrt::implements<callback, INotificationActivationCallback>
{
HRESULT __stdcall Activate(
LPCWSTR app,
LPCWSTR args,
[[maybe_unused]] NOTIFICATION_USER_INPUT_DATA const* data,
[[maybe_unused]] ULONG count) noexcept final
{
try
{
std::wcout << this_app_name << L" has been called back from a notification." << std::endl;
std::wcout << L"Value of the 'app' parameter is '" << app << L"'." << std::endl;
std::wcout << L"Value of the 'args' parameter is '" << args << L"'." << std::endl;
return S_OK;
}
catch (...)
{
return winrt::to_hresult();
}
}
};
3단계: 알림 보내기 app
Windows 10 app 에서 알림 콘텐츠는 알림의 모양을 유연하게 조정할 수 있는 적응 언어를 사용하여 설명됩니다. App 자세한 내용은 알림 콘텐츠 설명서를 참조하세요.
간단한 텍스트 기반 알림으로 시작하겠습니다. 알림 라이브러리를 사용하여 알림 콘텐츠를 생성하고 알림을 표시합니다.
Important
알림을 보낼 때는 이전에 사용한 AUMID를 사용하여 알림이 app에서 발신된 것으로 표시되도록 해야 합니다.
// Construct the toast template
XmlDocument doc;
doc.LoadXml(L"<toast>\
<visual>\
<binding template=\"ToastGeneric\">\
<text></text>\
<text></text>\
</binding>\
</visual>\
</toast>");
// Populate with text and values
doc.SelectSingleNode(L"//text[1]").InnerText(L"Andrew sent you a picture");
doc.SelectSingleNode(L"//text[2]").InnerText(L"Check this out, The Enchantments in Washington!");
// Construct the notification
ToastNotification notif{ doc };
// And send it! Use the AUMID you specified earlier.
ToastNotificationManager::CreateToastNotifier(L"MyPublisher.MyApp").Show(notif);
4단계: 활성화 처리
알림을 클릭하면 COM 활성화기가 활성화됩니다.
More details
AUMID restrictions
AUMID의 길이는 최대 129자여야 합니다. AUMID가 129자를 초과하는 경우 예약된 toast 알림이 작동하지 않습니다. 예약된 알림을 추가할 때 다음 예외가 발생합니다. 시스템 호출에 전달된 데이터 영역이 너무 작습니다. (0x8007007A).
Windows developer