Zelf studie: meldingen verzenden naar specifieke apparaten met Universeel Windows-platform-toepassingenTutorial: Send notifications to specific devices running Universal Windows Platform applications

OverzichtOverview

In deze zelf studie leert u hoe u Azure Notification Hubs kunt gebruiken om de uittellingen van nieuws berichten te verzenden.This tutorial shows you how to use Azure Notification Hubs to broadcast breaking news notifications. In deze zelf studie worden de toepassingen Windows Store of Windows Phone 8,1 (niet-Silverlight) besproken.This tutorial covers Windows Store or Windows Phone 8.1 (non-Silverlight) applications. Als u Windows Phone 8,1 Silverlight hebt, raadpleegt u Push meldingen naar specifieke Windows Phone apparaten met behulp van Azure notification hubs.If you're targeting Windows Phone 8.1 Silverlight, see Push notifications to specific Windows Phone devices by using Azure Notification Hubs.

In deze zelf studie leert u hoe u Azure Notification Hubs kunt gebruiken om meldingen te pushen naar specifieke Windows-apparaten met een Universeel Windows-platform-toepassing (UWP).In this tutorial, you learn how to use Azure Notification Hubs to push notifications to specific Windows devices running a Universal Windows Platform (UWP) application. Nadat u de zelf studie hebt voltooid, kunt u zich registreren voor de laatste nieuws categorieën waarin u bent geïnteresseerd.After you complete the tutorial, you can register for the breaking news categories that you're interested in. U ontvangt alleen push meldingen voor deze categorieën.You'll receive push notifications for those categories only.

Als u uitzend scenario's wilt inschakelen, neemt u een of meer Tags op wanneer u een registratie maakt in de notification hub.To enable broadcast scenarios, include one or more tags when you create a registration in the notification hub. Wanneer meldingen naar een tag worden verzonden, ontvangen alle apparaten die zijn geregistreerd voor het label de melding.When notifications are sent to a tag, all devices that are registered for the tag receive the notification. Zie route ring en label expressiesvoor meer informatie over tags.For more information about tags, see Routing and tag expressions.

Notitie

Windows Store en Windows Phone project versies 8,1 en lager worden niet ondersteund in Visual Studio 2019.Windows Store and Windows Phone project versions 8.1 and earlier are not supported in Visual Studio 2019. Zie Visual Studio 2019-platform doelen en-compatibiliteitvoor meer informatie.For more information, see Visual Studio 2019 Platform Targeting and Compatibility.

In deze zelf studie voert u de volgende taken uit:In this tutorial, you do the following tasks:

  • Categorieselectie toevoegen aan de mobiele appAdd category selection to the mobile app
  • Registreren voor meldingenRegister for notifications
  • Getagde meldingen verzendenSend tagged notifications
  • De app uitvoeren en meldingen genererenRun the app and generate notifications

VereistenPrerequisites

Voltooi de zelf studie: verzend meldingen naar universeel Windows-platform-apps met behulp van Azure notification hubs voordat u met deze zelf studie begint.Complete the Tutorial: Send notifications to Universal Windows Platform apps by using Azure Notification Hubs before starting this tutorial.

Categorieselectie toevoegen aan de appAdd category selection to the app

De eerste stap is het toevoegen van UI-elementen aan de bestaande hoofdpagina, zodat gebruikers categorieën kunnen selecteren waarvoor ze zich willen registreren.The first step is to add UI elements to your existing main page so that users can select categories to register. De geselecteerde categorieën worden op het apparaat opgeslagen.The selected categories are stored on the device. Wanneer de app wordt gestart, maakt deze een apparaatregistratie in uw notification hub, met de geselecteerde categorieën als Tags.When the app starts, it creates a device registration in your notification hub, with the selected categories as tags.

  1. Open het project bestand MainPage. xaml en kopieer de volgende code in het element Grid:Open the MainPage.xaml project file, and then copy the following code in the Grid element:

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"  TextWrapping="Wrap" Text="Breaking News" FontSize="42" VerticalAlignment="Top" HorizontalAlignment="Center"/>
        <ToggleSwitch Header="World" Name="WorldToggle" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center"/>
        <ToggleSwitch Header="Politics" Name="PoliticsToggle" Grid.Row="2" Grid.Column="0" HorizontalAlignment="Center"/>
        <ToggleSwitch Header="Business" Name="BusinessToggle" Grid.Row="3" Grid.Column="0" HorizontalAlignment="Center"/>
        <ToggleSwitch Header="Technology" Name="TechnologyToggle" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center"/>
        <ToggleSwitch Header="Science" Name="ScienceToggle" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Center"/>
        <ToggleSwitch Header="Sports" Name="SportsToggle" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Center"/>
        <Button Name="SubscribeButton" Content="Subscribe" HorizontalAlignment="Center" Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" Click="SubscribeButton_Click"/>
    </Grid>
    
  2. Klik in Solution Explorermet de rechter muisknop op het project en selecteer > -klasse toevoegen.In Solution Explorer, right-click the project, select Add > Class. Geef in Nieuw item toevoegende klasse- meldingeneen naam en selecteer toevoegen.In Add New Item, name the class Notifications, and select Add. Voeg, indien nodig, de public-modificator toe aan de klassedefinitie.If necessary, add the public modifier to the class definition.

  3. Voeg de volgende using-instructies toe aan het nieuwe bestand:Add the following using statements to the new file:

    using Windows.Networking.PushNotifications;
    using Microsoft.WindowsAzure.Messaging;
    using Windows.Storage;
    using System.Threading.Tasks;
    
  4. Kopieer de volgende code naar de nieuwe klasse Notifications:Copy the following code to the new Notifications class:

    private NotificationHub hub;
    
    public Notifications(string hubName, string listenConnectionString)
    {
        hub = new NotificationHub(hubName, listenConnectionString);
    }
    
    public async Task<Registration> StoreCategoriesAndSubscribe(IEnumerable<string> categories)
    {
        ApplicationData.Current.LocalSettings.Values["categories"] = string.Join(",", categories);
        return await SubscribeToCategories(categories);
    }
    
    public IEnumerable<string> RetrieveCategories()
    {
        var categories = (string) ApplicationData.Current.LocalSettings.Values["categories"];
        return categories != null ? categories.Split(','): new string[0];
    }
    
    public async Task<Registration> SubscribeToCategories(IEnumerable<string> categories = null)
    {
        var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
    
        if (categories == null)
        {
            categories = RetrieveCategories();
        }
    
        // Using a template registration to support notifications across platforms.
        // Any template notifications that contain messageParam and a corresponding tag expression
        // will be delivered for this registration.
    
        const string templateBodyWNS = "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">$(messageParam)</text></binding></visual></toast>";
    
        return await hub.RegisterTemplateAsync(channel.Uri, templateBodyWNS, "simpleWNSTemplateExample",
                categories);
    }
    

    Deze klasse gebruik de lokale opslag voor het opslaan van de nieuwscategorieën die dit apparaat moet ontvangen.This class uses the local storage to store the categories of news that this device must receive. In plaats van de methode RegisterNativeAsync aan te roepen, verstuurt u een aanroep naar RegisterTemplateAsync om u te registreren voor de categorieën met behulp van een registratiesjabloon.Instead of calling the RegisterNativeAsync method, call RegisterTemplateAsync to register for the categories by using a template registration.

    Als u meer dan één sjabloon wilt registreren, geeft u een sjabloon naam op, bijvoorbeeld simpleWNSTemplateExample.If you want to register more than one template, provide a template name, for example, simpleWNSTemplateExample. U geef de sjablonen een naam zodat u ze kunt bijwerken of verwijderen.You name the templates so that you can update or delete them. U kunt meer dan één sjabloon registreren voor pop-upmeldingen en één voor tegels.You might register more than one template to have one for toast notifications and one for tiles.

    Notitie

    Met Notification Hubs kan een apparaat meerdere sjablonen registreren met behulp van dezelfde tag.With Notification Hubs, a device can register multiple templates by using the same tag. In dit geval wordt een inkomend bericht dat de tag bedoelt, in meerdere meldingen bezorgd bij het apparaat, één voor elke sjabloon.In this case, an incoming message that targets the tag results in multiple notifications being delivered to the device, one for each template. Met dit proces kunt u hetzelfde bericht weer geven in meerdere visuele meldingen, zoals een badge en als een pop-upmelding in een Windows Store-app.This process enables you to display the same message in multiple visual notifications, such as both as a badge and as a toast notification in a Windows Store app.

    Zie Sjablonen voor meer informatie.For more information, see Templates.

  5. Voeg in het project bestand app.xaml.cs de volgende eigenschap toe aan de klasse App:In the App.xaml.cs project file, add the following property to the App class:

    public Notifications notifications = new Notifications("<hub name>", "<connection string with listen access>");
    

    U gebruikt deze eigenschap om een Notifications-exemplaar te maken en te gebruiken.You use this property to create and access a Notifications instance.

    Vervang de tijdelijke aanduidingen <hub name> en <connection string with listen access> in de code door de naam van de meldingshub en de verbindingsreeks voor DefaultFullSharedAccessSignature die u eerder hebt opgevraagd.In the code, replace the <hub name> and <connection string with listen access> placeholders with your notification hub name and the connection string for DefaultListenSharedAccessSignature, which you obtained earlier.

    Notitie

    Omdat referenties die worden gedistribueerd met een client-app meestal niet beveiligd zijn, moet u met uw client-app alleen de sleutel voor listen-toegang distribueren.Because credentials that are distributed with a client app are not usually secure, distribute only the key for listen access with your client app. Uw app kan dan worden geregistreerd voor meldingen, maar bestaande registraties kunnen niet worden gewijzigd, en er kunnen geen meldingen worden verzonden.With listen access, your app can register for notifications, but existing registrations cannot be modified, and notifications cannot be sent. De sleutel voor volledige toegang wordt gebruikt in een beveiligde back-endservice voor het verzenden van meldingen en het wijzigen van bestaande registraties.The full access key is used in a secured back-end service for sending notifications and changing existing registrations.

  6. Voeg in het bestand MainPage.xaml.cs de volgende regel toe:In the MainPage.xaml.cs file, add the following line:

    using Windows.UI.Popups;
    
  7. Voeg in het bestand MainPage.xaml.cs de volgende methode toe:In the MainPage.xaml.cs file, add the following method:

    private async void SubscribeButton_Click(object sender, RoutedEventArgs e)
    {
        var categories = new HashSet<string>();
        if (WorldToggle.IsOn) categories.Add("World");
        if (PoliticsToggle.IsOn) categories.Add("Politics");
        if (BusinessToggle.IsOn) categories.Add("Business");
        if (TechnologyToggle.IsOn) categories.Add("Technology");
        if (ScienceToggle.IsOn) categories.Add("Science");
        if (SportsToggle.IsOn) categories.Add("Sports");
    
        var result = await ((App)Application.Current).notifications.StoreCategoriesAndSubscribe(categories);
    
        var dialog = new MessageDialog("Subscribed to: " + string.Join(",", categories) + " on registration Id: " + result.RegistrationId);
        dialog.Commands.Add(new UICommand("OK"));
        await dialog.ShowAsync();
    }
    

    Met deze methode maakt u een lijst met categorieën en gebruikt u de klasse Notifications om de lijst op te slaan in de lokale opslag.This method creates a list of categories and uses the Notifications class to store the list in the local storage. Daarnaast worden de bijbehorende tags geregistreerd bij uw meldingshub.It also registers the corresponding tags with your notification hub. Wanneer de categorieën worden gewijzigd, wordt de registratie opnieuw gemaakt met de nieuwe categorieën.When the categories change, the registration is re-created with the new categories.

Uw app kan nu een set categorieën opslaan in de lokale opslag op het apparaat.Your app can now store a set of categories in local storage on the device. De app wordt geregistreerd bij de meldingshub wanneer gebruikers de categorieselectie wijzigen.The app registers with the notification hub whenever users change the category selection.

Registreren voor meldingenRegister for notifications

In dit gedeelte registreert u zich tijdens het opstarten bij de meldingshub met behulp van de categorieën die u hebt opgeslagen in de lokale opslag.In this section, you register with the notification hub on startup by using the categories that you've stored in local storage.

Notitie

Omdat de kanaal-URI die wordt toegewezen door WNS (Windows Notification Service) op elk moment kan veranderen, moet u zich regelmatig registreren voor meldingen om fouten te voorkomen.Because the channel URI that's assigned by the Windows Notification Service (WNS) can change at any time, you should register for notifications frequently to avoid notification failures. In dit voorbeeld wordt er elke keer dat de app wordt gestart een registratie voor meldingen vastgelegd.This example registers for notification every time that the app starts. Voor apps die u regel matig uitvoert, kunt u meer dan één keer per dag de registratie overs Laan als er minder dan een dag is verstreken sinds de vorige registratie.For apps that you run frequently, say, more than once a day, you can probably skip registration to preserve bandwidth if less than a day has passed since the previous registration.

  1. Als u de klasse notifications wilt gebruiken om u te abonneren op basis van categorieën, opent u het app.xaml.cs -bestand en werkt u vervolgens de InitNotificationsAsync-methode bij.To use the notifications class to subscribe based on categories, open the App.xaml.cs file, and then update the InitNotificationsAsync method.

    // *** Remove or comment out these lines ***
    //var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
    //var hub = new NotificationHub("your hub name", "your listen connection string");
    //var result = await hub.RegisterNativeAsync(channel.Uri);
    
    var result = await notifications.SubscribeToCategories();
    

    Dit proces zorgt ervoor dat bij het starten van de app de categorieën worden opgehaald uit de lokale opslag.This process ensures that when the app starts, it retrieves the categories from local storage. Vervolgens wordt de registratie van deze categorieën opgevraagd.It then requests registration of these categories. U hebt de methode InitNotificationsAsync gemaakt als onderdeel van het verzenden van meldingen naar universeel Windows-platform-apps met behulp van Azure notification hubs zelf studie.You created the InitNotificationsAsync method as part of the Send notifications to Universal Windows Platform apps by using Azure Notification Hubs tutorial.

  2. In het project bestand MainPage.xaml.cs voegt u de volgende code toe aan de OnNavigatedTo-methode:In the MainPage.xaml.cs project file, add the following code to the OnNavigatedTo method:

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        var categories = ((App)Application.Current).notifications.RetrieveCategories();
    
        if (categories.Contains("World")) WorldToggle.IsOn = true;
        if (categories.Contains("Politics")) PoliticsToggle.IsOn = true;
        if (categories.Contains("Business")) BusinessToggle.IsOn = true;
        if (categories.Contains("Technology")) TechnologyToggle.IsOn = true;
        if (categories.Contains("Science")) ScienceToggle.IsOn = true;
        if (categories.Contains("Sports")) SportsToggle.IsOn = true;
    }
    

    Met deze code wordt de hoofdpagina bijgewerkt op basis van de status van eerder opgeslagen categorieën.This code updates the main page, based on the status of previously saved categories.

