Exportar (0) Imprimir
Expandir Tudo

Tutorial do Hub de Notificação do Service Bus (aplicativos Android)

Windows Azure Service Bus Hubs de notificação são entidades do Service Bus que permitem enviar notificações push do dispositivo por meio de plataformas de aplicativos de terceiros. Essas plataformas incluem:

  1. Os WNS (Serviços de Notificação Push do Windows) para Windows 8.

  2. O APNs (serviço de Notificação Push da Apple).

  3. Serviço do sistema de mensagens em nuvem do Google (GCM) para Android.

Este tutorial descreve como configurar um aplicativo do Android e um aplicativo MVC ASP.NET simples que envia uma notificação de push nativa pelo GCM.

noteObservação
Os hubs de notificação estão disponíveis no Windows Azure Service Bus como um recurso de teste em janeiro de 2013. Há previsões de que eles passem a ter disponibilidade geral em meados de 2013.

noteObservação
Como resultado de aperfeiçoamentos realizados nos hubs de notificação, o SDK baixado antes de abril de 2013 não funcionará com os novos hubs de notificação. Por outro lado, o SDK atual não funcionará com os hubs de notificação criados antes de abril de 2013. Comece a utilizar os novos hubs de notificação com o novo SDK para aproveitar todos os novos recursos, como o controle de simultaneidade otimista. O suporte para hubs de notificação criados antes de abril de 2013 terminará quando os hubs de notificação transitarem para GA.

Suporte para o MPNS (Serviço de Notificação Push da Microsoft) para Windows Phone será adicionado em breve.

Um tópico detalhado Como: Hubs de Notificação do Service Bus (Aplicativos Android) e uma visão geral do Hubs de Notificação do Windows Azure Service Bus também estão disponíveis. Para obter mais informações sobre como usar hubs de notificação da Windows Store e aplicativos iOS, consulte, respectivamente, os tópicos Como: Hubs de Notificação do Service Bus (Aplicativos da Windows Store) e Como: Hubs de Notificação do Service Bus (Aplicativos iOS).

Pré-requisitos

  1. SDK de visualização .NET do Service Bus. O SDK é um pacote NuGet que contém os recursos de teste do Service Bus e que pode ser baixado aqui. O pacote trata-se de recursos de visualização do Service Bus, e contém uma nova biblioteca do Service Bus chamada Microsoft.ServiceBus.Preview.dll. Para utilizar hubs de notificação, use essa biblioteca em vez da versão de produção (Microsoft.ServiceBus.dll).

  2. SDK do Android (como opção, Eclipse), que pode ser baixado aqui.

  3. SDK do hub de notificação para Android. Você pode baixar este SDK aqui.

Cria um projeto de API do Google e gera uma chave de API

Para criar um projeto de API do Google:

  1. Abra a página do console de APIs do Google.

  2. Se já possuir um projeto e desejar criar um novo, clique em Outros projetos e, em seguida, Criar. Se este for seu primeiro projeto de API do Google, crie um ao clicar em Criar projeto…

    Notificações por push
  3. A URL do navegador irá mudar para algo como: https://code.google.com/apis/console/#project:1234567890.

  4. Guarde o número após #project (por exemplo, 1234567890 acima). Esse número é a ID de remetente do GCM.

Habilite o GCM e gere uma chave de API do servidor:

  1. Na página principal do console de APIs do Google, clique em Serviço.

  2. Configure o sistema de mensagens em nuvem do Google em Ativar, e aceite os Termos de Serviços.

  3. Novamente, na página principal do console de APIs do Google, clique em Acesso API.

  4. Clique em Criar nova chave de servidor e, em seguida, em Criar.

    noteObservação
    Não é necessário preencher a lista de permissão do endereço de IP.

  5. Guarde a chave de API criado.

Criar o hub de notificação do Service Bus

Usando o Portal de Gerenciamento do Windows Azure, crie um hub de notificação e configure-o para enviar notificações de push para um aplicativo Android.

  1. Faça o logon no Portal de Gerenciamento do Windows Azure.

  2. No canto inferior esquerdo, clique em Novo.

  3. Clique em Serviços de Aplicativo, em Service Bus, em Hub de Notificação e, em seguida, Criação Rápida.

    Notificações por push
  4. Selecione um nome para o hub de notificação, uma região e o namespace no qual criar o hub de notificação (caso não haja namespaces disponíveis, é configurado um novo com o nome especificado). Clique na marca de seleção.

  5. Na guia Service Bus no painel de navegação esquerdo, clique no namespace criado. O hub de notificação deve aparecer na lista.

    Notificações por push
  6. Clique no hub de notificação e clique na guia Configurar na parte superior.

    Notificações por push
  7. Cole a chave de API do GCM obtida anteriormente e clique em Salvar.

Conectar o aplicativo

Caso não tenha um projeto de Android pronto, crie um novo.

  1. No ADT do Eclipse, crie um novo projeto do Android (Arquivo, Novo, Aplicativo Android) e defina SDK Mínimo Necessário para API 8: Android 2.2 (Froyo).

    Enviar por push
  2. Siga o assistente, mantendo as configurações padrão (por exemplo: criando uma atividade em branco).

    Enviar por push
  3. Abra o Gerenciador de SDK do Android na barra de ferramentas superior do Eclipse. Clique em APIs do Google, Sistema de Mensagens em nuvem di Google para Biblioteca Android e Serviço do Google Play,conforme mostrado abaixo. Clique em Instalar Pacotes. Reiniciar Eclipse.

    noteObservação
    Observação: Lembre do caminho do SDK exibido na parte superior do Gerenciador do SDK.

    Enviar por push
  4. Navegue até o caminho do SDK e copie os arquivos a seguir nos diretórios \libs do projeto no explorador de pacotes: \extras\google\gcm\gcm-client\dist\gcm.jar; \extras\google\google_play_services\libproject\google-play-services_lib\libs\google-play-services.jar.

  5. Baixe o SDK dos hubs de notificação para Android SDK aqui. Extraia o arquivo compactado e copie o arquivo notificationhubs\notification-hubs-sdk.jar no diretório \libs do projeto no explorador de pacotes.

  6. Clique com o botão direito no projeto do explorador de pacotes e, em seguida, emPropriedades. Em seguida, clique em Android na lateral esquerda do painel. Consulte o destino APIs do Google . Clique em OK.

    Enviar por push

    Agora, configure o aplicativo para obter uma registrationId do GCM. Utilize a registrationId para registrar a instância de aplicativo para o hub de notificação.

  7. No arquivo AndroidManifest.xml, adicione a linha a seguir logo abaixo do <uses-sdk/>elemento. Certifique-se de substituir <your package> pelo pacote que você selecionou para o aplicativo na etapa 1 (com.microsoft.testnotificationhubs neste exemplo).

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    
    <permission android:name="<your package>.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="<your package>.permission.C2D_MESSAGE"/>
    
  8. Na classe MainActivity, adicione os seguintes membros privados.

    noteObservação
    Certifique-se de usar a ID de remetente obtida anteriormente.

    private String SENDER_ID = "<your project number>";
    private GoogleCloudMessaging gcm;
    private NotificationHub hub;
    
  9. No Portal de Gerenciamento do Windows Azure, obtenha a cadeia de conexão com acesso de gravação ao navegar até o painel do hub de notificação e clique em Informações de Conexão.

    Enviar por push
  10. No método OnCreate, adicione o código a seguir, certifique-se de substituir os espaços reservados pela cadeia de conexão com acesso de gravação obtido anteriormente e nomeie o hub de notificação.

    gcm = GoogleCloudMessaging.getInstance(this);
            
    String connectionString = "<your listen access connection string>";
    hub = new NotificationHub("<your notification hub name>", connectionString, this);
    
    registerWithNotifiationHub();
    
  11. Em MainActivity.java, crie o método a seguir:

    @SuppressWarnings("unchecked")
    private void registerWithNotificationHubs() {
       new AsyncTask() {
          @Override
          protected Object doInBackground(Object... params) {
             try {
                String regid = gcm.register(SENDER_ID);
                hub.register(regid);
             } catch (Exception e) {
                return e;
             }
             return null;
         }
       }.execute(null, null, null);
    }
    
  12. É necessário gravar o receptor próprio, pois o Android não exibe notificações. Em AndroidManifest.xml, adicione o elemento a seguir dentro do elemento <application/>.

    noteObservação
    Substitua o espaço reservado pelo nome do pacote.

    <receiver
        android:name=".MyBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
       <intent-filter>
          <action android:name="com.google.android.c2dm.intent.RECEIVE" />
          <category android:name="<your package name>" />
       </intent-filter>
    </receiver>
    
  13. Crie uma nova classe (clique com o botão direito no Explorador de Pacotes, em Novo e então clique em Classe). Nomeie a classe MyBroadcastReceiver, derivada de android.content.BroadcastReceiver.

    Enviar por push
  14. Adicione o código a seguir ao MyBroadcastReceiver:

    public static final int NOTIFICATION_ID = 1;
        private NotificationManager mNotificationManager;
        NotificationCompat.Builder builder;
        Context ctx;
    
    @Override
    public void onReceive(Context context, Intent intent) {
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
            ctx = context;
            String messageType = gcm.getMessageType(intent);
            if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
                sendNotification("Send error: " + intent.getExtras().toString());
            } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) {
                sendNotification("Deleted messages on server: " + 
                        intent.getExtras().toString());
            } else {
                sendNotification("Received: " + intent.getExtras().toString());
            }
            setResultCode(Activity.RESULT_OK);
    }
    
    private void sendNotification(String msg) {
    mNotificationManager = (NotificationManager)
                  ctx.getSystemService(Context.NOTIFICATION_SERVICE);
          
          PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
              new Intent(ctx, MainActivity.class), 0);
          
          NotificationCompat.Builder mBuilder =
              new NotificationCompat.Builder(ctx)
              .setSmallIcon(R.drawable.ic_launcher)
              .setContentTitle("Notification Hub Demo")
              .setStyle(new NotificationCompat.BigTextStyle()
                         .bigText(msg))
              .setContentText(msg);
          
         mBuilder.setContentIntent(contentIntent);
         mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
    
    

Execute o aplicativo no emulador

Quando esse aplicativo estiver no emulador, certifique-se de usar o AVD (dispositivo virtual Android) que suporta APIs do Google.

  1. Na Janela, clique em Gerenciador de Dispositivo Virtual Android, selecione o dispositivo e clique em Editar.

    Enviar por push
  2. Selecione APIs do Google em Destino e, em seguida, clique em OK.

    Enviar por push
  3. Na barra de ferramentas superior, clique em Executar e selecione o aplicativo. Isso inicia o emulador e executa o aplicativo.

  4. Este aplicativo recupera a registrationId do GCM e registra-se com o hub de notificação.

noteObservação
Para receber notificações push, é necessário configurar uma conta do Google no dispositivo virtual Android (no emulador, navegue até Configurações e clique em Adcidionar conta). Além disso, certifique-se de que o emulador esteja conectado à Internet.

Envie uma notificação com .NET.

Para criar e enviar notificações, crie um aplicativo de console simples. É possível reutilizar esse código dentro de um aplicativo da web normal.

Se você estiver usando o Visual Studio Express 2012 para Windows 8, vá até Visual Studio Express 2012 para a Área de Trabalho do Windows para criar um aplicativo de console. Ou use o Visual Studio Express 2012 para Web para criar um simples aplicativo de formulários da Web.

Adicionar referências para o seguinte:

  • System.Runtime.Serialization.dll

  • System.Runtime.Serialization.dll

Se estiver criando um aplicativo de console, use o seguinte código como a função Main(). Substitua os espaços reservados pela cadeia de conexão com acesso total que copiou do Portal de Gerenciamento do Windows Azure assim como o nome do hub de notificação.

Enviar por push

Observe o formato JSON do GCM, detalhes podem ser encontrados aqui.

static void Main(string[] args)
{
    var hubClient = NotificationHubClient.CreateClientFromConnectionString(<your connection string with full access>, "<your notification hub name>");
    hubClient.SendGcmNativeNotification("{ \"data\" : {\"msg\":\"Hello from Windows Azure!\"}}");
}

Se 10.000 instâncias de cliente estão registradas, o hub de notificação cria e envia as 10.000 cópias de notificação e realiza o tratamento de erro e gerenciamento de registros necessário.

Enviar por push

Enviar uma notificação com Node.js

Instale o Node.js e npm no computador.

  1. Instale o módulo do nó do azure.

    npm install azure
    
  2. Em um script do nó (ou console interativo), digite o seguinte:

    var azure = require('azure');
    var hub = azure.createNotificationHubService('<your hub name>', '<your connection string with full access>');
    hub.gcm.send(null, '{"data":{"msg":"Hello from node.js!"}}');
    

Se 10.000 instâncias de cliente estão registradas, o hub de notificação cria e envia as 10.000 cópias de notificação e realiza o tratamento de erro e gerenciamento de registros necessário.

Enviar uma notificação com serviços móveis

Com os serviços móveis, é possível criar rapidamente um back-end para o aplicativo. É possível usar hubs de notificação dos serviços móveis para difundir notificações para milhões de dispositivos ou facilmente criar grupos usando marcas.

Este tutorial usa um trabalho agendado, mas é possível enviar notificações de qualquer script no lado do servidor com os serviços móveis.

  1. Criar um novo serviço móvel ou acessa um serviço próprio. Para obter mais informações sobre Serviços móveis, clique aqui.

  2. Na barra superior, clique em Agendador.

    Notificações por push
  3. Crie um novo trabalho agendado, insira um nome e, em seguida, clique em Por demanda.

    Notificações por push
  4. Quando trabalho for criado, clique no nome do trabalho. Na barra superior, clique em Script.

  5. Insira o seguinte script. Certifique-se de substituir o espaço reservado pelo hub de notificação e cadeia de conexão para DefaultFullSharedAccessSignature obtido anteriormente. Clique em Salvar.

    function PushToNotificationHub() {
        var azure = require('azure');
        
        var notificationHubService = azure.createNotificationHubService('<hub name>',
        '<connection string>');
    
        notificationHubService.hub.gcm.send(
            null,
            '{
                "data":
                {
                   "msg" : "Hello from Mobile Services!"
                }
            }',
            function (error)
            {
                if (!error) {
                    console.warn("Notification successful");
                }
            }
        );
    }
    
  6. Na barra inferior, clique em Executar uma vez.

noteObservação
Os serviços móveis utilizam o Windows Azure SDK para Node.js para acessar hubs de notificação. Para obter mais informações sobre o Windows Azure SDK para Node.js com hubs de notificação, clique aqui.

Como mencionando anteriormente, se 10.000 instâncias de cliente estão registradas, o hub de notificação cria e envia as 10.000 cópias de notificação e executa o tratamento de erro e gerenciamento de registros necessários. Para saber como enviar notificações multiplataforma, destinar usuários e grupos de interesse específicos, e outros recursos avançados, consulte o tópico Como: Hubs de Notificação do Service Bus (Aplicativos da Windows Store) e a visão geral Hubs de Notificação do Windows Azure Service Bus aprofundados.

Contribuições da comunidade

Mostrar:
© 2014 Microsoft