Migrar dispositivos existentes para AMAPI

Os dispositivos já gerenciados pelo seu DPC personalizado podem ser migrados para o Android Device Policy e usar a API Android Management.

Observação:esse processo é transparente para os usuários finais. Esse é um processo de mão única (não pode ser desfeito depois de concluído) e não pode ser usado para migrar um dispositivo de um EMM para outro.

Pré-requisitos

  • O dispositivo já é gerenciado pelo EMM com um DPC personalizado.
  • Seu DPC personalizado é integrado ao SDK AMAPI.
  • O dispositivo precisa estar inscrito na API Google Play EMM.
  • O dispositivo pertence a um pacote de contas do Google Play gerenciado.
  • O dispositivo tem o Android 9 ou versão mais recente.
  • No caso de perfis de trabalho em dispositivos da empresa, o dispositivo precisa executar o Android 11 ou uma versão mais recente.

Integrar com o SDK da AMAPI no seu DPC personalizado

O processo de migração requer que o aplicativo DPC personalizado integre o SDK da AMAPI. Confira mais informações sobre essa biblioteca e como adicioná-la ao aplicativo no Guia de integração do SDK da AMAPI.

Observação:esse processo requer a versão 1.1.4 ou mais recente da biblioteca AMAPI SDK.

Etapas para migrar um dispositivo

  1. Configure uma política destinada ao uso pelo dispositivo após a migração para a AMAPI. Para a melhor experiência do usuário, isso precisa ser equivalente à política já aplicada no dispositivo pelo DPC.
  2. Crie um token de migração para o dispositivo chamando enterprises.migrationTokens.create.
  3. Envie o value desse token de migração para seu DPC personalizado.
  4. Verifique se o Android Device Policy está instalado no dispositivo usando a API Play EMM.
  5. Use DpcMigrationClientFactory para criar uma DpcMigrationClient.
  6. Na DpcMigrationClient, chame o método migrateDeviceManagementToAndroidManagementApi. Isso conclui a migração.
  7. O deviceState mudará para ACTIVE, e você receberá uma mensagem STATUS_REPORT pelo canal Pub/Sub.

Quando a migração terminar, o app de chamada vai perder os privilégios de proprietário do dispositivo ou de proprietário do perfil, porque eles são transferidos para o Android Device Policy.

Observação:o dispositivo precisa estar conectado à Internet para iniciar a migração. O processo foi projetado para ser resiliente a desconexões de rede durante o processo de migração, para 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 de 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é que a migração seja concluída ou expire até expirar.

Integração de DPC personalizado

Primeiro, você precisa criar um DpcMigrationRequest, transmitindo o token e, se necessário, a lista de redes Wi-Fi configuradas para o builder correspondente:

// Create a DpcMigrationRequest
DpcMigrationRequest request =
        DpcMigrationRequest.builder()
            .setMigrationToken(token)
            .build();

Em seguida, é possível usar um DpcMigrationClient e iniciar o processo de migração com migrateDeviceManagementToAndroidManagementApi:

// Create a DpcMigrationClient
DpcMigrationClient dpcMigrationClient = DpcMigrationClientFactory.create(context);
try {
  // Use helper functiong 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
}

Acompanhar o progresso da migração

O processo de migração é rastreado no dispositivo por um DpcMigrationAttempt.

É possível usar diretamente o método retornado por migrateDeviceManagementToAndroidManagementApi ou usar os métodos getMigrationAttempt e listMigrationAttempts para receber e listar as tentativas de migração.

// Passing an empty name, we retrieve the last attempt 
var request = GetDpcMigrationAttemptRequest.builder().build();

var attempt = client.getMigrationAttempt(request);

Você também 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() {
    // getDpcMigrationListener"
    return this;
  }

  @Override
  public void onMigrationStateChanged(DpcMigrationAttempt migrationAttempt) {
    // send success feedback
  }
}

Gerenciar redes Wi-Fi

Se houver redes Wi-Fi gerenciadas pelo DPC personalizado, a política de ONC da AMAPI precisará corresponder às configurações dessas redes para que a AMAPI comece a gerenciá-las sem problemas. A interação da migração do DPC com o gerenciamento de Wi-Fi varia dependendo do modo de gerenciamento.

Dispositivos totalmente gerenciados e perfis de trabalho em dispositivos da empresa

Durante a migração, o Android Device Policy supõe 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 pelo DPC personalizado permanecem intactas após a migração até que haja uma alteração 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. O Android Device Policy continua aplicando a política e, se alguma dessas redes for configurada na política, as redes configuradas na política 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 do Android Device Policy para começar a gerenciar essas redes. O SDK da AMAPI cuida disso e remove essas redes Wi-Fi antes de transferir a propriedade do DPC personalizado para o Android Device Policy, 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, então é recomendável que as redes adicionadas pelo DPC personalizado também sejam configuradas na política.

Há alguns pontos a serem levados em consideração:

  • Se a rede ativa for uma rede Wi-Fi configurada pelo DPC personalizado, o dispositivo poderá ficar off-line brevemente durante a migração.
  • Somente as redes Wi-Fi configuradas pelo DPC personalizado precisam ser transmitidas em DpcMigrationRequest. Caso contrário, a migração vai falhar se uma rede não puder ser removida pelo SDK da AMAPI (por exemplo, a rede Wi-Fi adicionada pelo usuário).
  • As redes Wi-Fi precisam ser transmitidas em DpcMigrationRequest somente quando o DPC personalizado é um proprietário de perfil em um dispositivo pessoal. Caso contrário, a migração vai falhar.
  • 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ão ACCESS_WIFI_STATE no Android 12 para perfis de trabalho em dispositivos pessoais. Caso contrário, a migração falhará.

Advertências

Veja 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, após a exclusão do perfil anterior ou após a redefinição para a configuração original do dispositivo), o ID específico da empresa vai mudar nesse momento.

Perfis de trabalho em dispositivos totalmente gerenciados

Esse recurso não tem suporte em dispositivos totalmente gerenciados que têm um perfil de trabalho com o Android 9 ou 10. A migração desses dispositivos não pode ser tentada e, independentemente de um erro ser gerado, esses dispositivos não são compatíveis com a migração de DPC.