Arquivamento de mensagens RCS do Google

Contexto

Este documento descreve como integrar, testar e validar o recurso de arquivamento de RCS no Google Mensagens.

Visão geral da solução

  • Arquivamento do lado do cliente:os fornecedores de arquivamento precisam desenvolver um app Android para que os administradores de TI implantem nos dispositivos gerenciados.
  • Com tecnologia do Google Mensagens:esse recurso exige que o Google Mensagens seja o app de mensagens padrão. Os administradores de TI podem usar os controles do Android Enterprise para aplicar o padrão.
  • Requer o Android Enterprise:esse recurso está disponível apenas em dispositivos totalmente gerenciados.

Fluxo de trabalho

Fluxo de trabalho para arquivamento de mensagens RCS
Figura 1. Fluxo de trabalho de arquivamento do RCS.
  1. O administrador de TI implanta o app de arquivamento usando o Android Enterprise.
  2. Opcional: o administrador de TI configura o app de arquivamento de maneira programática usando controles do Android Enterprise.
    • Obrigatório:
      • O app de arquivamento precisa da permissão READ_SMS
    • Recomendado:
      • Não permitir o controle do usuário sobre o Google Mensagens e o app de arquivamento
      • O administrador de TI impõe o Google Mensagens como o cliente padrão de SMS/RCS
      • Opcionalmente, o administrador de TI também pode pré-registrar o app de arquivamento usando o MCM, se a solução de arquivamento for compatível com o MCM.
  3. O admin de TI ativa o arquivamento no Google Mensagens usando o MCM.
  4. O Google Mensagens grava dados de mensagens no Android em eventos de mensagens. Um evento de mensagem é um dos seguintes: mensagem enviada, mensagem recebida, mensagem editada ou mensagem excluída.
  5. O Google Mensagens notifica o app de arquivamento sobre novos eventos de mensagens, tanto para mensagens RCS quanto SMS/MMS.
  6. O app de arquivamento lê os dados da mensagem do provedor Telephony.
  7. O app de arquivamento agrupa as atualizações e as envia ao servidor.

Implementação

Esquema da MCM do Google Mensagens

O arquivamento é configurado no Google Mensagens usando a chave messages_archival, que aceita um valor de string para que os administradores especifiquem o app de arquivamento por nome do pacote. Se o valor estiver vazio, nulo ou a chave não estiver presente, o arquivamento será desativado. Se o valor for especificado, o arquivamento será ativado, e o Google Mensagens enviará uma transmissão explícita para o nome do pacote especificado em um evento de mensagem.

Notificação para o app de arquivamento

  • Uma transmissão explícita é enviada ao app de arquitetura especificado com a ação: GOOGLE_MESSAGES_ARCHIVAL_UPDATE
  • Em alguns casos, o URI da mensagem é incluído nos extras da transmissão, que podem ser usados para buscar a mensagem que acionou a transmissão: com.google.android.apps.messaging.EXTRA_ARCHIVAL_URI

Requisitos para apps arquivados

Obrigatório:

  • Declare a permissão FOREGROUND_SERVICE.
  • Declare um serviço em primeiro plano no manifesto, que inclui o filtro de intent para a transmissão de atualização de arquivamento e tem permissão concedida para garantir que apenas o Google Mensagens possa iniciar o serviço.
<service
        android:enabled="true"
        android:foregroundServiceType="shortService"
        android:name=".TestService"
        android:exported="true"
        android:permission="android.permission.WRITE_SMS">
      <intent-filter>
        <action android:name="GOOGLE_MESSAGES_ARCHIVAL_UPDATE" />
      </intent-filter>
</service>
  • Implemente esse serviço para processar a intent, ler da telefonia e determinar o tipo do evento de mensagem comparando o estado anterior da telefonia com o estado atual. Em seguida, armazene em cache o evento de mensagem a ser enviado para o back-end do serviço de arquivamento e o estado atualizado da telefonia para comparar no próximo evento.

Recomendação:

  • Atualizações em lote de eventos de mensagem para o servidor com JobScheduler.

    • Os administradores de TI podem garantir que o app não seja encerrado nem os dados dele excluídos pelos usuários, garantindo que as atualizações em lote possam prosseguir conforme o esperado.
    • Minimizar o tempo do serviço em primeiro plano para apenas o requisito crítico de arquivamento minimiza o impacto na UX e na integridade do sistema.
  • Ative a configuração programática do app usando o MCM (conforme mencionado em Esquema do MCM de mensagens), para que os usuários não precisem fazer login nem especificar os detalhes de registro do servidor manualmente.

Teste

Para testar sua implementação, use o TestDPC ou o cliente de EMM preferido.