Compartilhar via


Tutorial: Criar notificações por push em seu aplicativo iOS

Este tutorial orienta você a criar notificações por push em seu aplicativo iOS usando o SDK dos Serviços de Comunicação do Azure de Chat.

As notificações por push alertam os usuários sobre mensagens de entrada em uma conversa de chat quando o aplicativo móvel não está em execução em primeiro plano. Os Serviços de Comunicação do Azure dão suporte a duas versões das notificações por push:

  • Versão básica: um número de notificação aparece no ícone do aplicativo, o dispositivo reproduz um som de notificação e uma faixa de alerta pop-up é exibida.

    Captura de tela da versão básica de uma notificação por push.

  • Versão avançada: além dos recursos com suporte na versão básica, você pode personalizar o título e a visualização da mensagem na faixa de alerta.

    Captura de tela da versão avançada da notificação por push.

Neste tutorial, você:

  • Configure um certificado de APNs (Apple Push Notification Service).
  • Configure o Xcode para notificações por push.
  • Implemente uma versão básica ou avançada de notificações por push.
  • Teste as notificações em seu aplicativo.
  • Configure a renovação automática de registro para notificações por push.

Código de download

Acesse o código de exemplo para este tutorial no GitHub.

Pré-requisitos

Crie um certificado APNs .p12 e configure-o no hub de notificação

Se você não for um cliente interno da Microsoft, execute todas as etapas no procedimento a seguir.

Se você for um cliente interno da Microsoft, envie um tíquete e forneça a ID do pacote do aplicativo para obter um certificado .p12. Em seguida, pule para a última etapa no procedimento a seguir.

  1. Entre no Apple Developer Portal.

  2. Vá para Certificados, Identificadores e Perfis>Identificadores>IDs do aplicativo, e selecione a ID de aplicativo associada ao seu aplicativo.

    Captura de tela que mostra as seleções para escolher uma ID do aplicativo.

  3. Na página da ID do aplicativo, selecione Funcionalidades>Notificações por Push, e selecione Salvar.

    Captura de tela que mostra as opções para editar uma configuração de ID do aplicativo.

  4. Na caixa de diálogo Modificar Funcionalidades do Aplicativo exibida, selecione Confirmar.

    Captura de tela que mostra o botão Confirmar para modificar os recursos do aplicativo.

  5. Na página da ID do aplicativo, selecione Funcionalidades>Notificações por Push>Configurar e, em seguida, faça a seguinte esoclha:

    • Para testar notificações por push durante o desenvolvimento de um aplicativo iOS, selecione o botão Criar Certificado no Certificado SSL de Desenvolvimento.
    • Para enviar notificações por push em produção, selecione o botão Criar Certificado em Certificado SSL de Produção.

    Captura de tela que mostra as opções para criar um certificado de desenvolvimento ou um certificado de produção.

  6. A área Criar um Novo Certificado é exibida na página Certificados, Identificadores e Perfis.

    Captura de tela que mostra a opção para carregar uma solicitação de assinatura de certificado.

    Nessa área, você carrega uma CSR (solicitação de assinatura de certificado):

    1. Em uma nova guia do navegador, siga esta página de ajuda da Apple para criar uma CSR e salve o arquivo como Nome do aplicativo.cer. As instruções incluem o uso do Assistente de Certificado para solicitar um certificado e o preenchimento das informações do certificado.

      Captura de tela que mostra seleções para solicitar um certificado de uma autoridade de certificação.

      Captura de tela que mostra um exemplo de preenchimento de informações de certificado.

    2. Arraste o arquivo .cer para a área Escolher Arquivo. Em seguida, selecione Continuar no canto superior direito.

      Captura de tela da área para escolher um arquivo de certificado.

  7. Selecione Baixar.

    Captura de tela do botão para baixar um certificado.

  8. Salve o arquivo localmente no formato .p12.

    Captura de tela que mostra a área para salvar um arquivo de certificado.

  9. Abra o arquivo de .cer que você baixou. No Keychain Access, selecione o certificado, clique com o botão direito do mouse nele e exporte o certificado no formato .p12.

  10. Vá para o hub de notificação. Em Configurações, selecione Apple (APNS). Em seguida, preencha os detalhes do certificado:

    • Para o Modo de Autenticação, selecione Certificado.
    • Para Carregar Certificado, carregue o arquivo .p12 que você acabou de criar.
    • Para Modo de Aplicativo, selecione o modo com base em sua necessidade.

    Ao concluir a inserção de todas as informações, selecione Salvar.

    Captura de tela que mostra as configurações de aplicativo e certificado para um hub de notificação.

Configurar o Xcode

  1. Em Xcode, vá paraAssinatura e Funcionalidades.

  2. Adicione uma funcionalidade selecionando+ funcionalidadee,em seguida, selecioneNotificações por Push.

  3. Adicione outra funcionalidade selecionando+ funcionalidadee, em seguida, selecioneModos de Segundo Plano.

  4. Em Modos de Segundo Plano, selecione Notificações remotas.

    Captura de tela que mostra a adição de notificações por push e modos em segundo plano no Xcode.

  5. Para Destino do Pod – AzureCore, defina Exigir apenas API segura para extensão de aplicativo como Não.