De app is nu klaarThe app is now complete. Hiermee kan een set categorieën worden opgeslagen in de lokale opslag van het apparaat.It can store a set of categories in the device local storage. Wanneer gebruikers de categorie selectie wijzigen, worden de opgeslagen categorieën gebruikt voor registratie bij de notification hub.When users change the category selection, the saved categories are used to register with the notification hub. In het volgende gedeelte definieert u een back-end die categoriemeldingen naar deze app kan verzenden.In the next section, you define a back end that can send category notifications to this app.

De UWP-app uitvoerenRun the UWP app

  1. Selecteer in Visual Studio F5 om de app te compileren en te starten.In Visual Studio, select F5 to compile and start the app. De UI van de app biedt een reeks schakelopties waarmee u de categorieën kunt kiezen waarop u zich wilt abonneren.The app UI provides a set of toggles that lets you choose the categories to subscribe to.

    De app Breaking News

  2. Schakel een of meer categorie in of uit en selecteer vervolgens Abonneren.Enable one or more category toggles, and then select Subscribe.

    De app zet de geselecteerde categorieën om in tags en vraagt bij Notification Hubs een nieuwe apparaatregistratie aan voor de geselecteerde tags.The app converts the selected categories into tags and requests a new device registration for the selected tags from the notification hub. In de app worden de geregistreerde categorieën in een dialoog venster weer gegeven.The app displays the registered categories in a dialog box.

    Schakelopties voor categorieën en de knop Subscribe

Een console-app maken om gelabelde meldingen te verzendenCreate a console app to send tagged notifications

