Os dispositivos já gerenciados pelo DPC personalizado podem ser migrados para a Política de dispositivos Android (ADP) e aproveitar a API Android Management.
Pré-requisitos
- O dispositivo já é gerenciado pelo EMM com um DPC personalizado.
- O DPC personalizado é integrado ao SDK da AMAPI.
- O dispositivo está registrado na API Google Play EMM.
- O dispositivo pertence a um pacote de contas do Google Play gerenciado.
- O dispositivo usa o Android 9 ou mais recente.
- No caso de perfis de trabalho em dispositivos corporativos, o dispositivo precisa executar o Android 11 ou mais recente.
Integrar com o SDK da AMAPI na DPC personalizada
O processo de migração exige que o aplicativo DPC personalizado integre o SDK AMAPI. Confira mais informações sobre essa biblioteca e como adicioná-la ao seu app no guia de integração do SDK AMAPI.
Etapas para migrar um dispositivo
- Configure uma política que será usada pelo dispositivo depois que ele for migrado para a AMAPI. Para melhorar a experiência do usuário, isso precisa ser equivalente à política já aplicada no dispositivo pelo DPC. A política na AMAPI precisa pertencer à mesma empresa à qual o dispositivo já pertence na API Play EMM. Uma determinada empresa tem o mesmo nome na AMAPI e na API EMM do Google Play.
- Crie um token de migração para o dispositivo chamando
enterprises.migrationTokens.create
. - Envie o
value
deste token de migração para o DPC personalizado. - Verifique se o Android Device Policy está instalado no dispositivo usando a API EMM do Google Play.
- Use
DpcMigrationClientFactory
para criar umDpcMigrationClient
. - No
DpcMigrationClient
, chame o métodomigrateDeviceManagementToAndroidManagementApi
. Isso conclui a migração. - O
deviceState
muda paraACTIVE
, e você vai receber uma mensagemSTATUS_REPORT
pelo canal Pub/Sub.
Quando a migração for concluída, o app de chamada perde os privilégios de proprietário do dispositivo ou do perfil, porque eles são transferidos para o Android Device Policy. Esse processo pode ser representado pelo diagrama de sequência abaixo:
Observação:o dispositivo precisa estar conectado à Internet para iniciar a migração. O processo foi projetado para ser resilient a desconexões de rede durante o processo de migração, de modo que as principais operações que exigem conectividade de rede sejam realizadas antes da transferência real dos direitos de proprietário do dispositivo ou do perfil do DPC para o Android Device Policy.
Token de migração
Um token de migração é solicitado pelo servidor do EMM para sinalizar a intenção de migrar um dispositivo específico gerenciado por um DPC personalizado. Um token de migração pode ser usado até a migração ser concluída ou até expirar.
Integração personalizada de DPC
Primeiro, você precisa criar um DpcMigrationRequest
, transmitindo
o token e, se necessário, a lista de redes Wi-Fi configuradas para o
criador:
// Create a DpcMigrationRequest
DpcMigrationRequest request =
DpcMigrationRequest.builder()
.setMigrationToken(token)
.build();
Em seguida, use um DpcMigrationClient
e inicie o processo de migração com o migrateDeviceManagementToAndroidManagementApi
:
// Create a DpcMigrationClient
DpcMigrationClient dpcMigrationClient = DpcMigrationClientFactory.create(context);
try {
// Use helper function to retrieve Admin component name
var adminComponentName = getAdminComponent(context);
ListenableFuture<DpcMigrationAttempt> futureAttempt =
dpcMigrationClient.migrateDeviceManagementToAndroidManagementApi(
new ComponentName(context, DpcMigrationNotificationReceiver.class),
adminComponentName,
request);
// handle futureAttempt
} catch (RuntimeException e) {
// send failure feedback: "Error: " + e
}
Configurar um NotificationReceiverService
e acompanhar a migração
Implemente um NotificationReceiverService
no DPC personalizado.
O processo de migração é rastreado no dispositivo por um
DpcMigrationAttempt
.
Você pode usar diretamente o retorno de
migrateDeviceManagementToAndroidManagementApi
ou usar os métodos
getMigrationAttempt
e
listMigrationAttempts
para receber e listar
tentativas de migração.
// Passing an empty name, we retrieve the last attempt
var request = GetDpcMigrationAttemptRequest.builder().build();
var attempt = client.getMigrationAttempt(request);
Você pode configurar um DpcMigrationListener
usando
o NotificationReceiverService
para detectar
atualizações de status do DpcMigrationAttempt
.
// DpcMigrationNotificationReceiver for callback handling
public class DpcMigrationNotificationReceiver extends NotificationReceiverService
implements DpcMigrationListener {
@Override
protected DpcMigrationListener getDpcMigrationListener() {
return this;
}
@Override
public void onMigrationStateChanged(DpcMigrationAttempt migrationAttempt) {
// send success feedback
}
}
Processar redes Wi-Fi
Se houver redes Wi-Fi gerenciadas pelo DPC personalizado, a política ONC da AMAPI precisa corresponder às configurações dessas redes para que a AMAPI comece a gerenciá-las sem problemas. A interação da migração de DPC com o gerenciamento de Wi-Fi varia de acordo com o modo de gerenciamento.
Dispositivos totalmente gerenciados e perfis de trabalho em dispositivos da empresa
Durante a migração, a Política de dispositivo Android assume que qualquer rede Wi-Fi configurada na política com o mesmo SSID e tipo de segurança de uma rede Wi-Fi configurada no dispositivo é idêntica à rede Wi-Fi configurada correspondente. Portanto, as redes Wi-Fi configuradas por DPCs personalizados não são alteradas após a migração até que haja uma mudança na política de ONC correspondente à rede. No entanto, se o DPC personalizado for desinstalado após a migração, as redes Wi-Fi configuradas pelo DPC personalizado serão removidas automaticamente. A política do dispositivo Android continua sendo aplicada, e se alguma dessas redes estiver configurada na política, elas serão adicionadas normalmente.
Perfil de trabalho em um dispositivo pessoal
Por motivos técnicos, as redes Wi-Fi configuradas pelo DPC personalizado precisam ser
removidas pelo DPC personalizado para que o Android Device Policy comece a gerenciar essas
redes Wi-Fi. O SDK da AMAPI cuida disso e remove essas redes Wi-Fi
antes de transferir a propriedade do DPC personalizado para a política do dispositivo Android,
mas exige que o DPC personalizado transmita informações sobre essas redes em
DpcMigrationRequest
. Após a migração, as redes
configuradas na política serão adicionadas normalmente. Portanto, é recomendável que as
redes adicionadas pelo DPC personalizado também sejam configuradas na política.
É importante considerar alguns pontos:
- Se a rede ativa for uma rede Wi-Fi configurada por um DPC personalizado, o dispositivo poderá ficar off-line por um breve período durante a migração.
- Somente as redes Wi-Fi configuradas por DPC personalizado podem ser transmitidas em
DpcMigrationRequest
. Caso contrário, a migração falhará se uma rede não puder ser removida pelo SDK da AMAPI (por exemplo, rede Wi-Fi adicionada pelo usuário). - As redes Wi-Fi precisam ser transmitidas em
DpcMigrationRequest
somente quando o DPC personalizado é um proprietário do perfil em um dispositivo de propriedade pessoal. Caso contrário, a migração falha. - Por motivos técnicos, o Android 12 é um caso excepcional em que as redes
transmitidas em
DpcMigrationRequest
são ignoradas, e todas as redes Wi-Fi configuradas pelo DPC personalizado são removidas automaticamente. Além disso, é um requisito que o DPC personalizado tenha a permissãoACCESS_WIFI_STATE
no Android 12 para perfis de trabalho em dispositivos de propriedade pessoal. Caso contrário, a migração falha.
Advertências
Confira algumas ressalvas relacionadas a esse recurso.
ID específico da empresa
Para perfis de trabalho no Android 12 e versões mais recentes, o ID específico da empresa,
que pode ser acessado em DevicePolicyManager.getEnrollmentSpecificId
,
não muda no momento da migração. No entanto, se um perfil de trabalho gerenciado
pelo Android Device Policy for criado novamente no dispositivo (por exemplo, depois
de excluir o anterior ou redefinir o dispositivo para a configuração original), o
ID específico da empresa vai mudar.
Perfis de trabalho em dispositivos totalmente gerenciados
Esse recurso não tem suporte em dispositivos totalmente gerenciados com um perfil de trabalho que executa o Android 9 ou 10. Não tente migrar esses dispositivos. Mesmo que um erro seja gerado, esses dispositivos não são compatíveis com a migração do DPC.