Há dois tipos principais de identidade do usuário para registros do Android Enterprise: contas gerenciadas do Google Play e contas gerenciadas do Google. As contas gerenciadas do Google Play são focadas no dispositivo, ou seja, não estão vinculadas à identidade do Google de um usuário específico. Já as Contas do Google gerenciadas estão vinculadas à identidade corporativa do Google de um usuário, o que melhora a experiência dele, mantendo o login nos dispositivos.
As contas do Google Play gerenciado eram o padrão. No entanto, o Google agora incentiva todos os novos desenvolvimentos a usar o fluxo de inscrição aprimorado, que cria Contas do Google gerenciadas por padrão.
As orientações para a implementação mais antiga são fornecidas no final deste documento para contexto, mas todo o novo desenvolvimento precisa seguir o novo fluxo de inscrição detalhado aqui.
Visão geral
O fluxo de inscrição de dispositivos aprimorado simplifica a configuração usando vários componentes novos e mudando a forma como os controladores de política de dispositivo (DPCs) personalizados são implementados. Essa nova abordagem exige soluções personalizadas de DPC para integração com o SDK da API Android Management (AMAPI) e o Android Device Policy para realizar funções de preparação de dispositivos e inscrição de usuários.
O SDK da AMAPI fornece as APIs necessárias para interagir com a política de dispositivo Android no próprio dispositivo. No lado do servidor, as soluções de gerenciamento de mobilidade empresarial (EMM) usam a API Play EMM para gerar os tokens de inscrição necessários para iniciar o processo de inscrição do dispositivo.
O app Android Device Policy agora tem um papel central no processamento de operações do lado do dispositivo. O SDK da AMAPI é usado para gerenciar a instalação e as atualizações necessárias no dispositivo. A Android Device Policy também assume o fluxo de autenticação do usuário, processando a autenticação diretamente e fornecendo a identidade do usuário ao EMM. Se o Google não conseguir autenticar o usuário por qualquer motivo, uma nova conta do Google Play gerenciado será criada e adicionada ao dispositivo como alternativa.
Integração de API
Antes de começar, verifique se você está usando a versão mais recente do cliente da API EMM do Play e do SDK da AMAPI.
Guia de implementação da inscrição
Este guia mostra as etapas necessárias para implementar a inscrição. Ele aborda a preparação do ambiente, o processamento de diferentes métodos de inscrição e o gerenciamento do ciclo de vida do dispositivo.
prepare o ambiente
Antes de iniciar a configuração da conta, é necessário preparar o ambiente do dispositivo. Essa preparação envolve atualizar a Play Store para a iteração mais recente e instalar silenciosamente o Android Device Policy (com.google.android.apps.work.clouddpc
) no dispositivo. A instalação do Android Device Policy
é essencial porque abriga componentes críticos do processo
de configuração da conta. Os EMMs não precisam fazer a preparação manual do ambiente. Em vez disso, eles precisam usar o EnvironmentClient
, conforme documentado em e seguir os exemplos de código fornecidos.
Código de amostra
Antes de usar a API AccountSetup para adicionar a conta de trabalho ao dispositivo, o DPC precisa verificar se o ambiente do dispositivo está pronto.
Use
EnvironmentClientFactory
para instanciar umEnvironmentClient
e chameprepareEnvironment
ouprepareEnvironmentAsync
val notificationReceiverServiceName = ComponentName(context, NotificationReceiver::class.java) // An EMM should implement android.app.admin.DeviceAdminReceiver and use that // class to instantiate a ComponentName val admin = ComponentName(this, com.example.dpc.DeviceAdminReceiver::class.java) EnvironmentClientFactory.create(context) .prepareEnvironment( PrepareEnvironmentRequest.builder() .setRoles( listOf( Role.builder().setRoleType( Role.RoleType.DEVICE_POLICY_CONTROLLER ).build() ) ) .setAdmin(admin) .build(), notificationReceiverServiceName, ) [Proceed with AccountSetup]
Essa operação pode levar alguns segundos ou minutos, já que os aplicativos podem ser instalados ou atualizados para verificar um ambiente de trabalho adequado. O Google recomenda iniciar esse processo o mais cedo possível em segundo plano e mostrar a interface adequada enquanto o usuário espera. Quando a operação for concluída, o dispositivo estará pronto para o DPC usar a API AccountSetup.
Fluxo de inscrição
Os EMMs precisam parar de usar users.generateAuthenticationToken()
e users.insert()
em todos os dispositivos. Em vez disso, as EMMs precisam chamar a API no dispositivo para realizar a autenticação do usuário final. A nova API vai retornar o userId
e o
email
para o DPC. Se o Google não conseguir autenticar o usuário, uma
conta gerenciada do Google Play será criada e adicionada ao dispositivo. Nesse caso, o Google vai retornar o userId
dessa conta.
Agora, o Google apresenta o uso de tokens de inscrição, que precisam ser transmitidos para a API de autenticação. Os EMMs determinam quando e como criar o token, que pode fazer parte de uma carga de inscrição atual (por exemplo, um QR code ou configuração sem toque).
No entanto, o Google recomenda criar o token sob demanda e substituir a API atual para contas gerenciadas do Google Play pela nova API para minimizar a mudança.



O fluxo aprimorado de inscrição personalizada do DPC envolve as seguintes etapas:
- Criar token de inscrição:o EMM cria um token de inscrição usando a API EMM do Play.
- Preparar o ambiente:o DPC personalizado usa o fluxo "Preparar o ambiente" para verificar se o dispositivo está pronto para o registro.
- Iniciar inscrição:o DPC personalizado invoca a API
startAccountSetup
no SDK da AMAPI, transmitindo o token de inscrição. Observação: o DPC precisa ser o proprietário do dispositivo ou do perfil antes de chamar essa API. - Iniciar a atividade de autenticação do Google:se necessário, a DPC personalizada
invoca a
API
launchAuthenticationActivity
no SDK AMAPI, transmitindo oAccountSetupAttempt
. Isso inicia uma atividade de autenticação do Google, retornando o usuário ao DPC personalizado após a autenticação bem-sucedida. O usuário também pode pular esse processo. Nesse caso, uma conta do Google Play gerenciado será adicionada ao dispositivo. Essa opção pode ser configurada usandogoogleAuthenticationOptions
. - Finalizar inscrição:o SDK da AMAPI notifica o DPC personalizado sobre o resultado da inscrição.
- Ativar os Serviços do Google:depois que o dispositivo de um usuário com a Conta do Google gerenciada estiver em conformidade com as políticas corporativas, o EMM precisará chamar
Devices.setState()
. Essa ação permite o acesso aos Serviços do Google para a conta no dispositivo. Sem essa chamada, a Play Store e outros Serviços do Google não vão funcionar.
Configuração da conta: exemplo de código
Para iniciar uma tentativa de configuração de conta, o app de chamada pode usar
AccountSetupClient
e chamar o métodostartAccountSetup()
oustartAccountSetupFuture()
. Confira um exemplo de implementação neste exemplo de código:// Create AccountSetupClient val client = AccountSetupClientFactory.create( this, activityResultRegistry ) lifecycle.addObserver(client.lifecycleObserver) // Create adminComponent val notificationReceiver = ComponentName(this, AccountSetupNotificationReceiver::class.java) // Helper method to get enrollment token created with Play EMM API val enrollmentToken = getEnrollmentToken() val request = StartAccountSetupRequest.builder() .setEnrollmentToken(enteredText) .setNotificationReceiverServiceComponentName(notificationReceiver) .setAdminComponentName( ComponentName(this, com.example.dpc.DeviceAdminReceiver::class.java)) .build() try { val accountSetupAttempt = client.startAccountSetup(request) // handle attempt } catch (e: Exception) { // handle exception } ```
Implemente a interface
AccountSetupListener
e forneça uma implementação de como processar as atualizações de status recebidas.Estenda
NotificationReceiverService
e forneça a instânciaAccountSetupListener
criada na etapa 2 substituindogetAccountSetupListener()
.// Handles account setup changes class AccountSetupNotificationReceiver : NotificationReceiverService(), AccountSetupListener { override fun getAccountSetupListener(): AccountSetupListener = this override fun onAccountSetupChanged(accountSetupAttempt: AccountSetupAttempt) { when (accountSetupAttempt.state.kind) { StateCase.ADDED_ACCOUNT -> { val enterpriseAccount = state.addedAccount() val userId = enterpriseAccount.userId val deviceId = enterpriseAccount.deviceId // Handle account added state. } StateCase.AUTHENTICATION_ACTIVITY_LAUNCH_REQUIRED -> { val request = LaunchAuthenticationActivityRequest.builder() .setAccountSetupAttempt(accountSetupAttempt) .build(); // Send the attempt to the foreground activity to call: accountSetupClient.launchAuthenticationActivity(request) } StateCase.ACCOUNT_SETUP_ERROR -> { // Handle error state. val failureReason = state.accountSetupError().failureReason } else -> { // Handle unknown account setup attempt state. } } } } ```
Adicione a classe
NotificationReceiverService
estendida ao seuAndroidManifest.xml
e verifique se ela foi exportada.<application> <service android:name = ".accountsetup.AccountSetupNotificationReceiver" android:exported = "true" /> </application>
Se o app segmenta o SDK 30 ou versões mais recentes, um elemento "queries" é necessário no
AndroidManifest.xml
para especificar que ele vai interagir com a ADP.<queries> <package android:name="com.google.android.apps.work.clouddpc" /> </queries>
Orientação sobre testes
Esta seção fornece um conjunto de diretrizes e práticas recomendadas para testar sua implementação.
Teste PrepareEnvironment
Acessar o estado atual do dispositivo:o EMM executa
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
para conferir a versão do Android Device Policy presente no dispositivo. Se a Política de dispositivo Android não estiver instalada, uma saída vazia será esperada.
Integrar o PrepareEnvironment:o DPC personalizado invoca a API
prepareEnvironment
no SDK AMAPI, transmitindo a solicitação correta.Aguardar o resultado de "PrepareEnvironment":o DPC personalizado aguarda a conclusão de
prepareEnvironment
.Confirmar o sucesso do PrepareEnvironment:após a conclusão, o EMM é executado novamente.
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
Desta vez, a versão do Android Device Policy precisa ser mais recente do que na etapa 1.
Testar a autenticação da Conta do Google
- Criar uma empresa de teste:o EMM cria um domínio de teste do Google Enterprise
vinculado a um EMM de teste, com
enterprises.generateSignupUrl
. - Ativar a autenticação do Google:o EMM ativa a autenticação do Google para a empresa de teste seguindo estas instruções no Google Admin Console.
- Criar token de inscrição:o EMM cria um token de inscrição usando a API Play EMM com o tipo userDevice.
- Iniciar inscrição:o DPC personalizado invoca a API
startAccountSetup
no SDK da AMAPI, transmitindo o token de inscrição. - Atividade de inicialização necessária:o SDK da AMAPI notifica o DPC personalizado de que uma atividade precisa ser iniciada para autenticar o usuário.
- Autenticar o usuário:o DPC personalizado invoca
launchAuthenticationActivity
para iniciar a atividade. O usuário faz a autenticação com uma Conta do Google gerenciada (parte da empresa criada na etapa 1). - Finalizar inscrição:o SDK da AMAPI notifica o DPC personalizado sobre o resultado da inscrição.
Testar a opção de pular a autenticação do Google
Vamos usar a configuração descrita anteriormente.
Desta vez, na etapa 7, o usuário pressiona Pular em vez de fazer a autenticação com
a Conta do Google. O registro é concluído com êxito, com uma conta de serviço no dispositivo (ou seja, o
AuthenticationType
é anônimo).
Testar dispositivos sem usuário
O fluxo aprimorado de inscrição de DPC personalizado usa as seguintes etapas quando a autenticação do Google está desativada:
- Crie uma empresa de teste:pode ser a mesma empresa criada anteriormente.
- Criar um token de inscrição:o EMM cria um token de inscrição usando a API Play EMM com o tipo userlessDevice.
- Iniciar inscrição:o DPC personalizado invoca a API
startAccountSetup
no SDK da AMAPI, transmitindo o token de inscrição. - Finalizar inscrição:o SDK da AMAPI notifica o DPC personalizado sobre o resultado da inscrição.