Oktatóanyag: Értesítések küldése adott, Univerzális Windows-platform alkalmazásokat futtató eszközökre

Megjegyzés

A Microsoft Leküldéses értesítési szolgáltatás (MPNS) elavult, és már nem támogatott.

Áttekintés

Ez az oktatóanyag bemutatja, hogyan használhatja az Azure Notification Hubsot friss hírek küldéséhez. Ez az oktatóanyag a Windows Áruházbeli vagy Windows Phone-telefon 8.1 -alkalmazásokra (nem Silverlight) vonatkozik. Ha Windows Phone-telefon 8.1 Silverlightot céloz meg, tekintse meg a Leküldéses értesítések küldése adott Windows Phone-telefon eszközökre az Azure Notification Hubs használatával című témakört.

Ebből az oktatóanyagból megtudhatja, hogyan használhatja az Azure Notification Hubsot leküldéses értesítések leküldésére egy Univerzális Windows-platform (UWP) alkalmazást futtató Windows-eszközökre. Az oktatóanyag elvégzése után regisztrálhat az önt érdeklő legfrissebb hírek kategóriáira. Csak ezekhez a kategóriákhoz fog leküldéses értesítéseket kapni.

A közvetítési forgatókönyvek engedélyezéséhez adjon meg egy vagy több címkét , amikor regisztrációt hoz létre az értesítési központban. Ha az értesítéseket egy címkére küldi a rendszer, a címkére regisztrált összes eszköz megkapja az értesítést. További információ a címkékről: Útválasztás és címkekifejezések.

Megjegyzés

A Visual Studio 2019 nem támogatja a Windows Áruházat és Windows Phone-telefon 8.1-s és korábbi verziókat. További információ: Visual Studio 2019 Platform targeting and Compatibility (A Visual Studio 2019 platformcélzása és kompatibilitása).

Ebben az oktatóanyagban a következő feladatokat hajtja végre:

  • Választott kategória hozzáadása a mobilalkalmazáshoz
  • Regisztráció értesítésekre
  • Címkézett értesítések küldése
  • Az alkalmazás futtatása és értesítések létrehozása

Előfeltételek

Ezen oktatóanyag megkezdése előtt végezze el az Oktatóanyag: Értesítések küldése az Univerzális Windows-platformon alapuló alkalmazásoknak az Azure Notification Hubs használatával című oktatóanyagot.

Kategóriaválasztó hozzáadása az alkalmazáshoz

Az első lépésben hozzá kell adni a felhasználói felületi elemeket a meglévő főoldalhoz, amely lehetővé teszi a felhasználó számára a regisztrálni kívánt kategóriák kiválasztását. A kiválasztott kategóriákat az eszköz tárolja. Amikor az alkalmazás elindul, létrehoz egy eszközregisztrációt az értesítési központban, a kiválasztott kategóriákat címkékként.

  1. Nyissa meg a MainPage.xaml projektfájlt, majd másolja a következő kódot az Grid elembe:

    <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. A Megoldáskezelő kattintson a jobb gombbal a projektre, és válassza azOsztályhozzáadása> lehetőséget. Az Új elem hozzáadása területen adja az osztálynak az Értesítések nevet, majd válassza a Hozzáadás lehetőséget. Ha szükséges, adja hozzá a public módosítót az osztálydefinícióhoz.

  3. Adja hozzá a következő using utasításokat az új fájlhoz:

    using Windows.Networking.PushNotifications;
    using Microsoft.WindowsAzure.Messaging;
    using Windows.Storage;
    using System.Threading.Tasks;
    
  4. Másolja a következő kódot az új Notifications osztályba:

    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);
    }
    

    Ez az osztály a helyi tárolóban tárolja a hírkategóriákat, amelyeket ennek az eszköznek meg kell kapnia. A metódus meghívása helyett hívja meg a RegisterNativeAsync kategóriák RegisterTemplateAsync regisztrációját sablonregisztrációval.

    Ha több sablont szeretne regisztrálni, adjon meg egy sablonnevet, például : simpleWNSTemplateExample. A sablonok elnevezése lehetővé teszi a frissítésüket vagy törlésüket. Több sablont is regisztrálhat, hogy a bejelentési értesítésekhez egyet, a csempékhez pedig egyet.

    Megjegyzés

    A Notification Hubs használatával az eszközök több sablont is regisztrálhatnak ugyanazzal a címkével. Ebben az esetben egy, a címkét megcélzó bejövő üzenet több értesítést küld az eszközre, mindegyik sablonhoz egyet. Ez a folyamat lehetővé teszi, hogy ugyanazt az üzenetet több vizuális értesítésben is megjelenítse, például jelvényként és bejelentési értesítésként egy Windows Áruházbeli alkalmazásban.

    További információért lásd a Sablonok szakaszt.

  5. Az App.xaml.cs projektfájlban adja hozzá a következő tulajdonságot a App osztályhoz:

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

    Ezzel a tulajdonság használatával hozhat létre és érhet el egy példányt Notifications .

    A <hub name> és a <connection string with listen access> helyőrzőt cserélje le a kódban az értesítési központ nevére és a DefaultListenSharedAccessSignature korábban beszerzett kapcsolati sztringjére.

    Megjegyzés

    Mivel az ügyfélalkalmazással terjesztett hitelesítő adatok általában nem biztonságosak, csak a figyelési hozzáférés kulcsát terjessze az ügyfélalkalmazással. A figyelési hozzáférés lehetővé teszi, hogy az alkalmazás regisztráljon értesítésekre, a meglévő regisztrációkat azonban nem lehet módosítani, és értesítéseket sem lehet küldeni. A teljes körű hozzáférési kulcsot egy biztonságos háttérszolgáltatásban használja a rendszer értesítések kiküldésére és a meglévő regisztrációk módosítására.

  6. A MainPage.xaml.cs fájlban adja hozzá a következő sort:

    using Windows.UI.Popups;
    
  7. A MainPage.xaml.cs fájlban adja hozzá a következő metódust:

    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();
    }
    

    Ez a metódus létrehozza a kategóriák listáját, és a Notifications osztály használatával tárolja a listát a helyi tárolóban. Ezenkívül a megfelelő címkéket is regisztrálja az értesítési központban. A kategóriák megváltozásakor a regisztráció újra létrejön az új kategóriákkal.

Az alkalmazás most már képes egy kategóriakészlet tárolására az eszköz helyi tárterületén. Az alkalmazás regisztrálja az értesítési központban, ha egy felhasználó módosítja a kiválasztott kategóriáit.

Regisztráció értesítésekre

Ebben a szakaszban elvégzi az értesítési központban való regisztrációt az indításkor, a helyi tárterületen tárolt kategóriák használatával.

Megjegyzés

Mivel a Windows Notification Service (WNS) által hozzárendelt csatorna URI bármikor megváltozhat, gyakran regisztráljon az értesítésekre, hogy elkerülhesse az értesítési hibákat. Ebben a példában a rendszer az alkalmazás minden egyes indításakor regisztrál az értesítésekre. Ha például naponta többször futtatja a gyakran futtatott alkalmazásokat, akkor valószínűleg kihagyhatja a regisztrációt a sávszélesség megőrzése érdekében, ha az előző regisztráció óta kevesebb mint egy nap telt el.

  1. Ha a notifications osztályt kategóriák alapján szeretné előfizetni, nyissa meg az App.xaml.cs fájlt, majd frissítse a metódust InitNotificationsAsync .

    // *** 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();
    

    Ez a folyamat biztosítja, hogy amikor az alkalmazás elindul, lekéri a kategóriákat a helyi tárolóból. Ezután kéri ezeknek a kategóriáknak a regisztrációját. A metódust az InitNotificationsAsyncÉrtesítések küldése Univerzális Windows-platform alkalmazásokba az Azure Notification Hubs használatával című oktatóanyag részeként hozta létre.

  2. A MainPage.xaml.cs projektfájlban adja hozzá a következő kódot a OnNavigatedTo metódushoz:

    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;
    }
    

    Ez a kód frissíti a főoldalt, a korábban mentett kategóriák állapota alapján.

Az alkalmazás ezzel elkészült. Több kategóriát is tárolhat az eszköz helyi tárolójában. Amikor a felhasználók módosítják a kategóriaválasztást, a mentett kategóriákkal regisztrálhat az értesítési központban. A következő szakaszban meghatároz egy háttérrendszert, amely kategóriaértesítéseket küldhet ennek az alkalmazásnak.

Az UWP-alkalmazás futtatása

  1. Az alkalmazás lefordításához és indításához nyomja le az F5 billentyűt a Visual Studióban. Az alkalmazás felhasználói felületén váltógombok segítségével választhatja ki, hogy mely kategóriákra szeretne feliratkozni.

    Legfrissebb hírek alkalmazás

  2. Engedélyezzen egy vagy több kategóriaváltót, majd válassza a Feliratkozás lehetőséget.

    Az alkalmazás címkékké alakítja át a kiválasztott kategóriákat, és új eszközregisztrációt kezdeményez az értesítési központban a kiválasztott címkékre vonatkozóan. Az alkalmazás megjeleníti a regisztrált kategóriákat egy párbeszédpanelen.

    Kategória-váltógombok és Előfizetés gomb

Konzolalkalmazás létrehozása címkézett értesítések küldéséhez

Ebben a szakaszban a legfrissebb híreket címkézett sablonértesítésekként fogja elküldeni egy .NET-konzolalkalmazásból.

  1. A Visual Studióban hozzon létre egy új Visual C#-konzolalkalmazást:

    1. A menüben válassza azÚj>projektfájlja> lehetőséget.
    2. Az Új projekt létrehozása területen válassza a C# konzolalkalmazás (.NET-keretrendszer) elemét a sablonok listájában, majd válassza a Tovább gombot.
    3. Adja meg az alkalmazás nevét.
    4. A Megoldás területen válassza a Hozzáadás a megoldáshoz lehetőséget, majd válassza a Létrehozás lehetőséget a projekt létrehozásához.
  2. Válassza az Eszközök>NuGet-csomagkezelő csomagkezelő>konzol lehetőséget, majd a konzolablakban futtassa a következő parancsot:

    Install-Package Microsoft.Azure.NotificationHubs
    

    Ez a művelet hozzáad egy hivatkozást az Azure Notification Hubs SDK-hoz a Microsoft.Azure.NotificationHubs csomag használatával.

  3. Nyissa meg a Program.cs fájlt, és adja hozzá a következő using utasítást:

    using Microsoft.Azure.NotificationHubs;
    
  4. A Program osztályban adja hozzá a következő metódust, vagy ha már létezik, cserélje le azt a következőre:

    private static async void SendTemplateNotificationAsync()
    {
        // Define the notification hub.
        NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString("<connection string with full access>", "<hub name>");
    
        // Apple requires the apns-push-type header for all requests
        var headers = new Dictionary<string, string> {{"apns-push-type", "alert"}};
    
        // 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/FCM, 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);
        }
    }
    

    Ez a kód sablonértesítéseket küld a sztringtömb mind a hat címkéjének. A címkék használatával biztosítható, hogy az eszközök csak a regisztrált kategóriákhoz tartozó értesítéseket fogadják.

  5. A <hub name> és a <connection string with full access> helyőrzőket cserélje le a fenti kódban az értesítési központ nevére és a DefaultFullSharedAccessSignature az értesítési központ irányítópultjáról származó kapcsolati sztringjére.

  6. A metódusban Main() adja hozzá a következő sorokat:

     SendTemplateNotificationAsync();
     Console.ReadLine();
    
  7. Hozza létre a konzolalkalmazást.

A konzolalkalmazás futtatása címkézett értesítések küldéséhez

Futtassa az előző szakaszban létrehozott alkalmazást. A kijelölt kategóriák értesítései bejelentési értesítésként jelennek meg.

Következő lépések

Ebben a cikkben megismerhette a friss hírek kategóriák szerinti küldését. A háttéralkalmazás leküldi a címkézett értesítéseket azokra az eszközökre, amelyek regisztráltak az adott címkére vonatkozó értesítések fogadásához. Az alábbi oktatóanyagból megtudhatja, hogyan küldhet le értesítéseket adott felhasználóknak a használt eszköztől függetlenül: