Habilitar notificações por push em seu aplicativo de chat

Este tutorial orientará você a habilitar a notificação por push em seu aplicativo IOS usando o SDK do Chat de Comunicação do Azure.
As notificações por push alertam clientes sobre mensagens de entrada em uma thread de chat em situações em que o aplicativo móvel não está sendo executado no primeiro plano. Os Serviços de Comunicação do Azure dão suporte a duas versões das notificações por push.

  • Basic Version: o usuário poderá ver um número de notificação 1 no ícone do aplicativo, receber um som de notificação e ver uma faixa de alerta pop-up.

  • Advanced Version: Exceto para os recursos suportados na versão básica, a Contoso poderá personalizar a seção de visualização de mensagem title & no banner de alerta.

    Screenshot of basic version of push notification.

    [Versão básica]

    Screenshot of advanced version of push notification.

    [Versão avançada]

Código de download

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

Pré-requisitos

  1. Concluir todas as etapas de pré-requisito no Guia de Início Rápido do Chat

  2. Configuração do ANH
    Crie um hub de notificações do Azure na mesma assinatura que o recurso de serviços de comunicação e vincule o hub de notificações ao recurso de Serviços de Comunicação. Confira Provisionamento do Hub de Notificações.

  3. Configuração do certificado APNS
    Aqui, recomendamos criar um certificado APNS .p12 e configurá-lo no hub de notificações.

    If you are not a Microsoft internal client, siga as etapas 1 a 9.
    If you are a Microsoft internal client, envie um tíquete aqui e forneça a ID do pacote do aplicativo para obter um certificado .p12. Depois de obter um certificado válido emitido, execute a etapa 9.

  • Etapa 1: faça logon no Portal do Desenvolvedor da Apple. Navegue até Certificates, IDs & Profiles > Identifiers > App IDs e clique na ID do Aplicativo associada ao seu aplicativo.

    Screenshot of APNS Cert Configuration step 1.
  • Etapa 2: na tela da ID do aplicativo, verifique Capabilities > Push Notifications. Clique em Salvar e responda "Confirmar" à caixa de diálogo Modificar Recursos do Aplicativo exibida.

    Screenshot of APNS Cert Configuration step 2-1.Screenshot of APNS Cert Configuration step 2-2.
  • Etapa 3: na mesma página, clique em Capabilities > Push Notifications > Configure. Clique em um dos seguintes botões:

    • Certificado SSL de Desenvolvimento > Criar Certificado (para testar notificações por push durante o desenvolvimento de um aplicativo iOS)
    • Certificado SSL de Produção > Criar Certificado (para enviar notificações por push na produção)
    Screenshot of APNS Cert Configuration step 3.
  • Etapa 4: em seguida, você será direcionado para página abaixo. Aqui, você carregará uma CSR (Solicitação de Assinatura de Certificado). Siga a próxima etapa para criar uma CSR.

    Screenshot of APNS Cert Configuration step 4.
  • Etapa 5: em uma nova guia do navegador, siga esta página de ajuda para criar uma CSR e salve o arquivo como "Nome do aplicativo.cer".

    Screenshot of APNS Cert Configuration step 5 - 1.Screenshot of APNS Cert Configuration step 5 - 2.
  • Etapa 6: arraste o arquivo .cer para a área "Escolher Arquivo". Depois clique em "continuar" no canto superior direito.

    Screenshot of APNS Cert Configuration step 6.
  • Etapa 7: clique em "Download" e salve o arquivo no disco local.

    Screenshot of APNS Cert Configuration step 7.
  • Etapa 8: abra o arquivo .cer que você baixou; ele abrirá o Acesso de Conjunto de Chaves. Selecione seu certificado, clique com o botão direito do mouse e exporte seu certificado no formato .p12.

    Screenshot of APNS Cert Configuration step 8.
  • Etapa 9: vá para o hub de notificação, clique em "Apple (APNS)" em Configurações e selecione "Certificado" no Modo de Autenticação. Selecione também o Modo de Aplicativo com base em sua necessidade. Depois carregue o arquivo .p12 que você acabou de criar.

    Screenshot of APNS Cert Configuration step 9.
  1. Configuração do XCode
  • No XCode, acesse Signing & Capabilities. Adicione uma capacidade selecionando “+ Capacidade” e,em seguida, selecione “Notificações por Push”.

  • Adicione outra capacidade selecionando “+ Capacidade” e, em seguida, selecione “Modos de Segundo Plano”. Selecione também "Notificações Remotas" em Modos de Segundo Plano.

Screenshot of Enable Push Notifications and Background modes in Xcode.
  • Definir "Exigir apenas API segura para extensão de aplicativo" como "Não" para o destino do pod - AzureCore

Implementação

1: Versão básica

Se você quiser implementar uma versão básica da notificação por push, precisará se registrar para notificações remotas com o APNS (Apple Push Notification Service). Consulte o código de exemplo para ver a implementação relacionada em AppDelegate.swift.

2: 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 criptografamos o conteúdo do cliente (por exemplo, conteúdo da mensagem do chat, nome de exibição do remetente etc.) no conteúdo da notificação por push e isso requer alguma solução alternativa por sua parte.

  • Item 1: Armazenamento de dados para chaves de criptografia

Primeiro, você deve criar um armazenamento de dados persistente no dispositivo IOS. Esse armazenamento de dados deve ser capaz de compartilhar dados entre o aplicativo principal e as extensões do aplicativo (consulte o Item 2 para obter mais informações sobre Extensão do aplicativo – Extensão do serviço de notificação).

Em nosso código de exemplo, escolheremos "grupo de aplicativos" como o armazenamento de dados. Abaixo estão as etapas sugeridas para criar e usar "grupo de aplicativos":

Siga as etapas em Adicionar uma capacidade para adicionar a capacidade Grupos de Aplicativos aos destinos do aplicativo, tanto o aplicativo principal quanto a extensão de serviço de notificação (consulte o Item 2 sobre como criar uma Extensão de Serviço de Notificação).

Siga também as etapas neste documento oficial da Apple para configurar o grupo de aplicativos. Confirme se o aplicativo principal e a extensão do aplicativo têm o mesmo nome de contêiner.

  • Item 2: Extensão de Serviço de Notificação

Em segundo lugar, você deve implementar uma "Extensão de Serviço de Notificação" empacotada com o aplicativo principal. Isso é usado para descriptografar o conteúdo da notificação por push ao recebê-la.

Acesse este documento oficial da Apple. Siga a etapa "Adicionar uma Extensão de Aplicativo de Serviço ao seu projeto" e "Implementar os métodos de manipulador da sua extensão".

Observe que, na etapa "Implementar métodos de manipulador da sua extensão", a Apple fornece o código de exemplo para descriptografar dados e seguiremos a estrutura geral. No entanto, como usamos o SDK de chat para descriptografia, precisamos substituir a parte começando por “// Try to decode the encrypted message data.” por nossa lógica personalizada. Consulte o código de exemplo para ver a implementação relacionada em NotificationService.swift.

  • Item 3: implementação do protocolo PushNotificationKeyStorage

Em terceiro lugar, PushNotificationKeyStorage é obrigatório para a versão avançada. Como usuário do SDK, você pode usar a classe padrão AppGroupPushNotificationKeyStorage fornecida pelo SDK de chat. Se você não usar App Group como armazenamento de chaves ou quiser personalizar métodos de armazenamento de chaves, crie sua própria classe que esteja em conformidade com o protocolo PushNotificationKeyStorage.

Para PushNotificationKeyStorage, ele define dois métodos: onPersistKey(encryptionKey:expiryTime) e onRetrieveKeys() -> [String].

O primeiro método é usado para persistir a chave de criptografia no armazenamento do dispositivo IOS do usuário. O SDK de Chat definirá 45 minutos como o tempo de expiração da chave de criptografia. Se quiser que a notificação por push entre em vigor por mais de 45 minutos, você precisará agendar uma chamada chatClient.startPushNotifications(deviceToken:) relativamente frequente (por exemplo, a cada 15 minutos) para que uma nova chave de criptografia possa ser registrada antes que a chave antiga expire.

O segundo método é usado para recuperar as chaves válidas armazenadas anteriormente. Você tem a flexibilidade de fornecer a personalização com base no armazenamento de dados (item 1) escolhido.

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

Testando

  1. Crie um thread de chat com o usuário A e o usuário B.

  2. Baixe o repositório de aplicativo de exemplo e siga as etapas acima na seção de pré-requisitos e implementação.

  3. Coloque o <ACESS_TOEKN> 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, execute o programa e clique em "permitir" quando solicitado a autorizar a notificação por push no dispositivo.

  6. Como usuário B, envie uma mensagem de chat. Você (usuário A) deve ser capaz de receber uma notificação por push em seu dispositivo IOS.