In deze sectie verzendt u het laatste nieuws als gelabelde sjabloonmeldingen vanuit een .NET-console-app.In this section, you send breaking news as tagged template notifications from a .NET console app.

  1. Maak in Visual Studio een nieuwe Visual C#-consoletoepassing:In Visual Studio, create a new Visual C# console application:

    1. Selecteer in het menu bestand > Nieuw > -project.On the menu, select File > New > Project.
    2. Selecteer in een nieuw project makende optie console-app (.NET Framework) voor C# in de lijst met sjablonen en selecteer volgende.In Create a new project, select Console App (.NET Framework) for C# in the list of templates, and select Next.
    3. Voer een naam in voor de app.Enter a name for the app.
    4. Voor oplossingkiest u toevoegen aan oplossingen selecteert u maken om het project te maken.For Solution, choose Add to solution, and select Create to create the project.
  2. Selecteer extra > NuGet package manager > Package Manager-console en voer vervolgens in het console venster de volgende opdracht uit:Select Tools > NuGet Package Manager > Package Manager Console and then, in the console window, run the following command:

    Install-Package Microsoft.Azure.NotificationHubs
    

    Met deze actie wordt een verwijzing toegevoegd aan de Azure Notification Hubs SDK met behulp van het pakket micro soft. Azure. notification hubs .This action adds a reference to the Azure Notification Hubs SDK by using the Microsoft.Azure.NotificationHubs package.

  3. Open het Program.cs -bestand en voeg de volgende using-instructie toe:Open the Program.cs file, and add the following using statement:

    using Microsoft.Azure.NotificationHubs;
    
  4. Voeg in de klasse Program de volgende methode toe of vervang de methode als deze al bestaat:In the Program class, add the following method, or replace it if it already exists:

    private static async void SendTemplateNotificationAsync()
    {
        // Define the notification hub.
        NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString("<connection string with full access>", "<hub name>");
    
        // Create an array of breaking news categories.
        var categories = new string[] { "World", "Politics", "Business", "Technology", "Science", "Sports"};
    
        // Send the notification as a template notification. All template registrations that contain
        // "messageParam" and the proper tags will receive the notifications.
        // This includes APNS, GCM, WNS, and MPNS template registrations.
    
        Dictionary<string, string> templateParams = new Dictionary<string, string>();
    
        foreach (var category in categories)
        {
            templateParams["messageParam"] = "Breaking " + category + " News!";
            await hub.SendTemplateNotificationAsync(templateParams, category);
        }
    }
    

    Met deze code wordt een sjabloonmelding verzonden voor elk van de zes labels in de tekenreeksmatrix.This code sends a template notification for each of the six tags in the string array. Het gebruik van labels zorgt ervoor dat apparaten meldingen ontvangen voor de geregistreerde categorieën.The use of tags ensures that devices receive notifications only for the registered categories.

  5. Vervang in de voorgaande code de tijdelijke aanduidingen <hub name> en <connection string with full access> door de naam van de meldingenhub en de verbindingsreeks voor DefaultFullSharedAccessSignature uit het dashboard van de meldingenhub.In the preceding code, replace the <hub name> and <connection string with full access> placeholders with your notification hub name and the connection string for DefaultFullSharedAccessSignature from the dashboard of your notification hub.

  6. Voeg in de methode Main() de volgende regels toe:In the Main() method, add the following lines:

     SendTemplateNotificationAsync();
     Console.ReadLine();
    
  7. Bouw de console-app.Build the console app.

De console-app uitvoeren om gelabelde meldingen te verzendenRun the console app to send tagged notifications

Voer de app uit die u in de vorige sectie hebt gemaakt.Run the app created in the previous section. Meldingen voor de geselecteerde categorieën worden weergegeven als pop-upmeldingen.Notifications for the selected categories appear as toast notifications.

Volgende stappenNext steps

In dit artikel hebt u geleerd hoe u belangrijk nieuws per categorie kunt broadcasten.In this article, you learned how to broadcast breaking news by category. De back-endtoepassing pusht gelabelde meldingen naar apparaten die zijn geregistreerd voor het ontvangen van meldingen voor die tag.The back-end application pushes tagged notifications to devices that have registered to receive notifications for that tag. Ga door naar de volgende zelf studie voor meer informatie over het pushen van meldingen naar specifieke gebruikers, onafhankelijk van het apparaat dat ze gebruiken:To learn how to push notifications to specific users independent of what device they use, advance to the following tutorial: