Enviar notificações por push com os Hubs de Notificação do Azure e o Node.js

Visão geral

Importante

Para concluir este tutorial, você precisa ter uma conta ativa do Azure. Se você não tiver uma conta, crie uma conta de avaliação gratuita em apenas alguns minutos por meio da Avaliação Gratuita do Azure.

Este guia mostra como enviar notificações por push com a ajuda dos Hubs de Notificação do Azure diretamente de um aplicativo Node.js.

Os cenários abordados incluem o envio de notificações por push para aplicativos nas seguintes plataformas:

  • Android
  • iOS
  • Plataforma Universal do Windows
  • Windows Phone

Hubs de Notificação

Os Hubs de Notificação do Azure fornecem uma infraestrutura de várias plataformas escalonáveis e fáceis de usar para o envio de notificações por push para dispositivos móveis. Para obter detalhes sobre a infraestrutura de serviço, confira a página Hubs de Notificação do Azure .

Criar um aplicativo Node.js

A primeira etapa deste tutorial é a criação de um novo aplicativo Node. js em branco. Para obter instruções sobre como criar um aplicativo Node.js, confira Criar e implantar um aplicativo Node.js em um Site do Azure, Serviço de Nuvem do Node.js usando o Windows PowerShell ou Site com o WebMatrix.

Configurar seu aplicativo para usar os Hubs de Notificação

Para usar os Hubs de Notificação do Azure, você precisa baixar e usar o pacote azuredo Node.js, que inclui um conjunto interno de bibliotecas auxiliares que se comunicam com os serviços REST de notificação por push.

Usar o NPM (gerenciador de pacotes de nós) para obter o pacote

  1. Use uma interface de linha de comando, como PowerShell (Windows), Terminal (Mac) ou Bash (Unix) e navegue até a pasta em que você criou o aplicativo em branco.
  2. Execute npm install azure-sb na janela Comando.
  3. Você pode executar manualmente o comando ls ou dir para verificar se uma pasta node_modules foi criada.
  4. Dentro dessa pasta, você encontrará o pacote azure , que contém as bibliotecas necessárias para acessar o Hub de Notificação.

Observação

Saiba mais sobre a instalação do NPM no blog oficial do NPM.

Importar o módulo

Usando um editor de texto, adicione o seguinte à parte superior do arquivo server.js do aplicativo:

var azure = require('azure-sb');

Configurar uma conexão do Hub de Notificação do Azure

O objeto NotificationHubServicepermite que você trabalhe com os hubs de notificação. O código a seguir cria um objeto NotificationHubService para o hub de notificação denominado hubname. Adicione-o próximo ao início do arquivo server.js, após a instrução de importação do módulo Azure:

var notificationHubService = azure.createNotificationHubService('hubname','connectionstring');

Obtenha o valor connectionstring de conexão do portal do Azure executando as seguintes etapas:

  1. No painel de navegação esquerdo, clique em Procurar.
  2. Selecione Hubs de Notificaçãoe localize o hub que você deseja usar no exemplo. Você poderá consultar o tutorial Introdução da Windows Microsoft Store se precisar de ajuda para criar um novo Hub de notificações.
  3. Selecione Configurações.
  4. Clique em Políticas de Acesso. Você verá as duas cadeias de conexão de acesso compartilhado e completo.

Portal do Azure - Hubs de Notificação

Observação

Você também pode recuperar a cadeia de conexão por meio do cmdletGet-AzureSbNamespace no Azure PowerShell ou o comando azure sb namespace show na CLI clássica do Azure.

Arquitetura geral

O objeto NotificationHubService expõe as seguintes instâncias de objeto para o envio de notificações por push a dispositivos e aplicativos específicos:

  • Android – use o objeto GcmService que está disponível em notificationHubService.gcm
  • iOS – use o objeto ApnsService, que está acessível em notificationHubService.apns
  • Windows Phone – use o objeto MpnsService, que está disponível em notificationHubService.mpns
  • Plataforma Universal do Windows – use o objeto WnsService, que está disponível em notificationHubService.wns

Observação

O MPNS (Serviço de Notificação por Push da Microsoft) foi preterido e não é mais compatível.

Como enviar notificações para aplicativos Android

O objeto GcmService fornece um método send que pode ser usado para enviar notificações por push aos aplicativos Android. O método send aceita os seguintes parâmetros:

  • Tags : o identificador da etiqueta. Se nenhuma marca for fornecida, a notificação será enviada a todos os clientes.
  • Payload : o JSON ou o conteúdo bruto de cadeia de caracteres da mensagem.
  • Callback : a função de retorno de chamada.

Para obter mais informações sobre o formato do payload, consulte a documentação do payload.

O código a seguir usa a instância GcmService exposta por NotificationHubService para enviar uma notificação por push para todos os clientes registrados.

var payload = {
  data: {
    message: 'Hello!'
  }
};
notificationHubService.gcm.send(null, payload, function(error){
  if(!error){
    //notification sent
  }
});

Como enviar notificações por push para aplicativos iOS

Da mesma forma como ocorre com os aplicativos Android descritos acima, o objeto ApnsService fornece um método send que pode ser usado para enviar notificações por push aos aplicativos iOS. O método send aceita os seguintes parâmetros:

  • Tags : o identificador da etiqueta. Se nenhuma marca for fornecida, a notificação será enviada a todos os clientes.
  • Payload : o JSON ou o conteúdo de cadeia de caracteres da mensagem.
  • Callback : a função de retorno de chamada.

Para obter mais informações sobre o formato do payload, consulte a seção conteúdo de notificação do guia UserNotifications.

O código a seguir usa a instância ApnsService exposta por NotificationHubService para enviar uma mensagem de alerta a todos os clientes:

var payload={
    alert: 'Hello!'
  };
notificationHubService.apns.send(null, payload, function(error){
  if(!error){
      // notification sent
  }
});

Como enviar notificações por push para aplicativos do Windows Phone

O objeto MpnsService fornece um método send que pode ser usado para enviar notificações por push aos aplicativos do Windows Phone. O método send aceita os seguintes parâmetros:

  • Tags : o identificador da etiqueta. Se nenhuma marca for fornecida, a notificação será enviada a todos os clientes.
  • Payload : o conteúdo XML da mensagem.
  • TargetName - toast para notificações ‘toast’. token para notificações de bloco.
  • NotificationClass : a prioridade da notificação. Veja a seção Elementos de cabeçalhos HTTP do documento Notificações por push de um servidor para obter os valores válidos.
  • Options : cabeçalhos de solicitação opcionais.
  • Callback : a função de retorno de chamada.

Para obter uma lista válida TargetName, NotificationClass e opções de cabeçalho, confira a página Enviar notificações por push de um servidor.

O seguinte código de exemplo usa a instância MpnsService exposta por NotificationHubService para enviar uma notificação por push do sistema:

var payload = '<?xml version="1.0" encoding="utf-8"?><wp:Notification xmlns:wp="WPNotification"><wp:Toast><wp:Text1>string</wp:Text1><wp:Text2>string</wp:Text2></wp:Toast></wp:Notification>';
notificationHubService.mpns.send(null, payload, 'toast', 22, function(error){
  if(!error){
    //notification sent
  }
});

Como enviar notificações por push para aplicativos da UWP (Plataforma Universal do Windows)

O objeto WnsService fornece um método send que pode ser usado para enviar notificações por push aos aplicativos da Plataforma Universal do Windows. O método send aceita os seguintes parâmetros:

  • Tags : o identificador da etiqueta. Se nenhuma marca for fornecida, a notificação será enviada a todos os clientes registrados.
  • Payload : a carga da mensagem XML.
  • Type : o tipo de notificação.
  • Options : cabeçalhos de solicitação opcionais.
  • Callback : a função de retorno de chamada.

Para obter uma lista de tipos e de cabeçalhos de solicitação válidos, veja Solicitação de serviço e cabeçalhos de resposta de notificação por push.

O código a seguir usa a instância WnsService exposta por NotificationHubService para enviar uma notificação por push do sistema para um aplicativo UWP:

var payload = '<toast><visual><binding template="ToastText01"><text id="1">Hello!</text></binding></visual></toast>';
notificationHubService.wns.send(null, payload , 'wns/toast', function(error){
  if(!error){
      // notification sent
  }
});

Próximas etapas

Os snippets de código de exemplo acima permitem que você crie com facilidade a infraestrutura de serviço para enviar notificações por push para uma ampla variedade de dispositivos. Agora que você aprendeu os conceitos básicos do uso de Hubs de Notificação com o Node.js, siga estes links para saber mais sobre como é possível estender ainda mais esses recursos.