Ativar notificações push no seu aplicativo de bate-papo

Este tutorial irá guiá-lo para 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 os clientes sobre mensagens recebidas em um thread de bate-papo em situações em que 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.

  • Basic Version : O usuário poderá ver um número de selo de 1 no ícone do aplicativo, receber um som de notificação e ver um banner 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 título e mensagem 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]

Transferir código

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

Pré-requisitos

  1. Conclua todas as etapas de pré-requisito no Guia de início rápido do bate-papo

  2. Configuração de ANH
    Crie um Hub de Notificação do Azure na mesma assinatura que seu recurso de Serviços de Comunicação e vincule o Hub de Notificação ao seu recurso de Serviços de Comunicação. Consulte Provisionamento do Hub de Notificação.

  3. Configuração de certificado APNS
    Aqui recomendamos criar um certificado APNS .p12 e defini-lo no Hub de Notificação.

    If you are not a Microsoft internal client, siga os passos 1 a 9.
    If you are a Microsoft internal client, envie um ticket aqui e forneça o ID do pacote do seu aplicativo para obter um certificado .p12. Depois de obter um certificado válido emitido, execute a etapa 9.

  • Passo 1: Inicie sessão no Apple Developer Portal. Navegue até o Certificates, IDs & Profiles > Identifiers > App IDs ID do aplicativo associado ao seu aplicativo e clique nele.

    Screenshot of APNS Cert Configuration step 1.
  • Passo 2: Na tela do seu ID do aplicativo, marque 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.
  • Passo 3: Na mesma página, clique em Capabilities > Push Notifications > Configure. Clique num dos seguintes botões:

    • Desenvolvimento SSL Certificate Create Certificate > (para testar notificações push durante o desenvolvimento de um aplicativo iOS)
    • Certificado > SSL de Produção Criar Certificado (para envio de notificações push em produção)
    Screenshot of APNS Cert Configuration step 3.
  • Passo 4: Em seguida, você é navegado para a página abaixo. Aqui, você carregará uma Solicitação de Assinatura de Certificado (CSR). Siga o próximo passo para criar uma RSE.

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

    Screenshot of APNS Cert Configuration step 5 - 1.Screenshot of APNS Cert Configuration step 5 - 2.
  • Passo 6: Arraste o arquivo .cer para a área "Escolher arquivo". Em seguida, clique em "continuar" no canto superior direito.

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

    Screenshot of APNS Cert Configuration step 7.
  • Passo 8: Abra o arquivo de .cer que você baixou; ele abrirá o Acesso às 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.
  • Passo 9: Vá para o seu hub de notificação, clique em "Apple (APNS)" em Configurações e selecione "Certificado" em Modo de autenticação. Selecione também o Modo de Aplicação com base na sua necessidade. Em seguida, carregue o arquivo .p12 que você acabou de criar.

    Screenshot of APNS Cert Configuration step 9.
  1. Configuração do XCode
  • No XCode, vá para Signing & Capabilities. Adicione um recurso selecionando "+ Capacidade" e, em seguida, selecione "Notificações push".

  • Adicione outro recurso selecionando "+ Capacidade" e, em seguida, selecione "Modos de plano de fundo". Selecione também "Notificações remotas" em Modos de plano de fundo.

Screenshot of Enable Push Notifications and Background modes in Xcode.
  • Defina "Require Only App-Extension-Safe API" 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 do Push Notification, você precisa se registrar para notificações remotas com 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 seguintes itens em seu aplicativo. A razão é que criptografamos o conteúdo do cliente (por exemplo, conteúdo da mensagem de bate-papo, nome de exibição do remetente, etc.) na carga de notificação por push e isso requer alguma solução alternativa do seu lado.

  • 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 de Aplicativo (Consulte o Item 2 para obter mais informações sobre Extensão de Aplicativo – Extensão de 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 o "Grupo de Aplicativos":

Siga as etapas em Adicionar um recurso para adicionar o recurso Grupos de Aplicativos aos destinos do seu aplicativo – Aplicativo Principal e 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 os passos neste documento oficial da Apple para configurar o App Group. Certifique-se de que a Aplicação Principal e a Extensão da Aplicação têm o mesmo nome de contentor.

  • Item 2: Extensão do 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 a carga de notificação por push ao recebê-la.

Vá para 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 os métodos do 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 a partir de “// Try to decode the encrypted message data.” 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

Terceiro, PushNotificationKeyStorage é necessário para a versão avançada. Como usuário do SDK, você pode usar a classe padrão AppGroupPushNotificationKeyStorage fornecida pelo SDK do chat. Se você não usar App Group como o armazenamento de chaves ou quiser personalizar os 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 do chat definirá 45 minutos como o tempo de expiração da chave de criptografia. Se você quiser que a Notificação por Push entre em vigor por mais de 45 minutos, você precisa agendar uma chamada chatClient.startPushNotifications(deviceToken:) com frequência comparativa (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 decryptPayload(notification:) -> PushNotificationEvent método que você pode aproveitar. Consulte o código de exemplo para ver a implementação relacionada em NotificationService.swift.

Testar

  1. Crie um tópico de bate-papo 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 no AppSettings.plist.><>

  4. Defina "Ativar Bitcode" como "Não" para dois destinos 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 bate-papo. Você (Usuário A) deve ser capaz de receber uma notificação por push em seu dispositivo IOS.