Freigeben über


Senden einer lokalen app Benachrichtigung aus anderen Arten von nicht verpackten Apps

Dieses Thema richtet sich an Sie, wenn Sie ein entpacktes app Paket entwickeln, das nicht C# oder C++ ist.

Das heißt, wenn Sie kein Paket app entwickeln (siehe Erstellen eines neuen Projekts für einen verpackten WinUI 3-Desktop app), und Sie kein app Paket mit externem Speicherort entwickeln (siehe Packetidentität durch Verpacken mit externem Speicherort gewähren), und Ihr app nicht C# oder C++ ist.

Eine app Benachrichtigung ist eine Meldung, die ein app erstellen und dem Benutzer übermitteln kann, während der Benutzer die app gerade nicht verwendet. Diese Schnellstartanleitung führt Sie durch die Schritte zum Erstellen, Bereitstellen und Anzeigen einer Windows-Benachrichtigung app . In dieser Schnellstartanleitung werden lokale Benachrichtigungen verwendet, bei denen es sich um die einfachste zu implementierende Benachrichtigung handelt.

Note

Der Begriff "toast notification" wird durch "app notification" ersetzt. Diese Begriffe beziehen sich beide auf dieselbe Funktion von Windows, aber im Laufe der Zeit werden wir die Verwendung von "toast Benachrichtigung" in der Dokumentation einstellen.

Important

Wenn Sie eine C# app-Datei schreiben, lesen Sie die C#-Dokumentation. Wenn Sie ein C++ app-Dokument schreiben, lesen Sie die C++-UWP - oder C++-WRL-Dokumentation .

Schritt 1: Melden Sie Ihr app im Register an

Zuerst müssen Sie Ihre appInformationen in der Registrierung registrieren, einschließlich einer eindeutigen AUMID, die Ihren appappAnzeigenamen, 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 angeklickt werden, auch wenn 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 einer app Benachrichtigung

In Windows 10 wird Der app Benachrichtigungsinhalt mithilfe einer adaptiven Sprache beschrieben, die eine hohe Flexibilität bei der Darstellung Ihrer Benachrichtigung ermöglicht. Weitere Informationen finden Sie in der App Dokumentation zu Benachrichtigungsinhalten .

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

Important

Sie müssen Ihre AUMID von früher beim Senden der Benachrichtigung verwenden, damit die Benachrichtigung von Ihrem 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: Umgang mit der Aktivierung

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

More details

AUMID restrictions

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