Kurz: Odesílání lokalizovaných nabízených oznámení do aplikací pro Windows pomocí Azure Notification Hubs
Přehled
Poznámka
Služba MPNS (Microsoft Push Notification Service) je zastaralá a už se nepodporuje.
V tomto kurzu se naučíte zasílat lokalizovaná nabízená oznámení mobilním zařízením registrovaným ve službě Notification Hubs. V tomto kurzu budete aktualizovat aplikace vytvořené v kurzu o zasílání oznámení určitým zařízením (Univerzální platforma Windows), aby podporovaly následující scénáře:
- Aplikace pro Windows Store umožňuje klientským zařízením zadat jazyk a přihlásit se k odběru různých kategorií hlavních zpráv.
- Back-endová aplikace vysílá oznámení pomocí funkcí značky a šablony služby Azure Notification Hubs.
Po dokončení kurzu si budete moct v mobilní aplikaci zaregistrovat kategorie, které vás zajímají, a také budete moct zadat jazyk, ve kterém chcete zasílat oznámení. Back-endová aplikace posílá oznámení lokalizovaná pro daný jazyk a zařízení.
V tomto kurzu se naučíte:
- Aktualizovat aplikace pro Windows, aby podporovaly informace o národním prostředí
- Aktualizovat back-endovou aplikaci, aby posílala lokalizovaná oznámení
- Otestování aplikace
Požadavky
Dokončete kurz o zasílání oznámení určitým zařízením (Univerzální platforma Windows).
V kurzu o zasílání oznámení určitým zařízením (Univerzální platforma Windows) jste vytvořili aplikaci, která k přihlášení odběru oznámení pro různé kategorie novinek používala značky. V tomto kurzu použijete funkci šablony služby Notification Hubs, která umožňuje jednoduše doručovat lokalizovaná oznámení nejdůležitějších zpráv.
Šablony nabízejí způsob, jak na vyšší úrovni zadat formát, ve kterém má určité zařízení dostávat oznámení. Šablona přesně určuje formát datové části tím, že odkazuje na vlastnosti, které jsou součástí zprávy odeslané back-endovou aplikací. V tomto kurzu back-endová aplikace pošle zprávu, která je určená pro všechna národní prostředí a obsahuje všechny podporované jazyky:
{
"News_English": "...",
"News_French": "...",
"News_Mandarin": "..."
}
Zařízení si zaregistrují šablonu, která odkazuje na správnou vlastnost. Například aplikace pro Windows Store, která má dostávat zprávy s informacemi v angličtině, si zaregistruje následující šablonu s odpovídajícími značkami:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">$(News_English)</text>
</binding>
</visual>
</toast>
Další informace o šablonách najdete v tématu Nabízené šablony.
Aktualizovat aplikace pro Windows, aby podporovaly informace o národním prostředí
Otevřete řešení sady Visual Studio, které jste vytvořili v kurzu o zasílání oznámení určitým zařízením (Univerzální platforma Windows).
Aktualizujte soubor řešení
MainPage.xaml
tak, aby zahrnoval pole se seznamem národního prostředí:<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>
Notifications
Ve třídě přidejte parametr národního prostředí doStoreCategoriesAndSubscribe
metod aSubscribeToCategories
.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); }
Místo volání
RegisterNativeAsync
metody zavolejteRegisterTemplateAsync
. Zaregistrujte určitý formát oznámení, ve kterém šablona závisí na národním prostředí. Zadejte také název šablony (localizedWNSTemplateExample), protože možná budete chtít zaregistrovat více šablon (například jednu pro informační oznámení a druhou pro dlaždice). Pojmenování je také důležité, abyste mohli šablony aktualizovat nebo odstranit.Pokud si zařízení zaregistruje více šablon se stejnou značkou, doručí se do zařízení příchozí zpráva v několika oznámeních (jedno pro každou šablonu) určených pro výslednou značku. Toto chování je užitečné, pokud se má stejná logická zpráva zobrazit v několika oznámeních, třeba jako oznámení a informační zpráva v aplikaci pro Windows Store.
Pokud chcete načíst uložené národní prostředí, přidejte následující metodu:
public string RetrieveLocale() { var locale = (string) ApplicationData.Current.LocalSettings.Values["locale"]; return locale != null ? locale : "English"; }
MainPage.xaml.cs
V souboru aktualizujte obslužnou rutinu kliknutí na tlačítko, aby se načetla aktuální hodnota pole se seznamem Národní prostředí, a zadejte ji doNotifications
volání třídy :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(); }
Nakonec v
App.xaml.cs
souboru aktualizujte metoduInitNotificationsAsync
tak, aby načetla národní prostředí, a použijte ji při přihlášení k odběru: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(); } }
Spuštění aplikace pro UPW
Spusťte aplikaci Univerzální platforma Windows. Počkejte, až se zobrazí zpráva o úspěšné registraci.
Vyberte kategorie a národní prostředí a klikněte na Přihlásit k odběru. Aplikace převede vybrané kategorie na značky a u vybraných značek požádá centrum oznámení o registraci nových zařízení.
Zobrazí se potvrzovací zpráva o odběrech.
Aktualizace konzolové aplikace tak, aby odesílala lokalizovaná oznámení
Při posílání šablonových oznámení stačí zadat sadu vlastností. V tomto kurzu odešle back-endová aplikace sadu vlastností, které obsahují lokalizovanou verzi aktuálních zpráv, jako například:
{
"News_English": "World News in English!",
"News_French": "World News in French!",
"News_Mandarin": "World News in Mandarin!"
}
V této části v řešení aktualizujete projekt konzolové aplikace. Změňte metodu SendTemplateNotificationAsync
konzolové aplikace vytvořené dříve přidáním následujícího kódu:
Důležité
Zadejte v kódu název a připojovací řetězec pro plný přístup k centru oznámení.
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);
}
}
Toto jednoduché volání doručí lokalizované zprávy do všech zařízení bez ohledu na platformu, protože centrum oznámení sestavuje a doručuje správnou nativní datovou část všem zařízením přihlášeným k odběru konkrétní značky.
Spuštění konzolové aplikace pro odeslání lokalizovaného oznámení
Spusťte konzolovou aplikaci a odesílejte oznámení pro každou kategorii a v každém podporovaném jazyce. Ověřte, že dostáváte oznámení jenom o odebíraných kategoriích a že zpráva odpovídá vybranému národnímu prostředí.
Další kroky
V tomto kurzu jste se naučili zasílat lokalizovaná nabízená oznámení určitým zařízením, která mají zaregistrované určité značky. Pokud se chcete naučit posílat nabízená oznámení určitým uživatelům, kteří mohou používat několik zařízení, pokračujte následujícím kurzem: