Wintoast ist eine leicht in C ++ geschriebene Bibliothek, die eine vollständige Integration der modernen Toastbenachrichtigungen von Windows 8 , Windows 10 und Windows 11 darstellt.
Toast -Benachrichtigungen ermöglichen es Ihrer App, die Benutzer über relevante Informationen und zeitnahe Ereignisse zu informieren, die sie in Ihrer App sehen und Maßnahmen ergreifen sollten, z. B. eine neue Sofortnachricht, eine neue Freundschaftsanfrage, Breaking News oder ein Kalenderereignis.
Wintoast integriert alle Standardvorlagen, die in der Toasttemplatetype -Aufzählung verfügbar sind.
| Vorlage | Beschreibung | Beispiel |
|---|---|---|
ImageAndText01 | Ein großes Bild und eine einzelne Zeichenfolge, die über drei Textzeilen gewickelt ist. | ![]() |
ImageAndText02 | Ein großes Bild, eine Zeichenfolge von fettem Text in der ersten Zeile, eine Reihe regulärer Text, die in der zweiten und dritten Zeile gewickelt sind. | ![]() |
ImageAndText03 | Ein großes Bild, eine Zeichenfolge von fettem Text über die ersten beiden Zeilen, eine Zeichenfolge von regulärem Text in der dritten Zeile. | ![]() |
ImageAndText04 | Ein großes Bild, eine Fettdruckzeichenfolge in der ersten Zeile, eine reguläre Textfolge in der zweiten Zeile, eine Zeichenfolge von regulärem Text in der dritten Zeile. | ![]() |
Text01 | Ein einzelne Zeichenfolge über drei Textzeilen gewickelt. | ![]() |
Text02 | Eine Zeichenfolge von kühnem Text in der ersten Zeile, eine Zeichenfolge von regulären Text, die über die zweite und dritte Zeilen gewickelt sind. | ![]() |
Text03 | Eine Zeichenfolge von fettem Text über die ersten beiden Zeilen, eine Reihe regulärer Text in der dritten Zeile. | ![]() |
Text04 | Eine Zeichenfolge von Fettdruck in der ersten Zeile, eine reguläre Textfolge in der zweiten Zeile, eine Zeichenfolge von regulärem Text in der dritten Zeile. | ![]() |
Beispiel für eine ImageAndText02 -Vorlage:
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText02);
templ.setTextField( L" title " , WinToastTemplate::FirstLine);
templ.setTextField( L" subtitle " , WinToastTemplate::SecondLine);
templ.setImagePath( L" C:/example.png " ); HINWEIS: Der Benutzer kann den Standard -System -Sound verwenden oder einen Ton angeben, der abspielt, wenn eine Toastbenachrichtigung angezeigt wird. Das gleiche Verhalten für das Toast -Benachrichtigungsbild, standardmäßig versuchen Windows, das App -Symbol zu verwenden.*
Wintoast behandeln verschiedene Ereignisse:
Erstellen Sie Ihren benutzerdefinierten Handler, um mit den Benutzeraktionen zu interagieren, indem Sie die Schnittstelle IWinToastHandler unterklagen:
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 ;
};Die vollständige Dokumentation des Benachrichtigungsinhalts hier.
Um wichtige Benachrichtigungen, Alarme, Erinnerungen und eingehende Anrufbenachrichtigungen zu erstellen, verwenden Sie einfach eine normale App -Benachrichtigung mit einem ihm zugewiesenen Szenariowert. Das Szenario passt ein paar Verhaltensweisen an, um eine konsistente und einheitliche Benutzererfahrung zu schaffen. Es gibt vier mögliche Szenariowerte:
Legen Sie die Zeit fest, nach der eine Toastbenachrichtigung nicht mehr als aktuell oder gültig angesehen wird und nicht angezeigt werden sollte. Windows versucht, Toast -Benachrichtigungen sofort nach der Aufrufen des Shows zu erhöhen, sodass diese Eigenschaft selten verwendet wird.
Für Windows 8.x -App führt diese Eigenschaft auch dazu, dass die Toastbenachrichtigung aus dem Aktionszentrum entfernt wird, sobald die angegebenen Daten und die Zeit erreicht sind.
HINWEIS: Standard -Windows -Verhalten besteht darin, die Benachrichtigung automatisch nach dem Zeitpunkt in den Einstellungen der Windows -Zugriffszugriffsanschluss automatisch auszublenden. Wenn Sie die Benachrichtigung im Windows Action Center für längeren Zeitraum beibehalten müssen, müssen Sie die Methode von WinToastTemplate::setExpiration anrufen.
Microsoft Style -Richtlinien empfehlen, Profilbilder mit einem kreisförmigen Bild darzustellen, um eine konsistente Darstellung von Personen zwischen Apps und der Shell zu ermöglichen. Stellen Sie die Eigenschaft Hintcrop so ein, dass sie das Bild mit einer kreisförmigen Ernte rendern.
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);
Das Heldenbild ist ein großes Bild, das oben auf einer Toastbenachrichtigung erscheint. Das Heldenbild ist optional und kann dem Benutzer zusätzlichen Kontext bereitstellen.
Hinweis: Das Heldenbild wird unter Windows 8.1 und Windows Phone 8.1 nicht unterstützt.
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 " );
Das Heldenbild wird angegeben, indem die WinToastTemplate::setHeroImagePath -Methode aufgerufen wird. Der Bildpfad kann ein lokaler Dateipfad oder ein URI sein.
Der zweite Parameter der Methode WinToastTemplate::setHeroImagePath ist ein boolescher Wert, der angibt, ob das Bild in die Toastbenachrichtigung eingebaut werden soll.
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText01);
templ.setTextField( L" Feature image of the day " , WinToastTemplate::FirstLine);
templ.setHeroImagePath( L" C:/example.png " , true );
Sie können Ihre eigenen Aktionen hinzufügen. Mit dieser Tatsache können Sie auf andere Weise mit dem Benutzer interagieren:
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) 
Neu im Jubiläums -Update: Wenn Sie auf die Quelle Ihres Inhalts verweisen müssen, können Sie Attributionstext verwenden. Dieser Text wird immer unter allen Textelementen angezeigt, jedoch über den Inline -Bildern. Der Text verwendet eine etwas kleinere Größe als Standardtextelemente, um von regulären Textelementen zu unterscheiden.
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 " );
Die Zeit, die der Toast angezeigt wird. Dieses Attribut kann einen der folgenden Werte haben: - System : Standardsystemkonfiguration. - Kurz gesagt : Standardsystem Kurzzeitkonfiguration. - lang : Standard -System Langzeitkonfiguration.
Sie können die verschiedenen Verhaltensweisen des Sounds ändern: - Standard : Die Audiodatei spielt nur einmal. - Stumm : Schalten Sie den Klang aus. - Schleife : Spielt den angegebenen Ton während der Toast -Existenz in einer Schleife.
Wintoast ermöglicht die Änderung der Standard -Audio -Datei. Fügen Sie die angegebene Datei zu Ihren Projektressourcen hinzu ( müssen ms-appx: // oder ms-appdata: // path sein
WinToastTemplate::setAudioPathund definieren
Standardmäßig überprüft Wintoast, ob Ihre Systeme die Funktionen unterstützen und die nicht unterstützten ignorieren.
Es gibt mehrere Gründe, warum Wintoast scheitern kann. Deshalb benachrichtigt die Bibliothek den Anrufer über den Vernunft. Dies sind der Code für jeden Fehler:
| Wintoasterror | Fehlercode | Fehlermeldung |
|---|---|---|
NoError | 0x00 | Kein Fehler. Der Prozess wurde richtig ausgeführt |
NotInitialized | 0x01 | Die Bibliothek wurde nicht initialisiert |
SystemNotSupported | 0x02 | Das Betriebssystem unterstützt Wintoast nicht |
ShellLinkNotCreated | 0x03 | Die Bibliothek konnte keinen Shell -Link für die App erstellen |
InvalidAppUserModelID | 0x04 | Das Aumi ist kein gültiges |
InvalidParameters | 0x05 | Die zur Konfiguration der Bibliothek verwendeten Parameter sind normalerweise nicht gültig, da ein ungültiger AUMI- oder App -Name |
NotDisplayed | 0x06 | Der Toast wurde korrekt erstellt, aber Wintoast konnte den Toast nicht anzeigen |
UnknownError | 0x07 | Unbekannter Fehler |
Ein häufiges Beispiel für die Nutzung ist die Überprüfung der Initialisierung der Bibliothek oder die Anzeige einer Toastbenachrichtigung des möglichen Fehlercodes:
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;
}Für eine einfache Verwendung können Sie einfach die verfügbare Singleton -Instanz verwenden.
Im ersten Schritt importieren Sie die Header -Datei wintoastlib.h in Ihr Projekt. Sie sollten überprüfen, ob Ihre Windows -Version von der Bibliothek unterstützt wird.
using namespace WinToastLib ;
....
if (!WinToast::isCompatible()) {
std::wcout << L" Error, your system in not supported! " << std::endl;
}Konfigurieren Sie Ihre App -Benutzermodell -ID für App -Benutzer. Dies kann mit dem vorhandenen Helfer erfolgen:
WinToast::instance ()->setAppName( L" WinToastExample " );
const auto aumi = WinToast::configureAUMI( L" mohabouje " , L" wintoast " , L" wintoastexample " , L" 20161006 " );
WinToast::instance ()->setAppUserModelId(aumi); Initialisieren Sie alle Abhängigkeiten und überprüfen Sie, ob Wintoast in Ihrem System erfolgreich initialisiert wurde:
if (!WinToast::instance()-> initialize ()) {
std::wcout << L" Error, could not initialize the lib! " << std::endl;
} Implementieren Sie Ihren eigenen Aktionshandler, indem Sie die Schnittstelle IWinToastHandler unterkließen und Ihre Vorlage benennen:
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);Zeigen Sie schließlich die Ergebnisse:
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 schrieb einen ausgezeichneten Artikel über die Verwendung von Wintoast. Sie können es hier finden.
Wenn Sie einen Paketmanager verwenden, gibt es einen Port für VCPKG. Andernfalls ist es am einfachsten, die Quelldateien als externe Abhängigkeiten zu kopieren.
Windows ermöglicht die Konfiguration des Standardverhaltens einer Toastbenachrichtigung. Dies kann in der einfachen Zugriffskonfiguration erfolgen, indem die Registerkarte "Andere Optionen" geändert wird.
Die Systemkonfiguration hilft Ihnen, zu definieren, wie lange Benachrichtigungen für (5 Sekunden bis 5 Minuten) angezeigt werden sollen, um visuelle Benachrichtigungen für Klang einzuschalten.