Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Certaines applications peuvent envoyer des commentaires aux EMM sous la forme d'applications clés
de sortie. Un état d'application à clé est constitué d'un identifiant unique (clé),
message correspondant (facultatif), données lisibles par un ordinateur (facultatif), niveau de gravité
l'état et le code temporel. Pour les envoyer, une application doit s'intégrer
Bibliothèque Enterprise Jetpack
En tant qu'EMM, vous pouvez utiliser les données des états d'application clés pour que les administrateurs informatiques
des applications installées sur les profils et appareils gérés. Exemple
pour en savoir plus, consultez la section Afficher des commentaires aux entreprises.
Activer les rapports sur les appareils
Les applications envoient des états d'application clés pour chaque appareil. Avant tout état d'application à clavier
dans n'importe quelle application installée sur l'appareil, vous devez l'activer
pour un appareil donné. Tant que les règles ne sont pas mises à jour sur l'appareil,
sont ignorés et perdus à jamais. Activer les rapports sur les appareils avant
finaliser l'enregistrement de l'appareil le plus tôt possible
processus. Vous êtes ainsi sûr de recevoir les commentaires sur l'application générés pendant l'appareil
l'enregistrement et qu'aucun état d'application saisi n'est perdu.
Appelez devices.update(),
en définissant policy.deviceReportPolicy sur "deviceReportEnabled".
Récupérer les rapports sur les appareils
Il existe plusieurs façons de récupérer un rapport sur les appareils:
Pour récupérer les rapports sur les appareils ainsi que d'autres notifications, appelez
enterprises.pullNotificationSet()
Dans la réponse, chaque deviceReportUpdateEvent indique un rapport sur l'appareil.
Pour récupérer un rapport sur les appareils mis à jour avec les derniers états d'application associés pour un
l'appareil spécifié, appelez devices.get().
Pour forcer un appareil à importer les derniers états de l'application, appelez
devices.forceReportUpload()
Cette méthode permet d'importer un rapport contenant les modifications apportées aux états de l'application sur la
appareil depuis la génération du dernier rapport.
Afficher les états d'application associés
Les rapports sur les appareils font partie des ressources relatives aux appareils. Les rapports incluent un appState
pour chaque application (package) installée sur l'appareil ou dans son profil professionnel.
Les états d'application saisis (keyedAppState) pour un package donné sont listés dans
appState, comme dans l'exemple ci-dessous:
{"result":{"kind":"androidenterprise#device","report":{"appState":[{"keyedAppState":[{"severity":"severityError","data":"user","message":"Username or password are incorrect","key":"account","stateTimestampMillis":"1556206406926"}],"packageName":"com.google.android.feedbacktestapp"}],"lastUpdatedTimestampMillis":"1556206407685"},"androidId":"32714368a0ad8ad5","managementType":"managedProfile","policy":{"deviceReportPolicy":"deviceReportEnabled"}}}
Chaque état d'application avec clé contient les éléments suivants:
Champ
Description
key
Clé unique identifiant l'état.
severity
La gravité de l'état: INFO indique un message informatif. (par exemple, si une configuration gérée est correctement définie). ERROR indique que l'entreprise doit prendre des mesures pour corriger un problème. (par exemple, si une configuration gérée n'a pas pu être définie).
message
Chaîne facultative fournissant des détails sur l'état de l'application. Nous recommandons aux développeurs d'applications de traiter ce champ comme un message visible par l'utilisateur.
data
Chaîne facultative qui fournit aux fournisseurs EMM des détails lisibles par ordinateur sur l'état de l'application. Par exemple, une valeur qu'un administrateur informatique peut interroger dans votre console, telle que "notify me if the battery_warning data < 10".
stateTimestampMillis
Code temporel (en millisecondes) indiquant la date et l'heure de la dernière mise à jour de l'état de l'application sur l'appareil.
lastUpdatedTimestampMillis
Code temporel (en millisecondes) indiquant l'état de la dernière importation de l'application à clé par l'appareil.
Diffuser des commentaires sur l'application auprès des entreprises
Les applications peuvent envoyer des commentaires pour diverses raisons. Toutefois, l'utilisation la plus courante
l'envoi d'états d'application clés est de fournir des commentaires sur les
de configuration. Exemple :
L'application tente d'appliquer les configurations. Pour chaque configuration, l'application
envoie un état d'application à clé indiquant son état (par exemple, une confirmation
(message ou notification d'erreur).
À partir des informations des états d'application à clé, votre console EMM affiche les
l'état des configurations gérées de manière conviviale.
Alerter les administrateurs informatiques en cas d'erreurs
Un état d'application associé au niveau de gravité ERROR indique que l'organisation doit effectuer
l’action afin de corriger
un problème. Les EMM doivent toujours alerter les organisations
aux erreurs, via leur console EMM ou par d'autres moyens. Par exemple, votre
La console EMM peut afficher un tableau de bord des erreurs lié aux commentaires
un appareil donné avec des erreurs.
Si un état d'erreur est corrigé, l'application envoie un état de suivi avec la même clé.
en tant qu'état d'erreur d'origine et la gravité INFO a été mise à jour. Les EMM doivent
informer toujours les organisations dès qu'une erreur est corrigée. Par exemple :
supprimez l'erreur du tableau de bord des erreurs de votre console ou marquez-la comme résolue.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/31 (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/08/31 (UTC)."],[[["\u003cp\u003eKeyed app states allow apps to send feedback to EMMs, offering insights into app status and managed configuration outcomes on devices.\u003c/p\u003e\n"],["\u003cp\u003eEMMs need to enable device reports to receive keyed app states, ensuring data is collected and no feedback is lost.\u003c/p\u003e\n"],["\u003cp\u003eDevice reports containing keyed app states can be retrieved through various API calls for monitoring app behavior and managed configuration status.\u003c/p\u003e\n"],["\u003cp\u003eKeyed app states provide valuable information, including severity level, timestamps, and optional messages or machine-readable data, enabling EMMs to display meaningful feedback to IT admins.\u003c/p\u003e\n"],["\u003cp\u003eEMMs should prioritize alerting IT admins to errors indicated by keyed app states and ensure timely updates when errors are resolved to facilitate efficient device management and troubleshooting.\u003c/p\u003e\n"]]],[],null,["# Retrieve feedback from apps\n\nSome apps are capable of sending feedback to EMMs in the form of **keyed app\nstates** . A keyed app state is made up of a unique identifier (key),\ncorresponding message (optional), machine-readable data (optional), severity\nstatus, and timestamp. To send them, an app needs to integrate with the\n[Enterprise Jetpack library](https://developer.android.com/reference/androidx/enterprise/feedback/package-summary).\n\nAs an EMM, you can use the data from keyed app states to keep IT admins\nup-to-date with the apps installed on managed devices and profiles. An example\nof how this might work is described in [Display feedback to enterprises](#display_app_feedback_to_enterprises).\n\nEnable device reports\n---------------------\n\nApps send keyed app states on a per-device basis. Before any keyed app states\nare accepted from any of the apps on the device, you need to enable the device\nreports for a device. Until the policy is updated on the device, any keyed app\nstates are ignored and lost forever. Enable device reports **before**\ncompleting device enrollment, as early as possible in the enrollment\nprocess. This ensures that you receive app feedback generated during device\nenrollment and that no keyed app states are lost.\n\n- Call [`devices.update()`](/android/work/play/emm-api/v1/devices/update), setting `policy.deviceReportPolicy` to `\"deviceReportEnabled\"`.\n\nRetrieve device reports\n-----------------------\n\nThere are several ways to retrieve a device report:\n\n- To retrieve device reports along with other notifications, call [`enterprises.pullNotificationSet()`](/android/work/play/emm-api/v1/enterprises/pullNotificationSet). In the response, each `deviceReportUpdateEvent` denotes a device report.\n- To retrieve a device report updated with the latest keyed app states for a specified device, call [`devices.get()`](/android/work/play/emm-api/v1/devices/get).\n- To force a device to upload the latest app states, call [`devices.forceReportUpload()`](/android/work/play/emm-api/v1/devices/forceReportUpload). This method uploads a report containing any changes in app states on the device since the last report was generated.\n\n| **Note:** You can call [`devices.forceReportUpload()`](/android/work/play/emm-api/v1/devices/forceReportUpload) up to three times every 24 hours for a given device. Typically, the device uploads app feedback at least once per day. Calling `devices.forceReportUpload()` triggers the device to upload app feedback as soon as possible. The device requires connectivity to ensure timely app feedback delivery. Keep in mind that method uses time, data, and battery on the device. Therefore, limit your usage of this method to infrequent actions that require timely delivery of app feedback.\n\nView keyed app states\n---------------------\n\nDevice reports are a part of device resources. Reports include an `appState`\nobject for each app (package) installed on the device or in its work profile.\nKeyed app states (`keyedAppState`) for a given package are listed in\n`appState` object, like in the example below: \n\n {\n \"result\":{\n \"kind\":\"androidenterprise#device\",\n \"report\":{\n \"appState\":[\n {\n \"keyedAppState\":[\n {\n \"severity\":\"severityError\",\n \"data\":\"user\",\n \"message\":\"Username or password are incorrect\",\n \"key\":\"account\",\n \"stateTimestampMillis\":\"1556206406926\"\n }\n ],\n \"packageName\":\"com.google.android.feedbacktestapp\"\n }\n ],\n \"lastUpdatedTimestampMillis\":\"1556206407685\"\n },\n \"androidId\":\"32714368a0ad8ad5\",\n \"managementType\":\"managedProfile\",\n \"policy\":{\n \"deviceReportPolicy\":\"deviceReportEnabled\"\n }\n }\n }\n\nEach keyed app states contains the following:\n\n| Field | Description |\n|------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `key` | The unique key identifying the state. |\n| `severity` | The severity of the state: `INFO` indicates an informative message. For example if a managed configuration is set successfully. `ERROR` indicates the enterprise needs to take action to correct a problem. For example, if a managed configuration failed to set. |\n| `message` | An optional string providing details about the app state. App developers are advised to treat this field as a user-facing message. |\n| `data` | An optional string providing computer-readable details to EMMs about the app state. For example, a value that an IT admin could query against in your console, such as \"notify me if the battery_warning data \\\u003c 10\". |\n| `stateTimestampMillis` | The timestamp (in milliseconds) indicating when the app state was last updated on the device. |\n| `lastUpdatedTimestampMillis` | The timestamp (in milliseconds) indicating when the device last uploaded keyed app states. |\n\nDisplay app feedback to enterprises\n-----------------------------------\n\nApps can send feedback for a variety of reasons. However, the most common use\ncase for sending keyed app states is to provide feedback about managed\nconfigurations. For example:\n\n1. An IT admin uses your EMM console to [set managed configurations](/android/work/play/emm-api/managed-configurations#specify_managed_configurations) for an app.\n2. In the backend, you [send the configurations to the app](/android/work/play/emm-api/managed-configurations#apply_managed_configurations).\n3. The app attempts to apply the configurations. For each configuration, the app sends a keyed app state indicating its status (for example, a confirmation message or error notification).\n4. To view these keyed app states, you [retrieve a device report](#retrieve_device_reports).\n5. Using information from the keyed app states, your EMM console displays the status of the managed configurations in a user-friendly way.\n\n### Alert IT admins to errors\n\nA keyed app state with severity `ERROR` indicates the organization needs to take\naction in order to correct a problem. EMMs should **always** alert organizations\nto errors, either through their EMM console or other means. For example, your\nEMM console could display an error dashboard that links to the feedback for a\ngiven device with errors.\n\nIf an error state is corrected, the app send a follow-up state with the same key\nas the original error state and an updated severity of `INFO`. EMMs should\n**always** inform organizations as soon as an error is corrected. For example,\nremove the error from your console's error dashboard or mark it as resolved.\n| **Tip:** Add support for IT admins to mute a specific error in case an app fails to correctly update an error state after the error is resolved."]]