Tutorial: Configuração inicial para receber notificações 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 para um aplicativo iOS, usando o SDK dos Hubs de Notificação do Azure para Apple.

Este tutorial contém os seguintes passos:

  • Crie um aplicativo iOS de exemplo.
  • Conecte seu aplicativo iOS aos Hubs de Notificação do Azure.
  • Envie notificações push de teste.
  • Verifique se seu aplicativo recebe notificações.

Você pode baixar o código completo para este tutorial do GitHub.

Pré-requisitos

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

  • Um Mac com Xcode, juntamente com um certificado de programador válido instalado no seu Porta-chaves.
  • Um iPhone ou iPad com iOS versão 10 ou posterior.
  • O seu dispositivo físico registado no Portal Apple e associado ao seu certificado.

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

Nota

Devido aos requisitos de configuração para notificações por push, você deve implantar e testar notificações por push em um dispositivo iOS físico (iPhone ou iPad), em vez do emulador iOS.

Ligar a aplicação iOS aos Notification Hubs

  1. No Xcode, crie um novo projeto Xcode e selecione a guia iOS e o modelo de aplicativo.

    Diagram that shows Xcode setup for new app

  2. Ao definir as opções para o seu novo projeto, não se esqueça de utilizar o mesmo Nome do Produto e Identificador de Organização que utilizou quando definiu o identificador de pacote no portal de Programador da Apple. O pacote identificado na nova janela do projeto deve ser preenchido para corresponder ao pacote identificado no portal do desenvolvedor da Apple. É Sensível às Maiúsculas e Minúsculas.

  3. Em Project Navigator, selecione o nome do seu projeto em Targets e, em seguida, selecione o separador Signing & Capabilities. Certifique-se de que seleciona a Equipa adequada para a sua conta de Programador Apple. XCode deve obter automaticamente o Perfil de Aprovisionamento que criou anteriormente com base no identificador de pacote.

    Se não vir o novo perfil de aprovisionamento que criou no Xcode, tente atualizar os perfis para a sua identidade de assinatura. Clique em Xcode na barra de menus, clique em Preferências, clique em Conta clique no botão Ver Detalhes, clique na sua identidade de assinatura e clique no botão atualizar no canto inferior direito.

    View details

  4. Na guia Assinando & Capacidades, selecione + Capacidade. Clique duas vezes em Notificações por push para ativá-lo.

    Capability

  5. Adicione os módulos do SDK dos Hubs de Notificação do 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 via 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 abra seu .xcworkspace.

        Se você vir um erro como Não é possível encontrar uma especificação para AzureNotificationHubs-iOS ao executar a instalação do pod, execute para obter os pods mais recentes do repositório do Cocoapods e, em seguida, execute pod repo update a instalação do pod.

    • Integração via 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 compilação:
      $ carthage update
      

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

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

      Você pode integrar copiando os binários em seu projeto, da seguinte maneira:

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

      • No Xcode, clique com o botão direito do rato no projeto e clique na opção Adicionar Ficheiros a para adicionar a pasta WindowsAzureMessaging.framework ao seu projeto Xcode. Selecione Opções e certifique-se de que Copiar itens, se necessário está selecionado 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 para o Hub de Notificação do Azure e HUB_NAME para o nome do Hub de Notificação do Azure.

  7. Adicione as informações para se conectar aos Hubs de Notificação do Azure na seção apropriada <string></string> . Substitua os espaços reservados --HUB-NAME-- literais da cadeia de caracteres e pelo nome do hub e --CONNECTION-STRING-- DefaultListenSharedAccessSignature, respectivamente, conforme obtido anteriormente no 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 depois didFinishLaunchingWithOptions pelo seguinte código:

    #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 se conecta ao hub de notificação usando as informações de conexão especificadas em DevSettings.plist. Em seguida, ele fornece o token do dispositivo para o hub de notificação, para que o hub possa enviar notificações.

Criar arquivo de cabeçalho NotificationDetailViewController

  1. Semelhante às instruções anteriores, adicione outro arquivo de cabeçalho chamado SetupViewController.h. Substitua o conteúdo do novo arquivo de cabeçalho com o 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 com o 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. Para confirmar que não existem falhas, crie e execute a aplicação no dispositivo.

Enviar notificações push de teste

Pode testar a receção das notificações na aplicação com a opção Envio de Teste no portal do Azure. Esta ação envia uma notificação push de teste para o dispositivo.

Test send

Normalmente, as notificações push são enviadas num serviço de back-end como Mobile Apps ou ASP.NET com uma biblioteca compatível. Se uma biblioteca não estiver disponível para 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 você pode querer rever para enviar notificações:

Verificar que a aplicação recebe notificações push

Para testar as notificações push no iOS, tem de implementar a aplicação para um dispositivo iOS físico. Não é possível enviar notificações push da Apple usando o simulador do iOS.

  1. Execute a aplicação, verifique se o registo é concluído com êxito e prima 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 para todos os dispositivos registrados para receber as notificações do hub de notificação fornecido.

    Send test

Próximos passos

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

Tutorial: Notificações push para dispositivos específicos

Para obter mais informações, consulte os seguintes artigos que podem estar em inglês: