Freigeben über


Senden einer lokalen Popupbenachrichtigung aus anderen Arten von entpackten Apps

Dieses Thema richtet sich an Sie, wenn Sie eine entpackte App entwickeln, die nicht C# oder C++ ist.

Das heißt, wenn Sie keine verpackte App entwickeln (siehe Erstellen eines neuen Projekts für eine verpackte WinUI 3-Desktop-App), und Sie entwickeln keine verpackte App mit externem Speicherort (siehe Grant package identity by packaging with external location), und Ihre App ist nicht C# oder C++.

Eine Popupbenachrichtigung ist eine Meldung, dass eine App den Benutzer erstellen und übermitteln kann, während der Benutzer ihre App derzeit nicht verwendet. Diese Schnellstartanleitung führt Sie durch die Schritte zum Erstellen, Bereitstellen und Anzeigen einer Windows-Popupbenachrichtigung. Diese Schnellstartanleitung verwendet lokale Benachrichtigungen, bei denen es sich um die einfachste zu implementierende Benachrichtigung handelt.

Wichtig

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

Schritt 1: Registrieren Ihrer App in der Registrierung

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

<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

Benachrichtigungen können jederzeit geklickt werden, auch wenn Ihre App nicht ausgeführt wird. Daher wird die Benachrichtigungsaktivierung über einen COM-Aktivator behandelt. Ihre COM-Klasse muss die INotificationActivationCallback Schnittstelle implementieren. Die GUID für Ihre COM-Klasse muss mit der GUID übereinstimmen, die Sie im Wert "CustomActivator" der Registrierung 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 ihr Popupbenachrichtigungsinhalt mithilfe einer adaptiven Sprache beschrieben, die eine hohe Flexibilität bei der Darstellung Ihrer Benachrichtigung ermöglicht. Weitere Informationen finden Sie in der Dokumentation zu Popupinhalten.

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 beim Senden der Benachrichtigung verwenden, 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

Der COM-Aktivator wird aktiviert, wenn auf die Benachrichtigung geklickt wird.

Weitere Informationen

AUMID-Einschränkungen

Die AUMID sollte höchstens 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 Systemanruf übergebene Datenbereich ist zu klein. (0x8007007A).