Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Alguns apps podem enviar feedback para EMMs na forma de app com chave
estados. O estado de um app com chave é composto por um identificador exclusivo (chave),
mensagem correspondente (opcional), dados legíveis por máquina (opcional), gravidade
status e carimbo de data/hora. Para enviá-las, um app precisa se integrar ao
Biblioteca Enterprise Jetpack.
Como EMM, você pode usar os dados de estados de apps codificados para manter os administradores de TI
atualizados com os apps instalados nos dispositivos e perfis gerenciados. Um exemplo
de como isso pode funcionar é descrito em Enviar feedback para as empresas.
Ativar relatórios do dispositivo
Os apps enviam estados com chaves por dispositivo. Antes de qualquer estado do app com chave
forem aceitos em qualquer um dos apps no dispositivo, será necessário ativá-lo
para um dispositivo. Até que a política seja atualizada no dispositivo, todos os apps
são ignorados e perdidos para sempre. Ativar relatórios do dispositivo antes
concluir o registro do dispositivo o mais cedo possível
de desenvolvimento de software. Isso garante que você receba feedback do app gerado durante
registro e para que nenhum estado de app com chave seja perdido.
Chame devices.update(),
definindo policy.deviceReportPolicy como "deviceReportEnabled".
Recuperar relatórios do dispositivo
Há várias maneiras de recuperar um relatório de dispositivo:
Para recuperar relatórios do dispositivo junto com outras notificações, chame
enterprises.pullNotificationSet()
Na resposta, cada deviceReportUpdateEvent indica um relatório de dispositivo.
Para recuperar um relatório de dispositivo atualizado com os estados mais recentes do app codificados para uma
dispositivo especificado, chame devices.get().
Para forçar um dispositivo a fazer upload dos estados mais recentes do app, chame
devices.forceReportUpload()
Esse método envia um relatório com as mudanças nos estados do app na
dispositivo desde que o último relatório foi gerado.
.
Conferir estados do app com chave
Os relatórios de dispositivos fazem parte dos recursos do dispositivo. Os relatórios incluem um appState
para cada app (pacote) instalado no dispositivo ou no perfil de trabalho dele.
Os estados do app com chave (keyedAppState) para um determinado pacote estão listados em
appState, como no exemplo abaixo:
{"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"}}}
Cada estado do app com chave contém o seguinte:
Campo
Descrição
key
A chave exclusiva que identifica o estado.
severity
A gravidade do estado INFO indica uma mensagem informativa. Por exemplo, se uma configuração gerenciada foi definida. ERROR indica que a empresa precisa entrar em ação para corrigir um problema. Por exemplo, se uma configuração gerenciada não foi definida.
message
Uma string opcional que fornece detalhes sobre o estado do app. Recomendamos que os desenvolvedores de apps tratem esse campo como uma mensagem voltada ao usuário.
data
Uma string opcional que fornece detalhes legíveis por computador aos EMMs sobre o estado do app. Por exemplo, um valor que um administrador de TI possa consultar no console, como "notificar-me se os dados de aviso_bateria < 10".
stateTimestampMillis
Carimbo de data/hora (em milissegundos) que indica quando o estado do app foi atualizado pela última vez no dispositivo.
lastUpdatedTimestampMillis
O carimbo de data/hora (em milissegundos) que indica o estado do último app com chave enviado pelo dispositivo.
Exibir feedback do app para as empresas
Os apps podem enviar feedback por vários motivos. No entanto, o uso mais comum
caso de envio de estados com chave de app é enviar feedback sobre
personalizadas. Exemplo:
O app tenta aplicar as configurações. Para cada configuração, o app
envia um estado de app com chave indicando seu status (por exemplo, uma solicitação
ou notificação de erro).
Usando informações dos estados do app criptografado, o console de EMM exibe as
o status das configurações gerenciadas
de maneira fácil de usar.
Alertar os administradores de TI sobre erros
Um estado do app com chave e gravidade ERROR indica que a organização precisa
para corrigir um problema. Os EMMs sempre devem alertar as organizações
a erros, seja pelo console de EMM ou por outros meios. Por exemplo, seu
o console de EMM pode exibir um painel de erros vinculado ao feedback de uma
dispositivo com erros.
Se um estado de erro for corrigido, o app envia um estado de acompanhamento com a mesma chave
como o estado de erro original e uma gravidade atualizada de INFO. EMMs devem
sempre informam as organizações assim que um erro é corrigido. Por exemplo:
remova o erro do painel de erros de seu console ou marque-o como resolvido.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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."]]