Tutorial: Configuração inicial para receber notificação por push dos Hubs de Notificação do Azure

Este tutorial mostra como usar os Hubs de Notificação do Azure para enviar notificações por push a um aplicativo iOS usando o SDK dos Hubs de Notificação do Azure para Apple.

Este tutorial cobre as seguintes etapas:

  • Criar um aplicativo iOS de exemplo.
  • Conectar seu aplicativo iOS aos Hubs de Notificação do Azure.
  • Enviar notificações por push de teste.
  • Verificar se seu aplicativo recebe notificações.

Baixe o código completo deste tutorial no GitHub.

Pré-requisitos

Para concluir este tutorial, você precisará dos seguintes pré-requisitos:

  • Um Mac executando Xcode, juntamente com um certificado de desenvolvedor válido instalado em seu conjunto de chaves.
  • Um iPhone ou iPad executando o iOS versão 10 ou posterior.
  • Seu dispositivo físico registrado no portal da Apple e associado ao seu certificado.

Antes de prosseguir, siga o tutorial anterior sobre como começar a usar os Hubs de Notificação do Azure para aplicativos iOS para então preparar e configurar as credenciais de push em seu hub de notificação. Mesmo que você não tenha nenhuma experiência anterior com o desenvolvimento do iOS, você será capaz de seguir estas etapas.

Observação

Devido aos requisitos de configuração das notificações por push, você precisa implantá-las e testá-las em um dispositivo iOS físico (iPhone ou iPad), em vez de usar o emulador de iOS.

Conectar seu aplicativo do iOS aos Hubs de Notificação

  1. No Xcode, crie um novo projeto do Xcode e selecione a guia iOS e modelo do Aplicativo.

    Diagram that shows Xcode setup for new app

  2. Ao definir as opções para o novo projeto, lembre-se de usar os mesmos Nome do Produto e Identificador Organizacional que você usou quando configurou o identificador do pacote no Portal do Desenvolvedor da Apple. O Pacote Identificado na nova janela do projeto deve ser preenchido para corresponder ao pacote identificado no portal do Desenvolvedor da Apple. Diferencia maiúsculas de minúsculas.

  3. Em Project Navigator, selecione o nome do projeto em Destinos e, em seguida, selecione a guia Assinatura e Recursos de Assinatura. Certifique-se de selecionar a equipe apropriada para sua conta de desenvolvedor Apple. O deverá automaticamente efetuar pull do perfil de provisionamento que você criou anteriormente com base em seu identificador de pacote.

    Se você não vir o novo perfil de provisionamento que você criou no Xcode, tente atualizar os perfis da sua identidade de assinatura. Clique em Xcode na barra de menus, em Preferências, na guia Conta, no botão Exibir Detalhes, em sua identidade de assinatura e depois clique no botão Atualizar no canto inferior direito.

    View details

  4. Na guia Assinatura e Funcionalidades, selecione + Funcionalidade. Clique duas vezes em Notificações por Push para habilitá-la.

    Capability

  5. Adicione os módulos do SDK dos Hubs de Notificação do Microsoft Azure.

    Você pode integrar o SDK dos Hubs de Notificação do Azure ao seu aplicativo usando o CocoaPods ou adicionando manualmente os binários ao seu projeto.

    • Integração por meio de Cocoapods: Adicione as seguintes dependências ao seu podfile para incluir o SDK dos Hubs de Notificação do Azure em seu aplicativo:

      pod 'AzureNotificationHubs-iOS'
      
      • Execute pod install para instalar seu pod recém-definido e abrir seu .xcworkspace.

        Se um erro como Não é possível encontrar uma especificação para AzureNotificationHubs-iOS for exibido durante a execução de pod install, execute pod repo update para obter os pods mais recentes do repositório Cocoapods e execute pod install.

    • Integração por meio do Carthage: Adicione as seguintes dependências ao seu Cartfile para incluir o SDK dos Hubs de Notificação do Azure em seu aplicativo:

      github "Azure/azure-notificationhubs-ios"
      
      • Em seguida, atualize as dependências de build:
      $ carthage update
      

      Para obter mais informações sobre como usar o Carthage, confira o repositório GitHub do Carthage.

    • Integração copiando os binários em seu projeto:

      Você pode realizar a integração copiando os binários para seu projeto, da seguinte maneira:

      • Baixe a estrutura do SDK dos Hubs de Notificação do Azure fornecida como um arquivo zip e descompacte-o.

      • No Xcode, clique com o botão direito do mouse no projeto e clique na opção Adicionar Arquivos a para adicionar a pasta WindowsAzureMessaging.framework ao seu projeto do Xcode. Selecione Opções e verifique se a opção Copiar itens se necessário está selecionada e, em seguida, clique em Adicionar.

        Add framework

  6. Adicione ou edite um arquivo chamado DevSettings.plist que contém duas propriedades, CONNECTION_STRING para a cadeia de conexão do Hub de Notificações do Azure e HUB_NAME para o nome do Hub de Notificações do Azure.

  7. Adicione as informações para se conectar aos Hubs de Notificação do Azure na seção <string></string> apropriada. Substitua os espaços reservados de literal de cadeia de caracteres --HUB-NAME-- e --CONNECTION-STRING-- pelo nome do hub e a DefaultListenSharedAccessSignature, respectivamente, como você obteve anteriormente do portal:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>HUB_NAME</key>
      <string>--HUB-NAME--</string>
      <key>CONNECTION_STRING</key>
      <string>--CONNECTION-STRING--</string>
    </dict>
    </plist>
    
  8. No mesmo arquivo AppDelegate.m, substitua todo o código após didFinishLaunchingWithOptions pelo código a seguir:

    #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
    #import <UserNotifications/UserNotifications.h>
    
    // Extend the AppDelegate to listen for messages using MSNotificationHubDelegate and User Notification Center
    @interface AppDelegate () <MSNotificationHubDelegate>
    
    @end
    
    @implementation AppDelegate
    
    @synthesize notificationPresentationCompletionHandler;
    @synthesize notificationResponseCompletionHandler;
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
        NSString *path = [[NSBundle mainBundle] pathForResource:@"DevSettings" ofType:@"plist"];
        NSDictionary *configValues = [NSDictionary dictionaryWithContentsOfFile:path];
    
        NSString *connectionString = [configValues objectForKey:@"CONNECTION_STRING"];
        NSString *hubName = [configValues objectForKey:@"HUB_NAME"];
    
        if([connectionString length] != 0 && [hubName length] != 0) {
            [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
            [MSNotificationHub setDelegate:self];
            [MSNotificationHub initWithConnectionString:connectionString withHubName:hubName];
    
            return YES;
        }
    
        NSLog(@"Please setup CONNECTION_STRING and HUB_NAME in DevSettings.plist and restart application");
    
        exit(-1);
    }
    
    - (void)notificationHub:(MSNotificationHub *)notificationHub didReceivePushNotification:(MSNotificationHubMessage *)message {
        // Send message using NSNotificationCenter with the message
        NSDictionary *userInfo = [NSDictionary dictionaryWithObject:message forKey:@"message"];
        [[NSNotificationCenter defaultCenter] postNotificationName:@"MessageReceived" object:nil userInfo:userInfo];
    }
    
    @end
    

    Esse código conecta-se ao hub de notificações usando as informações de conexão especificadas em DevSettings.plist. Esse código fornece o token do dispositivo ao hub de notificação para que o hub possa enviar notificações.

Criar arquivo de cabeçalho de NotificationDetailViewController

  1. Assim como nas instruções anteriores, adicione outro arquivo de cabeçalho chamado SetupViewController.h. Substitua o conteúdo do novo arquivo de cabeçalho pelo seguinte código:

    #import <UIKit/UIKit.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface SetupViewController : UIViewController
    
    @end
    
    NS_ASSUME_NONNULL_END
    
  2. Adicione o arquivo de implementação SetupViewController.m. Substitua o conteúdo do arquivo pelo seguinte código, que implementa os métodos UIViewController:

    #import "SetupViewController.h"
    
     static NSString *const kNHMessageReceived = @"MessageReceived";
    
     @interface SetupViewController ()
    
     @end
    
     @implementation SetupViewController
    
     - (void)viewDidLoad {
         [super viewDidLoad];
    
         // Listen for messages using NSNotificationCenter
         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceivePushNotification:) name:kNHMessageReceived object:nil];
     }
    
     - (void)dealloc {
         // Clean up subscription to NSNotificationCenter
         [[NSNotificationCenter defaultCenter] removeObserver:self name:kNHMessageReceived object:nil];
     }
    
     - (void)didReceivePushNotification:(NSNotification *)notification {
         MSNotificationHubMessage *message = [notification.userInfo objectForKey:@"message"];
    
         // Create UI Alert controller with message title and body
         UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message.title
                              message:message.body
                       preferredStyle:UIAlertControllerStyleAlert];
         [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]];
         [self presentViewController:alertController animated:YES completion:nil];
    
         // Dismiss after 2 seconds
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
             [alertController dismissViewControllerAnimated:YES completion: nil];
         });
    
     }
    
     @end
    
  3. Compile e execute o aplicativo no dispositivo para verificar se não há falhas.

Enviar notificações por push de teste

Você pode testar o recebimento de notificações no aplicativo com a opção Envio de Teste no Azure portal. Isso envia uma notificação por push de teste para seu dispositivo.

Test send

As notificações por push normalmente são enviadas em um serviço de back-end como Aplicativos Móveis ou ASP.NET usando uma biblioteca compatível. Se uma biblioteca não estiver disponível para o seu back-end, você também poderá usar a API REST diretamente para enviar mensagens de notificação.

Aqui está uma lista de alguns outros tutoriais que talvez você queira examinar para o envio de notificações:

Verifique se seu aplicativo recebe notificações por push

Para testar as notificações por push no iOS, você deve implantar o aplicativo em um dispositivo iOS físico. Não é possível enviar notificações por push da Apple com o iOS Simulator.

  1. Execute o aplicativo e verifique se o registro foi bem-sucedido e pressione OK.

    Register

  2. Em seguida, envie uma notificação por push de teste do portal do Azure, conforme descrito na seção anterior.

  3. A notificação por push é enviada a todos os dispositivos que estão registrados para receber as notificações do hub de notificação fornecido.

    Send test

Próximas etapas

Neste exemplo simples, você difunde notificações por push a todos os seus dispositivos iOS registrados. Para saber como enviar notificações por push para dispositivos iOS específicos, prossiga para o seguinte tutorial:

Tutorial: Enviar notificações por push para dispositivos específicos

Para obter mais informações, consulte os seguintes artigos: