Skicka plattformsoberoende meddelanden med Azure Notification Hubs
Den här självstudien bygger på den föregående självstudien Skicka meddelanden till specifika användare med hjälp av Azure Notification Hubs. Den här självstudien beskriver hur du skickar push-meddelanden till alla enheter som är registrerade på en specifik autentiserad användare. Den metoden krävde flera begäranden för att skicka ett meddelande till varje klientplattform som stöds. Azure Notification Hubs stöder mallar där du kan ange hur en specifik enhet vill ta emot meddelanden. Den här metoden förenklar sändning av plattformsoberoende meddelanden.
Den här artikeln visar hur du drar nytta av mallar för att skicka ett meddelande som riktar sig till alla plattformar. Den här artikeln använder en enskild begäran för att skicka ett plattformsneutralt meddelande. Mer detaljerad information om mallar finns i Översikt över Notification Hubs.
Viktigt
Windows Phone projekt 8.1 och tidigare stöds inte i Visual Studio 2019. Mer information finns i Visual Studio 2019-plattformens mål och kompatibilitet.
Anteckning
Med Notification Hubs kan en enhet registrera flera mallar med hjälp av samma tagg. I det här fallet resulterar ett inkommande meddelande som riktar sig mot taggen i att flera meddelanden levereras till enheten, ett för varje mall. Med den här processen kan du visa samma meddelande i flera visuella meddelanden, till exempel både som ett märke och som ett popup-meddelande i en Windows Store-app.
Skicka plattformsoberoende meddelanden med hjälp av mallar
Anteckning
Microsoft Push Notification Service (MPNS) har blivit inaktuell och stöds inte längre.
I det här avsnittet används exempelkoden som du skapade i självstudien Skicka meddelanden till specifika användare med hjälp av Azure Notification Hubs . Du kan ladda ned det fullständiga exemplet från GitHub.
Om du vill skicka plattformsoberoende meddelanden med hjälp av mallar gör du följande:
I Visual Studio i Solution Explorer expanderar du mappen Controllers och öppnar sedan filen RegisterController.cs.
Leta upp kodblocket i metoden
Put
som skapar en ny registrering och ersättswitch
sedan innehållet med följande kod:switch (deviceUpdate.Platform) { case "mpns": var toastTemplate = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<wp:Notification xmlns:wp=\"WPNotification\">" + "<wp:Toast>" + "<wp:Text1>$(message)</wp:Text1>" + "</wp:Toast> " + "</wp:Notification>"; registration = new MpnsTemplateRegistrationDescription(deviceUpdate.Handle, toastTemplate); break; case "wns": toastTemplate = @"<toast><visual><binding template=""ToastText01""><text id=""1"">$(message)</text></binding></visual></toast>"; registration = new WindowsTemplateRegistrationDescription(deviceUpdate.Handle, toastTemplate); break; case "apns": var alertTemplate = "{\"aps\":{\"alert\":\"$(message)\"}}"; registration = new AppleTemplateRegistrationDescription(deviceUpdate.Handle, alertTemplate); break; case "fcm": var messageTemplate = "{\"data\":{\"message\":\"$(message)\"}}"; registration = new FcmTemplateRegistrationDescription(deviceUpdate.Handle, messageTemplate); break; default: throw new HttpResponseException(HttpStatusCode.BadRequest); }
Den här koden anropar den plattformsspecifika metoden för att skapa en mallregistrering i stället för en intern registrering. Eftersom mallregistreringar härleds från interna registreringar behöver du inte ändra befintliga registreringar.
Öppna filen NotificationsController.cs i mappen Controllers i Solution Explorer. Ersätt metoden
Post
med följande kod:public async Task<HttpResponseMessage> Post() { var user = HttpContext.Current.User.Identity.Name; var userTag = "username:" + user; var notification = new Dictionary<string, string> { { "message", "Hello, " + user } }; await Notifications.Instance.Hub.SendTemplateNotificationAsync(notification, userTag); return Request.CreateResponse(HttpStatusCode.OK); }
Den här koden skickar ett meddelande till alla plattformar samtidigt. Du anger ingen inbyggd nyttolast. Notification Hubs skapar och levererar rätt nyttolast till varje enhet med det angivna taggvärdet, enligt vad som anges i de registrerade mallarna.
Publicera om ditt webb-API-projekt.
Kör klientappen igen för att kontrollera att registreringen har slutförts.
Du kan också distribuera klientappen till en andra enhet och sedan köra appen. Ett meddelande visas på varje enhet.
Nästa steg
Nu när du har slutfört den här självstudien kan du läsa mer om Notification Hubs och mallar i följande artiklar:
- Ett annat scenario för att använda mallar finns i självstudien Skicka push-meddelanden till specifika Windows-enheter som kör Universell Windows-plattform-program.
- Mer detaljerad information om mallar finns i Översikt över Notification Hubs.