Partilhar 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 de Chat dos Serviços de Comunicação do Azure.

As notificações por push alertam os usuários sobre mensagens recebidas em um thread de bate-papo quando o aplicativo móvel não está sendo executado em primeiro plano. Os Serviços de Comunicação do Azure dão suporte a duas versões de notificações por push:

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

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

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

    Captura de ecrã da versão avançada de uma notificação push.

Neste tutorial:

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

Transferir código

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

Pré-requisitos

Crie um certificado de APNs .p12 e defina-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 seu aplicativo para obter um certificado .p12. Em seguida, pule para a última etapa do procedimento a seguir.

  1. Inicie sessão no Apple Developer Portal.

  2. Aceda a Certificados, Identificadores e Identificadores de Perfis>IDs da>aplicação e, em seguida, selecione o ID da aplicação associado à sua aplicação.

    Captura de tela que mostra seleções para escolher um ID de aplicativo.

  3. Na página do ID do aplicativo, selecione Notificações por push de recursos>e, em seguida, selecione Salvar.

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

  4. Na caixa de diálogo Modificar recursos do aplicativo exibida, selecione Confirmar.

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

  5. Na página do ID do aplicativo, selecione Configurar Notificações>por Push>de Recursos e faça a seguinte escolha:

    • Para testar notificações por push durante o desenvolvimento de um aplicativo iOS, selecione o botão Criar certificado em 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 opções para criar um certificado de desenvolvimento ou um certificado de produção.

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

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

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

    1. Em uma nova guia do navegador, siga esta página de ajuda da Apple para criar um CSR e salvar o arquivo como App name.cer. As instruções incluem o uso do Assistente de Certificado para solicitar um certificado e preencher as 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 Transferir.

    Captura de ecrã do botão para transferir 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 .cer ficheiro que transferiu. Em Acesso às Chaves, selecione o certificado, clique com o botão direito do rato no mesmo e, em seguida, exporte o certificado no formato .p12.

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

    • Em Modo de autenticação, selecione Certificado.
    • Para Carregar Certificado, carregue o arquivo .p12 que você acabou de criar.
    • Para o Modo de Aplicação, selecione o modo com base na sua necessidade.

    Quando terminar de inserir 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. No Xcode, vá para Assinando & Recursos.

  2. Adicione uma funcionalidade selecionando + Capacidade e, em seguida, selecione Notificações push.

  3. Adicione outro recurso selecionando + Capacidade e, em seguida, selecione Modos em 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 de plano de fundo no Xcode.

  5. Para Pod Target - AzureCore, defina Require Only App-Extension-Safe API como No.

Implementar notificações por push

Versão básica

Se você quiser implementar uma versão básica de notificações push, você precisa se registrar 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 de notificações por push, precisará incluir os seguintes itens em seu aplicativo. O motivo é que a criptografia do conteúdo do cliente (por exemplo, conteúdo da mensagem de bate-papo e nome de exibição do remetente) em cargas úteis de notificação por push requer algumas soluções alternativas.

Armazenamento de dados para chaves de encriptação

Crie 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 do aplicativo.

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

Extensão do serviço de notificação

Implemente a Extensão de Serviço de Notificação fornecida com o aplicativo principal. Esta 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 para este tutorial. No entanto, como você está usando o SDK de // Try to decode the encrypted message data bate-papo para descriptografia, você precisa substituir a parte que começa com lógica personalizada. Consulte o código de exemplo para ver a implementação relacionada em NotificationService.swift.

Implementação do protocolo PushNotificationKeyStorage

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

PushNotificationKeyStorage define dois métodos:

  • onPersistKey(encryptionKey:expiryTime): Este método é usado para persistir a chave de criptografia no armazenamento do dispositivo iOS do usuário. O SDK do Chat define 45 minutos como o tempo de expiração da chave de criptografia. Se quiser que as notificações push estejam em vigor por mais de 45 minutos, você precisa agendar uma chatClient.startPushNotifications(deviceToken:) chamada 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]: Este 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 bate-papo fornece uma implementação do decryptPayload(notification:) -> PushNotificationEvent método que você pode usar. Consulte o código de exemplo para ver a implementação relacionada em NotificationService.swift.

Teste suas notificações

  1. Crie um tópico de bate-papo com o Usuário A e o Usuário B.

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

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

  4. Defina Ativar Bitcode como Não para dois destinos Pod: AzureCommunicationChat e Trouter.

  5. Ligue o dispositivo iOS ao Mac e execute o programa. Quando lhe for pedido para autorizar notificações push no dispositivo, selecione Permitir.

  6. Como Usuário B, envie uma mensagem de bate-papo. Confirme se o Utilizador A recebe uma notificação push no dispositivo iOS.

Implementar a renovação do registo

Para que a Microsoft forneça um serviço de chat seguro, o registro para notificações por push em dispositivos iOS permanece válido por apenas 45 minutos. Para manter a funcionalidade de notificações push, você precisa implementar a renovação de registro no aplicativo cliente.

Este tutorial propõe duas soluções que estão alinhadas com as diretrizes oficiais da Apple. Recomendamos que implemente ambas as soluções em conjunto para aumentar a sua eficácia.

Nota

Vários fatores podem influenciar a eficácia de qualquer uma das soluções. 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 do aplicativo e o artigo Enviando atualizações em segundo plano para seu aplicativo da Apple.

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 acesso ininterrupto aos serviços de chat, você precisa manter tokens de acesso de usuário válidos. Os tokens normalmente têm um período de validade padrão de 24 horas, após o qual expiram e exigem renovação. A implementação de 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 do Chat simplifica o gerenciamento de tokens automatizando o processo de atualização quando uma atualização de token de acesso personalizado é implementada. Conclua as seguintes etapas para configurar seu aplicativo de chat para oferecer suporte à atualização automática de tokens:

  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ção e implantar o código necessário para a emissão de tokens.

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

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

    2. Crie e integre a atualização de token em seu aplicativo de chat. Este componente solicita novos tokens e inicializa o cliente de bate-papo para renovação automática de token perfeita.

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

Habilitar e agendar tarefas em segundo plano

Para ativar e agendar tarefas em segundo plano na sua aplicação iOS, siga os passos indicados no artigo da Apple Utilizar tarefas em segundo plano para atualizar a sua aplicação.

Para implementação prática, consulte o repositório GitHub para aplicativos de exemplo. O exemplo fornecido usa BGProcessingTask configurado para iniciar não antes de um minuto no futuro, demonstrando como buscar dados em segundo plano de forma eficiente.

Solução 2: Notificação remota

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

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

  1. Implementar um mecanismo de acionamento.

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

  2. Configure um hub de notificação.

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

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

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

    Ajuste o aplicativo de função para enviar periodicamente notificações remotas através 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 Vinculação de saída dos Hubs de Notificação para o Azure Functions.

  4. Lide com 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 remoto.