Implementar notificações por push

Versão básica

Se você quiser implementar uma versão básica das notificações por push, será necessário registrar-se para notificações remotas com APNs. Consulte o código de exemplo para ver a implementação relacionada em AppDelegate.swift.

Versão avançada

Se você quiser implementar uma versão avançada da notificação por push, precisará incluir os itens a seguir no seu aplicativo. O motivo é que a criptografia do conteúdo do cliente (por exemplo, conteúdo da mensagem de chat e nome de exibição do remetente) em cargas de notificação por push requer algumas soluções alternativas.

Armazenamento de dados para chaves de criptografia

Criar armazenamento de dados persistente em dispositivos iOS. Esse armazenamento de dados deve ser capaz de compartilhar dados entre o aplicativo principal e as extensões de aplicativo.

No código de exemplo deste tutorial, escolha Grupos de Aplicativos como o armazenamento de dados executando essas ações:

  • Adicione a funcionalidade Grupos de Aplicativos aos destinos do aplicativo (aplicativo principal e extensões de aplicativo) seguindo as etapas no artigo da Apple Adicionando funcionalidades ao seu aplicativo.

  • Configure os Grupos de Aplicativos seguindo as etapas no artigo da Apple Configurando Grupos de Aplicativos. Verifique se seu aplicativo principal e suas extensões de aplicativo têm o mesmo nome de contêiner.

Extensão do Serviço de Notificação

Implemente a Extensão do Serviço de Notificação agrupada com o aplicativo principal. Essa extensão de aplicativo é usada para descriptografar a carga de notificação por push quando o dispositivo a recebe.

  1. Vá para Adicionar uma extensão de aplicativo de serviço ao seu projeto na documentação da Apple e siga as etapas.

  2. Vá para Implementar os métodos de manipulador da extensão na documentação da Apple. A Apple fornece o código padrão para descriptografar dados e você pode seguir a estrutura geral deste tutorial. No entanto, como você está usando o SDK de Chat para descriptografia, é necessário substituir a parte que começa em // Try to decode the encrypted message data pela lógica personalizada. Consulte o código de exemplo para ver a implementação relacionada em NotificationService.swift.

Implementação do protocolo PushNotificationKeyStorage

O protocolo PushNotificationKeyStorage é necessário para a versão avançada das notificações por push. Você pode usar a classe padrão AppGroupPushNotificationKeyStorage fornecida pelo SDK de Chat. Se você não usar os Grupos de Aplicativos como o armazenamento de chaves ou se quiser personalizar métodos de armazenamento de chaves, crie sua própria classe em conformidade com o protocolo PushNotificationKeyStorage.

PushNotificationKeyStorage define dois métodos:

  • onPersistKey(encryptionKey:expiryTime): esse método é usado para persistir a chave de criptografia no armazenamento do dispositivo iOS do usuário. O SDK de Chat define 45 minutos como o tempo de expiração da chave de criptografia. Se quiser que as notificações por push estejam em vigor por mais de 45 minutos, você precisará agendar uma chamada chatClient.startPushNotifications(deviceToken:) com mais frequência (por exemplo, a cada 15 minutos) para que uma nova chave de criptografia possa ser registrada antes que a chave antiga expire.

  • onRetrieveKeys() -> [String]: esse método é usado para recuperar as chaves válidas que foram armazenadas anteriormente. Você tem a flexibilidade de fornecer personalização com base no armazenamento de dados escolhido anteriormente.

Na extensão de protocolo, o SDK de Chat fornece uma implementação do método decryptPayload(notification:) -> PushNotificationEvent que você pode usar. Consulte o código de exemplo para ver a implementação relacionada em NotificationService.swift.

Testar suas notificações

  1. Crie uma conversa de chat com o usuário A e o usuário B.

  2. Baixe o repositório GitHub para aplicativos de exemplo.

  3. Coloque os valores <ACCESS_TOKEN> e <ACS_RESOURCE_ENDPOINT> do Usuário A em AppSettings.plist.

  4. Defina Habilitar Bitcode como Não para dois destinos de Pods, AzureCommunicationChat e Trouter.

  5. Conecte o dispositivo iOS ao seu Mac e execute o programa. Quando você for solicitado a autorizar notificações por push no dispositivo, selecione Permitir.

  6. Como usuário B, envie uma mensagem de chat. Confirme se o usuário A recebe uma notificação por push no dispositivo iOS.

Implementar a renovação do registro

Para que a Microsoft forneça um serviço de chat seguro, o registro para notificações por push em dispositivos iOS permanecerá válido por apenas 45 minutos. Para manter a funcionalidade das notificações por push, será necessário implementar a renovação do registro no aplicativo cliente.

Esse tutorial propõe duas soluções alinhadas com as diretrizes oficiais da Apple. Recomendamos que você implemente as duas soluções juntas para aumentar sua eficácia.

Observação

Vários fatores podem influenciar a eficácia de qualquer solução. Por exemplo, o status da bateria do dispositivo, as condições de rede e as restrições específicas do iOS podem afetar a capacidade do aplicativo de executar tarefas em segundo plano. Para obter mais informações, consulte o vídeo Avanços na Execução em Segundo Plano e o artigo da Apple Enviando atualizações em segundo plano para seu aplicativo.

Solução 1: Tarefas em segundo plano

As Tarefas em segundo plano oferecem uma maneira de executar atividades mesmo quando o aplicativo não está em primeiro plano. Quando você implementa uma tarefa em segundo plano, seu aplicativo pode solicitar mais tempo para concluir uma tarefa específica, como renovar o registro de notificação por push.

As seções a seguir descrevem como você pode usar tarefas em segundo plano para renovação de registro.

Configurar a atualização automática de tokens de acesso do usuário

Para garantir o acesso ininterrupto aos serviços de chat, é necessário manter os tokens de acesso do usuário válidos. Os tokens normalmente têm um período de validade padrão de 24 horas. Depois disso, eles expiram e exigem renovação. Implementar um mecanismo de atualização automática ajuda a garantir que o token seja válido sempre que o aplicativo de chat for ativado.

O SDK de Chat simplifica o gerenciamento de tokens automatizando o processo de atualização quando um atualizador de token de acesso personalizado é implementado. Conclua as seguintes etapas para configurar seu aplicativo de chat para dar suporte à atualização automática de token:

  1. Para ajudar a garantir que seu aplicativo de chat mantenha o acesso contínuo e seguro do usuário, você precisa implementar uma camada de serviço dedicada à emissão de tokens. Uma opção é usar o Azure Functions para essa finalidade.

    Para criar uma função do Azure, consulte o artigo Criar um serviço de acesso de usuário confiável usando o Azure Functions. Ele descreve como configurar seu aplicativo de funções e implantar o código necessário para emitir tokens.

  2. Depois de configurar sua função do Azure:

    1. Obtenha a URL do emissor do token no portal do Azure. Seu aplicativo de chat usa essa URL para solicitar novos tokens.

    2. Crie e integre o atualizador de token em seu aplicativo de chat. Esse componente solicita tokens novos e inicializa o cliente de chat para renovação direta de token automático.

      O código de exemplo para o atualizador de token e sua integração com o cliente de chat estão disponíveis no repositório GitHub para aplicativos de exemplo.

Habilitar e agendar tarefas em segundo plano

Para ativar e agendar tarefas em segundo plano em seu aplicativo iOS, siga as etapas no artigo da Apple Usando tarefas em segundo plano para atualizar seu aplicativo.

Para implementação prática, consulte o repositório do GitHub para obter aplicativos de exemplo. O exemplo fornecido usa BGProcessingTask configurado para iniciar no máximo um minuto no futuro, demonstrando como buscar dados com eficiência em segundo plano.

Solução 2: Notificação remota

Uma notificação remota é o mecanismo para aplicativos iOS executarem tarefas em segundo plano em resposta a gatilhos externos. Você pode usar notificações remotas para tarefas como atualizar registros sem intervenção do usuário.

Para usar notificações remotas para executar uma tarefa em segundo plano:

  1. Implementar um mecanismo de gatilho.

    Por exemplo, você pode usar um aplicativo de funções do Azure como o mecanismo de gatilho. Ele permite que você execute o código em resposta a vários gatilhos, incluindo solicitações HTTP, portanto, é útil para iniciar notificações por push silenciosas. Lembre-se de implementar o registro do dispositivo no seu lado para que o aplicativo de funções saiba onde entregar as notificações.

  2. Configure um hub de notificação.

    O serviço do Hub de Notificações do Azure fornece uma infraestrutura de notificação por push escalonável que pode enviar notificações para qualquer plataforma (iOS, Android, Windows e assim por diante) de qualquer back-end (na nuvem ou no local).

    Você pode reutilizar o mesmo hub de notificações que usa para notificação por push regulares. Se quiser configurar um novo, consulte Documentação dos Hubs de Notificações do Microsoft Azure.

  3. Configure o aplicativo de funções do Azure para notificações regulares.

    Ajuste o aplicativo de funções para enviar periodicamente notificações remotas por meio do hub de notificação. Essas notificações são encaminhadas para APNs e direcionadas para o dispositivo especificado. Para obter mais instruções, consulte a Associação de saída dos Hubs de Notificação para o Azure Functions.

  4. Manipular notificações em seu aplicativo.

    Em seu aplicativo iOS, implemente o método de instância do aplicativo para disparar uma atualização automática do registro ao receber uma notificação silenciosa.

Para obter mais informações, consulte o artigo da Apple Configurando um servidor de notificação remota.