Oktatóanyag: Honosított leküldéses értesítések küldése Windows-alkalmazásoknak az Azure Notification Hubs használatával
Áttekintés
Megjegyzés
A Microsoft Leküldéses értesítési szolgáltatás (MPNS) elavult, és már nem támogatott.
Ez az oktatóanyag azt mutatja be, hogy hogyan lehet honosított leküldéses értesítéseket küldeni a Notification Hubs szolgáltatásban regisztrált mobileszközökre. Ebben az oktatóanyagban az Oktatóanyag: Értesítések küldése adott eszközökre (Univerzális Windows-platform) oktatóanyag során létrehozott alkalmazásokat fogja frissíteni az alábbi forgatókönyvek támogatásához:
- A Windows Áruházbeli alkalmazás lehetővé teszi az ügyféleszközök számára nyelvek megadását, valamint a feliratkozást a különböző frisshír-kategóriákra.
- A háttéralkalmazás értesítéseket küld az Azure Notification Hubs címke - és sablonfunkcióinak használatával.
Az oktatóanyag befejezését követően a mobilalkalmazás lehetővé teszi a felhasználót érdeklő kategóriákra való regisztrálást, valamint azt, hogy a felhasználó, milyen nyelven szeretné fogadni az értesítéseket. A háttéralkalmazás nyelv és eszköz alapján honosított értesítéseket küld.
Eben az oktatóanyagban az alábbiakkal fog megismerkedni:
- A Windows-alkalmazás frissítése a területi beállítási adatok támogatására
- A háttéralkalmazás frissítése honosított értesítések küldéséhez
- Az alkalmazás tesztelése
Előfeltételek
Végezze el az Oktatóanyag: Értesítések küldése adott eszközökre (Univerzális Windows-platform) című oktatóanyagot.
Az Oktatóanyag: Értesítések küldése adott eszközökre (Univerzális Windows-platform) oktatóanyag során létrehozott egy alkalmazást, amely címkék használatával iratkozott fel a hírek különböző kategóriáira vonatkozó értesítésekre. Ebben az oktatóanyagban a Notification Hubs sablon funkcióját használva fog honosított értesítéseket küldeni a friss hírekkel kapcsolatban.
A sablonokkal lényegében azt a formátumot adhatja meg, amelyben egy adott eszköznek fogadnia kell az értesítéseket. A sablon meghatározza a hasznos adatok pontos formátumát a háttéralkalmazás által küldött üzenet részét képező tulajdonságokra hivatkozva. Ebben az oktatóanyagban a háttéralkalmazás egy területi beállításoktól független üzenetet küld el, amely minden támogatott nyelvet tartalmaz:
{
"News_English": "...",
"News_French": "...",
"News_Mandarin": "..."
}
Az eszközök egy sablonnal regisztrálnak, amely a megfelelő tulajdonságra hivatkozik. A bejelentési üzeneteket angol nyelven fogadni kívánó Windows Áruházbeli alkalmazás például az alábbi sablonra regisztrál a megfelelő címkékkel:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">$(News_English)</text>
</binding>
</visual>
</toast>
A sablonokról további információt a Leküldéses sablonok című témakörben talál.
A Windows-alkalmazás frissítése a területi beállítási adatok támogatására
Nyissa meg az Oktatóanyag: Értesítések küldése adott eszközökre (Univerzális Windows-platform) című oktatóanyaghoz létrehozott Visual Studio-megoldást.
Frissítse a megoldás fájlját
MainPage.xaml
úgy, hogy tartalmazzon egy területi kombinált listát:<Grid Margin="120, 58, 120, 80" Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions> <RowDefinition /> <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"/> <ComboBox Name="Locale" HorizontalAlignment="Left" VerticalAlignment="Center" Width="200" Grid.Row="1" Grid.Column="0"> <x:String>English</x:String> <x:String>French</x:String> <x:String>Mandarin</x:String> </ComboBox> <ToggleSwitch Header="World" Name="WorldToggle" Grid.Row="2" Grid.Column="0"/> <ToggleSwitch Header="Politics" Name="PoliticsToggle" Grid.Row="3" Grid.Column="0"/> <ToggleSwitch Header="Business" Name="BusinessToggle" Grid.Row="4" Grid.Column="0"/> <ToggleSwitch Header="Technology" Name="TechnologyToggle" Grid.Row="2" Grid.Column="1"/> <ToggleSwitch Header="Science" Name="ScienceToggle" Grid.Row="3" Grid.Column="1"/> <ToggleSwitch Header="Sports" Name="SportsToggle" Grid.Row="4" Grid.Column="1"/> <Button Content="Subscribe" HorizontalAlignment="Center" Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="2" Click="SubscribeButton_Click" /> </Grid>
A osztályban
Notifications
adjon hozzá egy területi paramétert a ésSubscribeToCategories
aStoreCategoriesAndSubscribe
metódushoz.public async Task<Registration> StoreCategoriesAndSubscribe(string locale, IEnumerable<string> categories) { ApplicationData.Current.LocalSettings.Values["categories"] = string.Join(",", categories); ApplicationData.Current.LocalSettings.Values["locale"] = locale; return await SubscribeToCategories(locale, categories); } public async Task<Registration> SubscribeToCategories(string locale, IEnumerable<string> categories = null) { var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); if (categories == null) { categories = RetrieveCategories(); } // Using a template registration. This makes supporting notifications across other platforms much easier. // Using the localized tags based on locale selected. string templateBodyWNS = String.Format("<toast><visual><binding template=\"ToastText01\"><text id=\"1\">$(News_{0})</text></binding></visual></toast>", locale); return await hub.RegisterTemplateAsync(channel.Uri, templateBodyWNS, "localizedWNSTemplateExample", categories); }
A metódus meghívása helyett hívja meg a
RegisterNativeAsync
következőtRegisterTemplateAsync
: . Egy adott értesítésformátumra kell regisztrálnia, amelyben a sablon a területi beállítástól függ. A sablont el is kell neveznie (például: „localizedWNSTemplateExample”), mert érdemes egynél több sablont regisztrálni (például egyet a bejelentési értesítésekhez és egyet a csempékhez). A sablonok elnevezése a frissítésükhöz és törlésükhöz is szükséges.Ha egy eszköz több, ugyanazon címkével rendelkező sablont is regisztrál, az adott címkét célzó bejövő üzenetekről több értesítés is érkezik az adott eszközre (egy-egy mindegyik sablon esetén). Ez a működés akkor hasznos, ha egyetlen logikai üzenetnek több látható értesítést kell eredményeznie, például egy jelvény megjelenítését és egy bejelentést a Windows Áruházbeli alkalmazásban.
Adja hozzá az alábbi metódust a tárolt területi beállítás lekéréséhez:
public string RetrieveLocale() { var locale = (string) ApplicationData.Current.LocalSettings.Values["locale"]; return locale != null ? locale : "English"; }
A fájlban frissítse a
MainPage.xaml.cs
gombot kattintson a kezelőre a Területi beállítás kombinált lista aktuális értékének lekéréséhez, és adja meg azNotifications
osztály hívásának:private async void SubscribeButton_Click(object sender, RoutedEventArgs e) { var locale = (string)Locale.SelectedItem; 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(locale, categories); var dialog = new MessageDialog("Locale: " + locale + " Subscribed to: " + string.Join(",", categories) + " on registration Id: " + result.RegistrationId); dialog.Commands.Add(new UICommand("OK")); await dialog.ShowAsync(); }
Végül a fájlban frissítse a
App.xaml.cs
metódust,InitNotificationsAsync
hogy lekérje a területi beállításokat, és használja a feliratkozáskor:private async void InitNotificationsAsync() { var result = await notifications.SubscribeToCategories(notifications.RetrieveLocale()); // Displays the registration ID so you know it was successful if (result.RegistrationId != null) { var dialog = new MessageDialog("Registration successful: " + result.RegistrationId); dialog.Commands.Add(new UICommand("OK")); await dialog.ShowAsync(); } }
Az UWP-alkalmazás futtatása
Futtassa a Univerzális Windows-platform alkalmazást. Várjon, amíg megjelenik a Registration successful (Sikeres regisztráció) üzenet.
Jelölje ki a kategóriákat és a területi beállítást, majd kattintson a Subscribe (Feliratkozás) lehetőségre. 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.
Egy megerősítő üzenet jelenik meg a feliratkozásokkal kapcsolatban.
A konzolalkalmazás frissítése honosított értesítések küldéséhez
Sablonértesítések küldésekor csak egy tulajdonságkészletet kell megadnia. Ebben az oktatóanyagban a háttéralkalmazás az aktuális hírek honosított verzióját tartalmazó tulajdonságkészletet küldi el, például:
{
"News_English": "World News in English!",
"News_French": "World News in French!",
"News_Mandarin": "World News in Mandarin!"
}
Ebben a szakaszban frissíteni fogja a megoldás konzolalkalmazás projektjét. Módosítsa a SendTemplateNotificationAsync
metódust a korábban létrehozott konzolalkalmazásban az alábbi kóddal:
Fontos
A kódban adja meg az értesítési központhoz teljes hozzáférést biztosító nevet és kapcsolati sztringet.
private static async void SendTemplateNotificationAsync()
{
// Define the notification hub.
NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(
"<connection string with full access>", "<hub name>");
// Sending the notification as a template notification. All template registrations that contain
// "messageParam" or "News_<local selected>" and the proper tags will receive the notifications.
// This includes APNS, FCM, WNS, and MPNS template registrations.
Dictionary<string, string> templateParams = new Dictionary<string, string>();
// Create an array of breaking news categories.
var categories = new string[] { "World", "Politics", "Business", "Technology", "Science", "Sports"};
var locales = new string[] { "English", "French", "Mandarin" };
foreach (var category in categories)
{
templateParams["messageParam"] = "Breaking " + category + " News!";
// Sending localized News for each tag too...
foreach( var locale in locales)
{
string key = "News_" + locale;
// Your real localized news content would go here.
templateParams[key] = "Breaking " + category + " News in " + locale + "!";
}
await hub.SendTemplateNotificationAsync(templateParams, category);
}
}
Ez az egyszerű hívás a platformtól függetlenül minden eszköznek kézbesíti a honosított híreket, mivel a Notification Hub a megfelelő natív hasznos adatokat hozza létre és kézbesíti az adott címkére feliratkozott összes eszköznek.
A konzolalkalmazás futtatása honosított értesítés küldéséhez
Futtassa a konzolalkalmazást , hogy értesítéseket küldjön az egyes kategóriákról és az egyes támogatott nyelvekről. Ellenőrizze, hogy csak azon kategóriákra vonatkozóan kap-e értesítéseket, amelyekre feliratkozott, és hogy az üzenetek megfelelnek-e a kiválasztott területi beállításnak.
Következő lépések
Ebben az oktatóanyagban elsajátította, hogy hogyan küldhet honosított értesítéseket olyan adott eszközökre, amelyek a regisztrációjukhoz társított címkékkel rendelkeznek. Ha szeretné megtudni, hogy hogyan küldhet értesítéseket adott felhasználóknak, akik egynél több eszközt is használhatnak, lépjen tovább a következő oktatóanyagra: