Eseguire la migrazione dei dispositivi esistenti ad AMAPI

Per i dispositivi già gestiti dal tuo DPC personalizzato è possibile eseguire la migrazione ad Android Device Policy (ADP) e sfruttare l'API Android Management.

Prerequisiti

  • Il dispositivo è già gestito dal tuo provider EMM con un DPC personalizzato.
  • Il DPC personalizzato è integrato con l'SDK AMAPI.
  • Il dispositivo è registrato con l'API Google Play EMM.
  • Il dispositivo appartiene a un account Google Play gestito per l'azienda.
  • Il dispositivo deve avere Android 9 o versioni successive.
  • In caso di profili di lavoro sui dispositivi di proprietà dell'azienda, il dispositivo deve eseguire Android 11 o versioni successive.

Eseguire l'integrazione con l'SDK AMAPI nel DPC personalizzato

La procedura di migrazione richiede che l'applicazione DPC personalizzata integri l'SDK AMAPI. Puoi trovare ulteriori informazioni su questa libreria e su come aggiungerla alla tua applicazione nella guida all'integrazione dell'SDK AMAPI.

Passaggi per eseguire la migrazione di un dispositivo

  1. Configura un criterio da utilizzare sul dispositivo dopo la migrazione a AMAPI. Per un'esperienza utente ottimale, questo dovrebbe essere equivalente alle norme già applicate sul dispositivo dal tuo DPC.
  2. Crea un token di migrazione per il dispositivo chiamando enterprises.migrationTokens.create.
  3. Invia il value di questo token di migrazione al tuo DPC personalizzato.
  4. Assicurati che Android Device Policy sia installato sul dispositivo utilizzando l'API Play EMM.
  5. Utilizza DpcMigrationClientFactory per creare un DpcMigrationClient
  6. In DpcMigrationClient, chiama il metodo migrateDeviceManagementToAndroidManagementApi. La migrazione è completata.
  7. deviceState diventa ACTIVE e riceverai un messaggio STATUS_REPORT tramite il canale Pub/Sub.

Al termine della migrazione, l'app di chiamata perde i privilegi di proprietario del dispositivo o del profilo, poiché vengono trasferiti ad Android Device Policy. Questa procedura può essere rappresentata dal seguente diagramma di sequenza:

Diagramma di sequenza della migrazione del DPC

Nota:per iniziare la migrazione, il dispositivo deve essere connesso a internet. Il processo è progettato per essere resiliente alle disconnessioni di rete durante il processo di migrazione, in modo che le operazioni chiave che richiedono la connettività di rete vengano eseguite prima del trasferimento effettivo dei diritti di proprietario del dispositivo o del profilo dal tuo DPC ad Android Device Policy.

Token di migrazione

Il server EMM richiede un token di migrazione per segnalare l'intenzione di eseguire la migrazione di un determinato dispositivo gestito da un DPC personalizzato. Un token di migrazione può essere utilizzato fino al completamento della migrazione o fino alla sua scadenza.

Integrazione DPC personalizzata

Innanzitutto, devi creare un DpcMigrationRequest, passando al suo compilatore il token e, se necessario, l'elenco delle reti Wi-Fi configurate:

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

Puoi quindi utilizzare un DpcMigrationClient e avviare la procedura di migrazione con 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
}

Monitorare l'avanzamento della migrazione

La procedura di migrazione viene monitorata sul dispositivo tramite un DpcMigrationAttempt.

Puoi utilizzare direttamente quello restituito da migrateDeviceManagementToAndroidManagementApi o utilizzare metodi getMigrationAttempt e listMigrationAttempts per ottenere e elencare i tentativi di migrazione.

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

var attempt = client.getMigrationAttempt(request);

Se vuoi, puoi configurare un DpcMigrationListener utilizzando il tuo NotificationReceiverService per ascoltare gli aggiornamenti dello stato del 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
  }
}

Gestire le reti Wi-Fi

Se sono presenti reti Wi-Fi gestite dal DPC personalizzato, il criterio ONC AMAPI deve corrispondere alle configurazioni di queste reti affinché AMAPI possa iniziare a gestirle senza problemi. L'interazione della migrazione DPC con la gestione del Wi-Fi varia in base alla modalità di gestione.

Dispositivi completamente gestiti e profili di lavoro sui dispositivi di proprietà dell'azienda

Durante la migrazione, Android Device Policy presuppone che qualsiasi rete Wi-Fi configurata nel criterio che abbia lo stesso SSID e lo stesso tipo di sicurezza di una sulla rete Wi-Fi configurata sul dispositivo sia identica alla rete Wi-Fi configurata corrispondente. Di conseguenza, le reti Wi-Fi configurate tramite DPC personalizzato rimangono invariate dopo la migrazione finché non viene apportata una modifica al criterio ONC corrispondente alla rete. Tuttavia, se il DPC personalizzato viene disinstallato dopo la migrazione, le reti Wi-Fi configurate dal DPC personalizzato vengono rimosse automaticamente. Android Device Policy continua a applicare i criteri e, se una di queste reti è configurata nel criterio, le reti configurate nel criterio vengono aggiunte come di consueto.

Profilo di lavoro su un dispositivo personale

Per motivi tecnici, le reti Wi-Fi configurate dal criterio DPC personalizzato devono essere rimosse dal criterio DPC personalizzato affinché Android Device Policy possa iniziare a gestirle. L'SDK AMAPI si occupa di questo e rimuove queste reti Wi-Fi prima di trasferire la proprietà dal PDC personalizzato a Android Device Policy ma richiede che il PDC personalizzato trasmetta informazioni su queste reti in DpcMigrationRequest. Dopo la migrazione, le reti configurate nel criterio verranno aggiunte normalmente, pertanto è consigliabile che anche le reti aggiunte dal DPC personalizzato vengano configurate nel criterio.

Ecco alcuni punti da tenere presenti:

  • Se la rete attiva è una rete Wi-Fi configurata da un DPC personalizzato, il dispositivo può essere brevemente offline durante la migrazione.
  • Solo le reti Wi-Fi configurate dal DPC personalizzato devono essere passate in DpcMigrationRequest, altrimenti la migrazione non riesce se una rete non può essere rimossa dall'SDK AMAPI (ad es. rete Wi-Fi aggiunta dall'utente).
  • Le reti Wi-Fi devono essere passate in DpcMigrationRequest solo quando il DPC personalizzato è un proprietario del profilo su un dispositivo di proprietà personale, altrimenti la migrazione non va a buon fine.
  • Per motivi tecnici, Android 12 è un caso eccezionale in cui le reti comunicate in DpcMigrationRequest vengono ignorate e tutte le reti Wi-Fi configurate dal DPC personalizzato vengono rimosse automaticamente. Inoltre, è obbligatorio che il DPC personalizzato disponga dell'autorizzazione ACCESS_WIFI_STATE su Android 12 per i profili di lavoro sui dispositivi di proprietà personale, altrimenti la migrazione non va a buon fine.

Avvertenze

Ecco alcune avvertenze relative a questa funzionalità.

ID specifico dell'azienda

Per i profili di lavoro su Android 12 e versioni successive, l'ID specifico dell'azienda, a cui è possibile accedere da DevicePolicyManager.getEnrollmentSpecificId non cambia al momento della migrazione. Tuttavia, se sul dispositivo viene creato di nuovo un profilo di lavoro gestito da Android Device Policy (ad esempio dopo aver eliminato quello precedente o dopo aver ripristinato i dati di fabbrica del dispositivo), l'ID specifico dell'azienda cambierà.

Profili di lavoro sui dispositivi completamente gestiti

Questa funzionalità non è supportata sui dispositivi completamente gestiti con un profilo di lavoro che eseguono Android 9 o 10. Non deve essere tentata la migrazione di questi dispositivi e, indipendentemente dal fatto che venga generato un errore, questi dispositivi non sono supportati per la migrazione DPC.