Enviar notificações para várias plataformas com os Hubs de Notificação do Azure
Este tutorial baseia-se no tutorial anterior, Enviar notificações a utilizadores específicos através dos Hubs de Notificação do Azure. Este tutorial descreve como enviar notificações push para todos os dispositivos registados num utilizador autenticado específico. Essa abordagem exigia vários pedidos para enviar uma notificação para cada plataforma de cliente suportada. Os Hubs de Notificação do Azure suportam modelos, com os quais pode especificar como um dispositivo específico quer receber notificações. Este método simplifica o envio de notificações entre plataformas.
Este artigo demonstra como tirar partido dos modelos para enviar uma notificação destinada a todas as plataformas. Este artigo utiliza um único pedido para enviar uma notificação neutra da plataforma. Para obter informações mais detalhadas sobre modelos, veja Notification Hubs overview (Descrição geral dos Hubs de Notificação).
Importante
Windows Phone projetos 8.1 e anteriores não são suportados no Visual Studio 2019. Para obter mais informações, veja Visual Studio 2019 platform targeting and compatibility (Filtragem e compatibilidade da plataforma do Visual Studio 2019).
Nota
Com os Notification Hubs, um dispositivo pode registar vários modelos com a mesma etiqueta. Neste caso, uma mensagem recebida que visa a etiqueta resulta na entrega de várias notificações no dispositivo, uma para cada modelo. Este processo permite-lhe apresentar a mesma mensagem em várias notificações visuais, como um distintivo e uma notificação de alerta numa aplicação da Loja Windows.
Enviar notificações entre plataformas com modelos
Nota
O Serviço de Notificações Push da Microsoft (MPNS) foi preterido e já não é suportado.
Esta secção utiliza o código de exemplo que criou no tutorial Enviar notificações a utilizadores específicos através dos Hubs de Notificação do Azure . Pode transferir o exemplo completo a partir do GitHub.
Para enviar notificações entre plataformas com modelos, faça o seguinte:
No Visual Studio no Explorador de Soluções, expanda a pasta Controllers e, em seguida, abra o ficheiro RegisterController.cs.
Localize o bloco de código no método que cria um novo registo e, em
Put
seguida, substitua oswitch
conteúdo pelo seguinte código: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); }
Este código chama o método específico da plataforma para criar um registo de modelo em vez de um registo nativo. Uma vez que os registos de modelos derivam de registos nativos, não precisa de modificar os registos existentes.
No Explorador de Soluções, na pasta Controladores, abra o ficheiro NotificationsController.cs. Substitua o método
Post
pelo código abaixo: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); }
Este código envia uma notificação para todas as plataformas ao mesmo tempo. Não especifica um payload nativo. Os Hubs de Notificação compilam e fornecem o payload correto a todos os dispositivos com o valor de etiqueta fornecido, conforme especificado nos modelos registados.
Volte a publicar o projeto da API Web.
Execute a aplicação cliente novamente para verificar se o registo foi bem-sucedido.
Opcionalmente, implemente a aplicação cliente num segundo dispositivo e, em seguida, execute a aplicação. É apresentada uma notificação em cada dispositivo.
Passos seguintes
Agora que concluiu este tutorial, saiba mais sobre os Hubs de Notificação e os modelos nestes artigos:
- Para um cenário diferente para utilizar modelos, veja o tutorial Notificações push para dispositivos Windows específicos com aplicações Plataforma Universal do Windows.
- Para obter informações mais detalhadas sobre modelos, veja Notification Hubs Overview (Descrição Geral dos Hubs de Notificação).