Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
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
Figura 1. Fluxo de trabalho de arquivamento do RCS.
O administrador de TI implanta o app de arquivamento usando o Android Enterprise.
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
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.
O admin de TI ativa o arquivamento no Google Mensagens usando o MCM.
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.
O Google Mensagens notifica o app de arquivamento sobre novos eventos de mensagens, tanto para
mensagens RCS quanto SMS/MMS.
O app de arquivamento lê os dados da mensagem do provedor Telephony.
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
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.
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.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[null,null,["Última atualização 2025-07-27 UTC."],[],[],null,["# RCS Google Messages archival\n\nBackground\n----------\n\nThis document outlines how to integrate with, test, and validate the RCS\narchival feature in Google Messages.\n\n### Solution overview\n\n- **Client-side archival:** Archival vendors need to develop an Android app for IT admins to deploy on their managed devices.\n- **Powered by Google Messages:** This feature requires Google Messages to be the [default messaging app](https://support.google.com/messages/answer/6089066). IT admins can use Android Enterprise controls to enforce the default.\n- **Requires Android Enterprise:** This feature is available only on fully managed devices.\n\n| **Important:** Work profiles (on neither personally-owned nor company-owned devices) are not supported.\n\n### Workflow\n\n**Figure 1.** RCS archival workflow.\n\n1. IT admin deploys archival app using Android Enterprise.\n2. **Optional** : IT admin programmatically configures archival app using Android Enterprise controls.\n - Required:\n - The archival app needs [`READ_SMS`](/reference/android/Manifest.permission#READ_SMS) permission\n - Recommended:\n - [Disallow user control](/reference/android/app/admin/DevicePolicyManager#setUserControlDisabledPackages(android.content.ComponentName,%20java.util.List%3Cjava.lang.String%3E)) over Google Messages and archival app\n - IT admin [enforces](/reference/android/os/UserManager?_gl=1*wrcrs6*_up*MQ..*_ga*MTgxMTgzNzc3NC4xNzM4NjY5MDMy*_ga_6HH9YJMN9M*MTczODY2OTAzMS4xLjAuMTczODY2OTAzMS4wLjAuMTQ0OTczNTMyMg..#DISALLOW_CONFIG_DEFAULT_APPS) Google Messages as the default SMS/RCS client\n - Optionally, IT admin can pre-enroll archival app using MCM as well, if archival solution supports MCM\n3. IT admin enables archival in Google Messages using [MCM](#google-messages-mcm-schema).\n4. Google Messages writes message data to Android on message events. A message event is one of: message sent, message received, message edited, or message deleted.\n5. Google Messages [notifies archival app](#notification-to-archival-app) of new message event, for both RCS and SMS/MMS messages.\n6. The archival app reads the message data from the [`Telephony`](/reference/android/provider/Telephony) provider.\n7. The archival app batches updates and sends them to the server.\n\nImplementation\n--------------\n\n### Google Messages MCM schema\n\nArchival is configured in Google Messages using the `messages_archival` key,\nwhich accepts a string value for admins to specify their archival app by package\nname. If the value is empty, null, or the key is not present, archival is\ndisabled. If the value is specified, archival is enabled, and Google Messages\nsends an explicit broadcast to the specified package name on a message event.\n\n### Notification to archival app\n\n- An explicit broadcast is sent to the specified archial app, with the action: `GOOGLE_MESSAGES_ARCHIVAL_UPDATE`\n- In some cases, the message URI is included in the broadcast extras, which can be used to fetch the message that triggered the broadcast: `com.google.android.apps.messaging.EXTRA_ARCHIVAL_URI`\n\n### Archival app requirements\n\n**Required:**\n\n- Claim the [FOREGROUND_SERVICE permission](/reference/android/Manifest.permission?_gl=1*ir8law*_up*MQ..*_ga*NDcyNDIyNTk3LjE3NDAzOTEzODM.*_ga_6HH9YJMN9M*MTc0MDM5MTM4My4xLjAuMTc0MDM5MTM4My4wLjAuMTM5NTk3NjU1Nw..#FOREGROUND_SERVICE).\n- Declare a foreground service in your manifest, which includes the intent filter for the archival update broadcast, and is [permission-granted](/privacy-and-security/risks/access-control-to-exported-components#permission-based-access-control-to-exported-components-mitigations) to assure only Google Messages can start the service.\n\n \u003cservice\n android:enabled=\"true\"\n android:foregroundServiceType=\"shortService\"\n android:name=\".TestService\"\n android:exported=\"true\"\n android:permission=\"android.permission.WRITE_SMS\"\u003e\n \u003cintent-filter\u003e\n \u003caction android:name=\"GOOGLE_MESSAGES_ARCHIVAL_UPDATE\" /\u003e\n \u003c/intent-filter\u003e\n \u003c/service\u003e\n\n- Implement that service to handle the intent, read from telephony, and determine the type of the message event by comparing the prior state of telephony with the current state, and then cache both the message event to be uploaded to the archival service backend, and the updated state of Telephony to compare against on the next event.\n\n**Recommended:**\n\n- Batch updates of message events to the server with [`JobScheduler`](/reference/android/app/job/JobScheduler).\n\n | **Important:** Don't attempt to sync every message event with your backend in your service.\n - IT admins can guarantee your app isn't killed or your app data deleted by users, making sure your batched updates can proceed as expected.\n - Minimizing foreground service time to just the critical archival requirement minimizes UX and system health impact.\n- Enable programmatic configuration of your app using MCM (as mentioned in\n [Messages MCM schema](#google-messages-mcm-schema)), so users don't need to sign in or specify server\n enrollment details manually.\n\nTesting\n-------\n\nTo test your implementation, use [TestDPC](https://github.com/googlesamples/android-testdpc) or your preferred EMM\nclient."]]