Share via


Platformoverschrijdende meldingen verzenden met Azure Notification Hubs

Deze zelfstudie bouwt voort op de vorige zelfstudie , Meldingen verzenden naar specifieke gebruikers met behulp van Azure Notification Hubs. In deze zelfstudie wordt beschreven hoe u pushmeldingen verzendt naar alle apparaten die zijn geregistreerd voor een specifieke geverifieerde gebruiker. Voor deze aanpak zijn meerdere aanvragen vereist om een melding te verzenden naar elk ondersteund clientplatform. Azure Notification Hubs ondersteunt sjablonen, waarmee u kunt opgeven hoe een specifiek apparaat meldingen wil ontvangen. Deze methode vereenvoudigt het verzenden van platformoverschrijdende meldingen.

In dit artikel wordt beschreven hoe u sjablonen kunt gebruiken om een melding te verzenden die is gericht op alle platforms. In dit artikel wordt één aanvraag gebruikt om een platformneutrale melding te verzenden. Zie Overzicht van Notification Hubs voor meer informatie over sjablonen.

Belangrijk

Windows Phone projecten 8.1 en eerder worden niet ondersteund in Visual Studio 2019. Zie Visual Studio 2019-platformdoel en -compatibiliteit voor meer informatie.

Notitie

Met Notification Hubs kan een apparaat meerdere sjablonen registreren met behulp van dezelfde tag. In dit geval wordt een inkomend bericht dat gericht is op de tag in meerdere meldingen bezorgd bij het apparaat, één voor elke sjabloon. Met dit proces kunt u hetzelfde bericht weergeven in meerdere visuele meldingen, zoals een badge en als een pop-upmelding in een Windows Store-app.

Platformoverschrijdende meldingen verzenden met behulp van sjablonen

Notitie

Microsoft Push Notification Service (MPNS) is afgeschaft en wordt niet meer ondersteund.

In deze sectie wordt gebruikgemaakt van de voorbeeldcode die u hebt gemaakt in de zelfstudie Meldingen verzenden naar specifieke gebruikers met behulp van Azure Notification Hubs . U kunt het volledige voorbeeld downloaden van GitHub.

Ga als volgt te werk om platformoverschrijdende meldingen te verzenden met behulp van sjablonen:

  1. Vouw in Visual Studio in Solution Explorer de map Controllers uit en open vervolgens het bestand RegisterController.cs.

  2. Zoek het codeblok in de Put methode waarmee een nieuwe registratie wordt gemaakt en vervang de switch inhoud door de volgende 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);
    }
    

    Met deze code wordt de platformspecifieke methode aangeroepen om een sjabloonregistratie te maken in plaats van een systeemeigen registratie. Omdat sjabloonregistraties zijn afgeleid van systeemeigen registraties, hoeft u bestaande registraties niet te wijzigen.

  3. Open in Solution Explorer in de map Controllers het bestand NotificationsController.cs. Vervang de Post-methode door de volgende 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);
    }
    

    Met deze code wordt op hetzelfde moment een melding naar alle platforms verzonden. U geeft geen systeemeigen nettolading op. Notification Hubs bouwt en levert de juiste nettolading aan elk apparaat met de opgegeven tagwaarde, zoals opgegeven in de geregistreerde sjablonen.

  4. Uw web-API-project opnieuw publiceren.

  5. Voer de client-app opnieuw uit om te controleren of de registratie is geslaagd.

  6. Implementeer desgewenst de client-app op een tweede apparaat en voer de app vervolgens uit. Op elk apparaat wordt een melding weergegeven.

Volgende stappen

Nu u deze zelfstudie hebt voltooid, vindt u meer informatie over Notification Hubs en sjablonen in deze artikelen: