Wintoast는 C ++로 작성된 가벼운 라이브러리로 Windows 8 , Windows 10 및 Windows 11 의 최신 토스트 알림을 완전히 통합합니다.
토스트 알림을 통해 앱은 새로운 인스턴트 메시지, 새로운 친구 요청, 뉴스 속보 또는 캘린더 이벤트와 같이 앱 내부에서보고 조치를 취해야하는 관련 정보 및 적시 이벤트에 대해 사용자에게 알릴 수 있습니다.
Wintoast는 ToastTemPlateType 열거에서 사용 가능한 모든 표준 템플릿을 통합합니다.
| 주형 | 설명 | 예 |
|---|---|---|
ImageAndText01 | 큰 이미지와 단일 문자열이 세 줄의 텍스트에 랩핑됩니다. | ![]() |
ImageAndText02 | 큰 이미지, 첫 번째 줄에 하나의 굵은 텍스트 문자열, 두 번째 줄과 세 번째 줄을 가로 질러 랩핑 한 한 줄의 정규 텍스트. | ![]() |
ImageAndText03 | 큰 이미지, 하나의 굵은 텍스트 문자열 첫 두 줄에 랩핑되었습니다. | ![]() |
ImageAndText04 | 큰 이미지, 첫 번째 줄에 한 번의 대담한 텍스트 문자열, 두 번째 줄에 하나의 정규 텍스트, 세 번째 줄에 한 번의 일반 텍스트 문자열이 있습니다. | ![]() |
Text01 | 단일 문자열 3 줄의 텍스트에 랩핑되었습니다. | ![]() |
Text02 | 첫 번째 줄에 한 번의 대담한 텍스트 문자열, 두 번째 줄과 세 번째 줄에 한 번의 일반 텍스트 문자열이 있습니다. | ![]() |
Text03 | 첫 번째 두 줄에 랩핑 한 굵은 텍스트 한 줄, 세 번째 줄에 하나의 일반 텍스트 문자열이 있습니다. | ![]() |
Text04 | 첫 번째 줄에 한 번의 굵은 텍스트 문자열, 두 번째 줄에 한 번의 일반 텍스트 문자열, 세 번째 줄에 한 번의 일반 텍스트 문자열이 있습니다. | ![]() |
ImageAndText02 템플릿의 예 :
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText02);
templ.setTextField( L" title " , WinToastTemplate::FirstLine);
templ.setTextField( L" subtitle " , WinToastTemplate::SecondLine);
templ.setImagePath( L" C:/example.png " ); 참고 : 사용자는 기본 시스템 사운드를 사용하거나 토스트 알림이 표시 될 때 재생할 사운드를 지정할 수 있습니다. 토스트 알림 이미지에 대해 동일한 동작, 기본적으로 Windows는 앱 아이콘을 사용하려고합니다.*
Wintoast는 다양한 이벤트를 처리합니다.
인터페이스 IWinToastHandler 서브 클래스하여 사용자 작업과 상호 작용할 수 있도록 사용자 정의 핸들러를 만듭니다.
class WinToastHandlerExample : public IWinToastHandler {
public:
WinToastHandlerExample ();
// Public interfaces
void toastActivated () const override ;
void toastActivated ( int actionIndex) const override ;
void toastDismissed (WinToastDismissalReason state) const override ;
void toastFailed () const override ;
};알림 내용의 전체 문서는 여기를 참조하십시오.
중요한 알림, 알람, 알림 및 수신 통화 알림을 만들려면 시나리오 값이 지정된 일반 앱 알림을 사용합니다. 이 시나리오는 일관되고 통합 된 사용자 경험을 만들기 위해 몇 가지 동작을 조정합니다. 가능한 4 가지 시나리오 값이 있습니다.
토스트 알림이 더 이상 전류로 간주되지 않거나 유효하지 않은 시간을 설정하십시오. Windows는 쇼에 전화 한 직후 토스트 알림을 제기하려고 시도 하므로이 속성은 거의 사용되지 않습니다.
Windows 8.X 앱의 경우이 속성으로 인해 지정된 데이터 및 시간에 도달하면 액션 센터에서 토스트 알림이 제거됩니다.
참고 : 기본 Windows 동작은 Windows에서 시간을 설정 한 후에 알림을 자동으로 숨기는 것입니다. Windows Action Center에서 오랫동안 알림을 보존 해야하는 경우 WinToastTemplate::setExpiration 메소드를 호출해야합니다.
Microsoft 스타일 가이드 라인은 앱과 쉘의 사람들을 일관되게 표현하기 위해 원형 이미지를 가진 프로필 사진을 표현하는 것이 좋습니다. 힌트 크롭 속성을 원으로 설정하여 원형 작물로 이미지를 렌더링하십시오.
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText02);
templ.setTextField( L" Matt sent you a friend request " , WinToastTemplate::FirstLine);
templ.setTextField( L" Hey, wanna dress up as wizards and ride around on hoverboards? " , WinToastTemplate::SecondLine);
templ.setImagePath( L" C:/example.png " );
templ.setHintCrop(WinToastTemplate::Circle);
영웅 이미지는 토스트 알림의 맨 위에 나타나는 큰 이미지입니다. 영웅 이미지는 선택 사항이며 사용자에게 추가 컨텍스트를 제공하는 데 사용할 수 있습니다.
참고 : Windows 8.1 및 Windows Phone 8.1에서는 영웅 이미지가 지원되지 않습니다.
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText02);
templ.setTextField( L" Mary Anne " , WinToastTemplate::FirstLine);
templ.setTextField( L" Check out where we camped last night! " , WinToastTemplate::SecondLine);
templ.setHeroImagePath( L" C:/example.png " );
영웅 이미지는 WinToastTemplate::setHeroImagePath 메소드를 호출하여 지정됩니다. 이미지 경로는 로컬 파일 경로 또는 URI 일 수 있습니다.
방법의 두 번째 매개 변수 WinToastTemplate::setHeroImagePath 토스트 알림에 이미지가 인쇄되어야하는지 여부를 지정하는 부울 값입니다.
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText01);
templ.setTextField( L" Feature image of the day " , WinToastTemplate::FirstLine);
templ.setHeroImagePath( L" C:/example.png " , true );
자신의 작업을 추가 할 수 있습니다.이 사실은 다른 방식으로 사용자와 상호 작용할 수 있습니다.
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText01);
templ.setTextField( L" New product in stock " , WinToastTemplate::FirstLine);
std::vector<std::wstring> actions;
actions.push_back( L" See more details " );
actions.push_back( L" Remind me later " );
// ...
for ( auto const &action : actions) {
templ. addAction (action);
}
WinToast::instance ()->showToast(templ, handler) 
새로운 기념일 업데이트 : 콘텐츠 소스를 참조 해야하는 경우 속성 텍스트를 사용할 수 있습니다. 이 텍스트는 항상 모든 텍스트 요소 아래에 있지만 인라인 이미지 위에 표시됩니다. 텍스트는 표준 텍스트 요소보다 약간 작은 크기를 사용하여 일반 텍스트 요소를 구별하는 데 도움이됩니다.
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::Text02);
templ.setTextField( L" Mary Anne " , WinToastTemplate::FirstLine);
templ.setTextField( L" Check out where we camped last night! " , WinToastTemplate::SecondLine);
templ.setHeroImagePath( L" C:/example.png " );
templ.setAttributionText( L" Via SMS " );
토스트가 표시되어야하는 시간의 양. 이 속성은 다음 값 중 하나를 가질 수 있습니다 .- 시스템 : 기본 시스템 구성. - 짧은 : 기본 시스템 짧은 시간 구성. - 긴 : 기본 시스템 장기 구성.
사운드의 다양한 동작을 수정할 수 있습니다. - 기본값 : 오디오 파일을 한 번만 재생합니다. - 침묵 : 소리를 끕니다. - 루프 : 토스트가 존재하는 동안 루프에서 주어진 소리를 재생합니다.
Wintoast는 기본 오디오 파일을 수정할 수 있습니다. 주어진 파일을 프로젝트 리소스에 추가하고 ( ms-appx : // 또는 ms-appdata : // path이어야 함 ) :
WinToastTemplate::setAudioPath호출하여 정의하십시오.
기본적으로 Wintoast는 시스템이 지원되지 않는 기능을 무시하고 시스템이 기능을 지원하는지 확인합니다.
Wintoast가 실패 할 수있는 몇 가지 이유가 있으므로 라이브러리가 발신자에게 실패 이유에 대해 알리는 이유가 있습니다. 이는 각각의 실패에 대한 코드입니다.
| Wintoasterror | 오류 코드 | 오류 메시지 |
|---|---|---|
NoError | 0x00 | 오류가 없습니다. 프로세스가 올바르게 실행되었습니다 |
NotInitialized | 0x01 | 도서관이 초기화되지 않았습니다 |
SystemNotSupported | 0x02 | OS는 Wintoast를 지원하지 않습니다 |
ShellLinkNotCreated | 0x03 | 라이브러리는 앱의 쉘 링크를 만들 수 없었습니다. |
InvalidAppUserModelID | 0x04 | AUMI는 유효한 것이 아닙니다 |
InvalidParameters | 0x05 | 잘못된 AUMI 또는 앱 이름이므로 라이브러리를 구성하는 데 사용되는 매개 변수는 일반적으로 유효하지 않습니다. |
NotDisplayed | 0x06 | 토스트는 올바르게 만들어졌지만 Wintoast는 토스트를 표시 할 수 없었습니다. |
UnknownError | 0x07 | 알 수없는 오류 |
사용법의 일반적인 예는 라이브러리를 초기화하거나 토스트 알림을 표시하는 동안 가능한 실패 코드를 확인하는 것입니다.
WinToast::WinToastError error;
const auto succedded = WinToast::instance()-> initialize (&error);
if (!succedded) {
std::wcout << L" Error, could not initialize the lib. Error number: "
<< error << std::endl;
}
...
// Configure the template
...
const auto toast_id = WinToast::instance()-> showToast (templ, handler, &error);
if (toast_id < 0 ) {
std::wcout << L" Error: Could not launch your toast notification. Error: "
<< error << std::endl;
}쉽게 사용하기 위해 사용 가능한 싱글 톤 인스턴스 만 사용할 수 있습니다.
첫 번째 단계에서 헤더 파일 WintoastLib.h를 프로젝트로 가져옵니다. 라이브러리에서 Windows 버전이 지원되는지 확인해야합니다.
using namespace WinToastLib ;
....
if (!WinToast::isCompatible()) {
std::wcout << L" Error, your system in not supported! " << std::endl;
}앱 사용자 모델 ID를 구성하면 기존 도우미를 사용하여 수행 할 수 있습니다.
WinToast::instance ()->setAppName( L" WinToastExample " );
const auto aumi = WinToast::configureAUMI( L" mohabouje " , L" wintoast " , L" wintoastexample " , L" 20161006 " );
WinToast::instance ()->setAppUserModelId(aumi); 모든 종속성을 초기화하고 Wintoast가 시스템에서 성공적으로 초기화되었는지 확인하십시오.
if (!WinToast::instance()-> initialize ()) {
std::wcout << L" Error, could not initialize the lib! " << std::endl;
} 인터페이스 IWinToastHandler 서브 클래스하여 자신의 조치 처리기를 구현하고 템플릿을 사용자 정의하십시오.
WinToastHandlerExample* handler = new WinToastHandlerExample;
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText02);
templ.setImagePath( L" C:/example.png " );
templ.setTextField( L" title " , WinToastTemplate::FirstLine);
templ.setTextField( L" subtitle " , WinToastTemplate::SecondLine);마지막으로 결과를 표시하십시오.
const auto toast_id = WinToast::instance()-> showToast (templ, handler, &error);
if (toast_id < 0 ) {
std::wcout << L" Error: Could not launch your toast notification! " << std::endl;
}Shao Voon Wong은 Wintoast의 사용에 관한 훌륭한 기사를 썼습니다. 여기에서 찾을 수 있습니다.
패키지 관리자를 사용하는 경우 VCPKG 용 포트가 있습니다. 그렇지 않으면 가장 쉬운 방법은 소스 파일을 외부 종속성으로 복사하는 것입니다.
Windows는 토스트 알림의 기본 동작을 구성 할 수 있습니다. 이는 다른 옵션 탭을 수정하여 액세스 구성의 용이성 에서 수행 할 수 있습니다.
시스템 구성을 통해 알림이 사운드에 대한 시각적 알림을 켜는 것으로 (5 초에서 5 분) 알림을 얼마나 오래 표시하는지 정의하는 데 도움이됩니다.