Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Arrière-plan
Ce document explique comment intégrer, tester et valider la fonctionnalité d'archivage RCS dans Google Messages.
Présentation de la solution
Archivage côté client : les fournisseurs d'archivage doivent développer une application Android que les administrateurs informatiques pourront déployer sur leurs appareils gérés.
Optimisé par Google Messages : cette fonctionnalité nécessite que Google Messages soit l'application de chat par défaut. Les administrateurs informatiques peuvent utiliser les commandes Android Enterprise pour appliquer cette application par défaut.
Nécessite Android Enterprise : cette fonctionnalité n'est disponible que sur les appareils entièrement gérés.
Workflow
Figure 1. Workflow d'archivage RCS.
L'administrateur informatique déploie l'application d'archivage à l'aide d'Android Enterprise.
Facultatif : L'administrateur informatique configure l'application d'archivage de manière programmatique à l'aide des commandes Android Enterprise.
Obligatoire :
L'application d'archivage a besoin de l'autorisation READ_SMS
L'administrateur informatique impose Google Messages comme client SMS/RCS par défaut
Si la solution d'archivage est compatible avec MCM, l'administrateur informatique peut également pré-enregistrer l'application d'archivage à l'aide de MCM.
L'administrateur informatique active l'archivage dans Google Messages à l'aide de MCM.
Google Messages écrit les données des messages dans Android lors des événements de message.
Un événement de message peut être un message envoyé, reçu, modifié ou supprimé.
L'application d'archivage lit les données des messages du fournisseur Telephony.
L'application d'archivage regroupe les mises à jour et les envoie au serveur.
Implémentation
Schéma MCM de Google Messages
L'archivage est configuré dans Google Messages à l'aide de la clé messages_archival, qui accepte une valeur de chaîne permettant aux administrateurs de spécifier leur application d'archivage par nom de package. Si la valeur est vide ou nulle, ou si la clé n'est pas présente, l'archivage est désactivé. Si la valeur est spécifiée, l'archivage est activé et Google Messages envoie une diffusion explicite au nom de package spécifié lors d'un événement de message.
Notification à l'application d'archivage
Une diffusion explicite est envoyée à l'application archia spécifiée, avec l'action :
GOOGLE_MESSAGES_ARCHIVAL_UPDATE
Dans certains cas, l'URI du message est inclus dans les extras de diffusion, qui peuvent être utilisés pour récupérer le message qui a déclenché la diffusion :
com.google.android.apps.messaging.EXTRA_ARCHIVAL_URI
Déclarez un service de premier plan dans votre fichier manifeste, qui inclut le filtre d'intent pour la diffusion de la mise à jour de l'archivage et qui est autorisé pour garantir que seul Google Messages peut démarrer le service.
Implémentez ce service pour gérer l'intent, lire à partir de la téléphonie et déterminer le type d'événement de message en comparant l'état précédent de la téléphonie à l'état actuel. Ensuite, mettez en cache l'événement de message à importer dans le backend du service d'archivage et l'état mis à jour de la téléphonie à comparer lors du prochain événement.
Recommandations :
Mises à jour par lot des événements de message sur le serveur avec JobScheduler.
Les administrateurs informatiques peuvent s'assurer que votre application n'est pas arrêtée ou que les données de votre application ne sont pas supprimées par les utilisateurs, ce qui permet à vos mises à jour par lot de se dérouler comme prévu.
En réduisant la durée du service de premier plan aux exigences d'archivage critiques, vous minimisez l'impact sur l'expérience utilisateur et l'intégrité du système.
Activez la configuration programmatique de votre application à l'aide de MCM (comme indiqué dans le schéma MCM des messages), afin que les utilisateurs n'aient pas besoin de se connecter ni de spécifier manuellement les détails de l'enregistrement du serveur.
Tests
Pour tester votre implémentation, utilisez TestDPC ou le client EMM de votre choix.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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."]]