Senden plattformübergreifender Benachrichtigungen mit Azure Notification Hubs

Dieses Tutorial baut auf dem vorherigen Tutorial Senden von Benachrichtigungen an bestimmte Benutzer mit Azure Notification Hubs auf. Das vorherige Tutorial beschreibt, wie Sie Pushbenachrichtigungen an alle Geräte eines bestimmten authentifizierten Benutzers senden können. Der dort verwendete Ansatz erfordert mehrere Anforderungen zum Senden einer Benachrichtigung an jede unterstützte Clientplattform. Azure Notification Hubs unterstützt Vorlagen, mit denen Sie angeben können, wie ein bestimmtes Gerät Benachrichtigungen empfangen soll. Auf diese Weise können Sie den Versand plattformübergreifender Benachrichtigungen vereinfachen.

Dieser Artikel zeigt, wie Sie die Vorteile von Vorlagen nutzen können, um eine Benachrichtigung zu senden, die alle Plattformen berücksichtigt. In diesem Artikel wird eine einzelne Anforderung zum Senden einer plattformneutralen Benachrichtigung verwendet. Ausführlichere Informationen zu Vorlagen finden Sie unter Überblick über Notification Hubs.

Wichtig

Windows Phone-Projekte der Version 8.1 und früher werden in Visual Studio 2019 nicht unterstützt. Weitere Informationen finden Sie unter Visual Studio 2019 – Zielplattformen und Kompatibilität.

Hinweis

Mit Notification Hubs kann ein Gerät mehrere Vorlagen mit demselben Tag registrieren. In diesem Fall werden bei einer eingehenden Nachricht für das entsprechende Tag mehrere Benachrichtigungen an das Gerät übermittelt (eine pro Vorlage). Auf diese Weise können Sie dieselbe Nachricht in mehreren visuellen Darstellungen anzeigen, z.B. als Signal und als Popupbenachrichtigung in einer Windows Store-App.

Senden von plattformübergreifenden Benachrichtigungen mit Vorlagen

Hinweis

Der Microsoft-Pushbenachrichtigungsdienst (MPNS) ist veraltet und wird nicht mehr unterstützt.

In diesem Abschnitt wird der Beispielcode verwendet, den Sie im Tutorial Senden von Benachrichtigungen an bestimmte Benutzer mit Azure Notification Hubs erstellt haben. Sie können das vollständige Beispiel von GitHub herunterladen.

Um plattformübergreifende Benachrichtigungen mit Vorlagen zu senden, gehen Sie wie folgt vor:

  1. Erweitern Sie im Projektmappen-Explorer in Visual Studio den Ordner Controllers, und öffnen Sie dann die Datei RegisterController.cs.

  2. Suchen Sie in der Put-Methode nach dem Codeblock, mit dem eine neue Registrierung erstellt wird, und ersetzen Sie den Inhalt von switch durch den folgenden Code:

    switch (deviceUpdate.Platform)
    {
        case "mpns":
            var toastTemplate = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<wp:Notification xmlns:wp=\"WPNotification\">" +
                    "<wp:Toast>" +
                        "<wp:Text1>$(message)</wp:Text1>" +
                    "</wp:Toast> " +
                "</wp:Notification>";
            registration = new MpnsTemplateRegistrationDescription(deviceUpdate.Handle, toastTemplate);
            break;
        case "wns":
            toastTemplate = @"<toast><visual><binding template=""ToastText01""><text id=""1"">$(message)</text></binding></visual></toast>";
            registration = new WindowsTemplateRegistrationDescription(deviceUpdate.Handle, toastTemplate);
            break;
        case "apns":
            var alertTemplate = "{\"aps\":{\"alert\":\"$(message)\"}}";
            registration = new AppleTemplateRegistrationDescription(deviceUpdate.Handle, alertTemplate);
            break;
        case "fcm":
            var messageTemplate = "{\"data\":{\"message\":\"$(message)\"}}";
            registration = new FcmTemplateRegistrationDescription(deviceUpdate.Handle, messageTemplate);
            break;
        default:
            throw new HttpResponseException(HttpStatusCode.BadRequest);
    }
    

    Dieser Code ruft die plattformspezifische Methode zur Erstellung einer Vorlagenregistrierung anstelle der Systemregistrierung auf. Da Vorlagenregistrierungen von nativen Registrierungen abgeleitet sind, müssen Sie vorhandene Registrierungen nicht ändern.

  3. Öffnen Sie im Projektmappen-Explorer im Ordner Controllers die Datei NotificationsController.cs. Ersetzen Sie die Post-Methode durch den folgenden Code:

    public async Task<HttpResponseMessage> Post()
    {
        var user = HttpContext.Current.User.Identity.Name;
        var userTag = "username:" + user;
    
        var notification = new Dictionary<string, string> { { "message", "Hello, " + user } };
        await Notifications.Instance.Hub.SendTemplateNotificationAsync(notification, userTag);
    
        return Request.CreateResponse(HttpStatusCode.OK);
    }
    

    Dieser Code sendet an alle Plattformen gleichzeitig eine Benachrichtigung. Sie geben keine native Nutzlast an. Über Notification Hubs wird die richtige Nutzlast erstellt und an alle Geräte mit dem angegebenen Tagwert übermittelt, wie in den registrierten Vorlagen festgelegt.

  4. Veröffentlichen Sie das Web-API-Projekt erneut.

  5. Führen Sie die Client-App erneut aus, und vergewissern Sie sich, dass die Registrierung erfolgreich war.

  6. Stellen Sie die Client-App optional auf einem zweiten Gerät bereit, und führen Sie die App aus. Auf jedem Gerät wird eine Benachrichtigung angezeigt.

Nächste Schritte

Nach Abschluss dieses Tutorials finden Sie weitere Informationen zu Notification Hubs und Vorlagen in den folgenden Artikeln: