Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Služba MPNS (Microsoft Push Notification Service) je zastaralá a už se nepodporuje.
Přehled
V tomto kurzu se dozvíte, jak pomocí služby Azure Notification Hubs vysílat oznámení o nejnovějších novinkách. Tento kurz se zabývá aplikacemi pro Windows Store nebo Windows Phone 8.1 (ne Silverlight). Pokud cílíte na Windows Phone 8.1 Silverlight, podívejte se na oznámení push pro konkrétní zařízení s Windows Phone pomocí Azure Notification Hubs.
V tomto kurzu se dozvíte, jak pomocí služby Azure Notification Hubs odesílat nabízená oznámení konkrétním zařízením s Windows, na kterých běží aplikace pro Univerzální platformu Windows (UPW). Po dokončení kurzu se můžete zaregistrovat do kategorií novinek, které vás zajímají. Budete dostávat oznámení pouze pro tyto kategorie.
Pokud chcete povolit scénáře vysílání, při vytváření registrace v centru oznámení zahrňte jednu nebo více značek . Když se oznámení posílají na značku, obdrží oznámení všechna zařízení zaregistrovaná pro značku. Další informace o značkách najdete v tématu Směrování a výrazy značek.
Poznámka:
Projekty Windows Store a Windows Phone verze 8.1 a starší nejsou v sadě Visual Studio 2019 podporované. Další informace najdete v tématu Cílení a kompatibilita platforem sady Visual Studio 2019.
V tomto kurzu provedete následující úlohy:
- Přidání výběru kategorií do mobilní aplikace
- Registrace k oznámením
- Odesílání označených oznámení
- Spuštění aplikace a generování oznámení
Požadavky
Přidání výběru kategorií do aplikace
Prvním krokem je přidání prvků uživatelského rozhraní na stávající hlavní stránku, aby uživatelé mohli vybrat kategorie, které se mají zaregistrovat. Vybrané kategorie se ukládají na zařízení. Když se aplikace spustí, vytvoří v centru oznámení registraci zařízení s vybranými kategoriemi jako značkami.
Otevřete soubor projektu MainPage.xaml a zkopírujte následující kód v elementu
Grid
:<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>
V Průzkumníku řešení klikněte pravým tlačítkem na projekt a vyberte Přidat>třídu. V Přidat novou položku pojmenujte třídu Oznámení a vyberte Přidat. V případě potřeby přidejte
public
modifikátor do definice třídy.Do nového souboru přidejte následující
using
příkazy:using Windows.Networking.PushNotifications; using Microsoft.WindowsAzure.Messaging; using Windows.Storage; using System.Threading.Tasks;
Do nové
Notifications
třídy zkopírujte následující kód: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); }
Tato třída používá místní úložiště k ukládání kategorií zpráv, které musí toto zařízení přijímat. Místo volání
RegisterNativeAsync
metody zavolejteRegisterTemplateAsync
k registraci kategorií pomocí registrace šablony.Pokud chcete zaregistrovat více než jednu šablonu, zadejte název šablony, například simpleWNSTemplateExample. Šablony pojmenujete, abyste je mohli aktualizovat nebo odstranit. Můžete zaregistrovat více než jednu šablonu, abyste měli jednu pro upozornění a jednu pro dlaždice.
Poznámka:
Pomocí Notification Hubs může zařízení zaregistrovat více šablon pomocí stejné značky. V tomto případě příchozí zpráva, která cílí na značku, má za následek doručení více oznámení do zařízení, jedno pro každou šablonu. Tento proces umožňuje zobrazit stejnou zprávu ve více vizuálních oznámeních, například jako odznáček i toustové oznámení v aplikaci pro Windows Store.
Další informace najdete v tématu Šablony.
Do souboru projektu App.xaml.cs přidejte do
App
třídy následující vlastnost:public Notifications notifications = new Notifications("<hub name>", "<connection string with listen access>");
Tuto vlastnost použijete k vytvoření instance a přístupu k této
Notifications
instanci.V kódu nahraďte zástupné znaky
<hub name>
a<connection string with listen access>
názvem vašeho centra oznámení a připojovacím řetězcem pro DefaultListenSharedAccessSignature, který jste získali dříve.Poznámka:
Vzhledem k tomu, že přihlašovací údaje distribuované s klientskou aplikací nejsou obvykle zabezpečené, distribuujte pomocí klientské aplikace jenom klíč pro přístup k naslouchání . Při přístupu k naslouchání se vaše aplikace může registrovat k oznámením, ale stávající registrace se nedají upravit a oznámení se nedají odeslat. Úplný přístupový klíč se používá v zabezpečené back-end službě pro odesílání oznámení a změnu stávajících registrací.
Do souboru MainPage.xaml.cs přidejte následující řádek:
using Windows.UI.Popups;
Do souboru MainPage.xaml.cs přidejte následující metodu:
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(); }
Tato metoda vytvoří seznam kategorií a použije
Notifications
třídu k uložení seznamu v místním úložišti. Také zaregistruje odpovídající značky ve vašem oznamovacím centru. Po změně kategorií se registrace znovu vytvoří s novými kategoriemi.
Vaše aplikace teď může v zařízení ukládat sadu kategorií v místním úložišti. Aplikace se zaregistruje v centru oznámení pokaždé, když uživatelé změní výběr kategorie.
Registrace k oznámením
V této části se zaregistrujete v centru oznámení při spuštění pomocí kategorií, které jste uložili v místním úložišti.
Poznámka:
Vzhledem k tomu, že identifikátor URI kanálu přiřazený službou oznámení systému Windows (WNS) se může kdykoli změnit, měli byste se k oznámením často registrovat, abyste se vyhnuli selháním oznámení. Tento příklad se registruje k oznámení při každém spuštění aplikace. U aplikací, které často spouštíte, například více než jednou denně, můžete registraci přeskočit, aby se zachovala šířka pásma, pokud uplynula méně než jeden den od předchozí registrace.
Pokud chcete použít třídu
notifications
k přihlášení k odběru na základě kategorií, otevřete soubor App.xaml.cs a potom aktualizujte metoduInitNotificationsAsync
.// *** 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();
Tento proces zajistí, že při spuštění aplikace načte kategorie z místního úložiště. Potom požádá o registraci těchto kategorií. Metodu
InitNotificationsAsync
jste vytvořili jako součást kurzu Odesílání oznámení do aplikací pro univerzální platformu Windows pomocí služby Azure Notification Hubs .Do souboru projektu MainPage.xaml.cs přidejte do
OnNavigatedTo
metody následující kód: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; }
Tento kód aktualizuje hlavní stránku na základě stavu dříve uložených kategorií.
Aplikace je teď dokončená. Může ukládat sadu kategorií v místním úložišti zařízení. Když uživatelé změní výběr kategorie, uložené kategorie se použijí k registraci v centru oznámení. V další části definujete back-end, který může posílat oznámení kategorií této aplikaci.
Spuštění aplikace pro UPW
Ve Visual Studio stiskněte klávesu F5 pro zkompilování a spuštění aplikace. Uživatelské rozhraní aplikace poskytuje sadu přepínačů umožňujících zvolit kategorie, k odběru kterých se chcete přihlásit.
Povolte jeden nebo více přepínačů kategorií a pak vyberte Přihlásit se k odběru.
Aplikace převede vybrané kategorie na značky a požádá o novou registraci zařízení pro vybrané značky z centra oznámení. Aplikace zobrazí registrované kategorie v dialogovém okně.
Vytvoření konzolové aplikace pro odesílání označených oznámení
V této části odešlete nejnovější zprávy jako oznámení o označené šabloně z konzolové aplikace .NET.
V sadě Visual Studio vytvořte novou konzolovou aplikaci Visual C#:
- V nabídce vyberte Soubor>nový>projekt.
- V části Vytvořit nový projekt vyberte konzolová aplikace (.NET Framework) pro jazyk C# v seznamu šablon a vyberte Další.
- Zadejte název aplikace.
- V části Řešení zvolte Přidat do řešení a výběrem možnosti Vytvořit vytvořte projekt.
Vyberte Nástroje>Správce balíčků NuGet>Konzola Správce balíčků a pak v okně konzoly spusťte následující příkaz:
Install-Package Microsoft.Azure.NotificationHubs
Tato akce přidá odkaz na sadu Azure Notification Hubs SDK pomocí balíčku Microsoft.Azure.NotificationHubs .
Otevřete soubor Program.cs a přidejte následující
using
příkaz:using Microsoft.Azure.NotificationHubs;
Program
Do třídy přidejte následující metodu nebo ji nahraďte, pokud již existuje: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); } }
Tento kód odešle oznámení šablony pro každou ze šesti značek v poli řetězců znaků. Použití značek zajišťuje, aby zařízení dostávala oznámení jenom pro registrované kategorie.
V předchozím kódu nahraďte zástupné symboly
<hub name>
a<connection string with full access>
názvem vašeho centra oznámení a připojovacím řetězcem DefaultFullSharedAccessSignature z nástěnky vašeho centra oznámení.Main()
Do metody přidejte následující řádky:SendTemplateNotificationAsync(); Console.ReadLine();
Sestavte konzolovou aplikaci.
Spuštění konzolové aplikace pro odesílání označených oznámení
Spusťte aplikaci vytvořenou v předchozí části. Oznámení pro vybrané kategorie se zobrazují jako oznámení typu toast.
Další kroky
V tomto článku jste se dozvěděli, jak vysílat nejnovější zprávy podle kategorie. Back-endová aplikace odesílá oznámení se štítky zařízením, která jsou zaregistrována k přijímání oznámení pro danou značku. Pokud se chcete dozvědět, jak odesílat oznámení konkrétním uživatelům bez ohledu na zařízení, které používají, přejděte k následujícímu kurzu: