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.
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>
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.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;
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ákRegisterTemplateAsync
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.
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.
A MainPage.xaml.cs fájlban adja hozzá a következő sort:
using Windows.UI.Popups;
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.
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ódustInitNotificationsAsync
.// *** 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.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
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.
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.
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.
A Visual Studióban hozzon létre egy új Visual C#-konzolalkalmazást:
- A menüben válassza azÚj>projektfájlja> lehetőséget.
- 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.
- Adja meg az alkalmazás nevét.
- 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.
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.
Nyissa meg a Program.cs fájlt, és adja hozzá a következő
using
utasítást:using Microsoft.Azure.NotificationHubs;
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.
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.A metódusban
Main()
adja hozzá a következő sorokat:SendTemplateNotificationAsync(); Console.ReadLine();
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: