Freigeben über


Senden einer lokalen Popupbenachrichtigung von anderen Typen von nicht gepackten Apps

Dieses Thema ist für Sie geeignet, wenn Sie eine nicht gepackte App entwickeln, die nicht C# oder C++ ist.

Das heißt, wenn Sie keine gepackte App entwickeln (siehe Erstellen eines neuen Projekts für eine gepackte WinUI 3-Desktop-App), und Sie keine gepackte App mit externem Speicherort entwickeln (siehe Erteilen der Paketidentität durch Packen mit externem Speicherort), und Ihre App ist nicht C# oder C++.

Eine Popupbenachrichtigung ist eine Nachricht, die eine App erstellen und an den Benutzer übermitteln kann, während der Benutzer Ihre App derzeit nicht verwendet. In dieser Schnellstartanleitung werden die Schritte zum Erstellen, Übermitteln und Anzeigen einer Windows-Popupbenachrichtigung erläutert. In dieser Schnellstartanleitung werden lokale Benachrichtigungen verwendet, die die einfachste zu implementierende Benachrichtigung sind.

Wichtig

Wenn Sie eine C#-App schreiben, lesen Sie die C#-Dokumentation. Wenn Sie eine C++-App schreiben, lesen Sie die Dokumentation zu C++-UWP oder C++-WRL .

Schritt 1: Registrieren Ihrer App in der Registrierung

Sie müssen zunächst die Informationen Ihrer App in der Registrierung registrieren, einschließlich einer eindeutigen AUMID, die Ihre App identifiziert, den Anzeigenamen Ihrer App, Ihr Symbol und die GUID eines COM-Aktivators.

<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>

Schritt 2: Einrichten des COM-Aktivators

Auf Benachrichtigungen kann jederzeit geklickt werden, auch wenn Ihre App nicht ausgeführt wird. Daher erfolgt die Aktivierung von Benachrichtigungen über einen COM-Aktivator. Ihre COM-Klasse muss die INotificationActivationCallback -Schnittstelle implementieren. Die GUID für Ihre COM-Klasse muss mit der GUID übereinstimmen, die Sie im CustomActivator-Registrierungswert angegeben haben.

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();
        }
    }
};

Schritt 3: Senden eines Popups

In Windows 10 wird der Inhalt der Popupbenachrichtigung in einer adaptiven Sprache beschrieben, die eine große Flexibilität beim Aussehen Ihrer Benachrichtigung ermöglicht. Weitere Informationen finden Sie in der Popupinhaltsdokumentation .

Wir beginnen mit einer einfachen textbasierten Benachrichtigung. Erstellen Sie den Benachrichtigungsinhalt (mithilfe der Benachrichtigungsbibliothek), und zeigen Sie die Benachrichtigung an!

Wichtig

Sie müssen Ihre AUMID von früher verwenden, wenn Sie die Benachrichtigung senden, damit die Benachrichtigung von Ihrer App angezeigt wird.

Einfache Textbenachrichtigung
// 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);

Schritt 4: Behandeln der Aktivierung

Ihr COM-Aktivator wird aktiviert, wenn auf Ihre Benachrichtigung geklickt wird.

Weitere Informationen

AUMID-Einschränkungen

Die AUMID sollte maximal 129 Zeichen lang sein. Wenn die AUMID mehr als 129 Zeichen lang ist, funktionieren geplante Popupbenachrichtigungen nicht. Sie erhalten beim Hinzufügen einer geplanten Benachrichtigung die folgende Ausnahme: Der an einen Systemaufruf übergebene Datenbereich ist zu klein. (0x8007007A).