Attività di gestione tipiche

I provider EMM possono implementare una serie di attività di gestione tipiche nelle loro soluzioni aziendali per Android, come le attività mostrate in questa guida. Il codice campione utilizza la libreria client dell'API EMM di Google Play per Java®.

Cercare gli utenti e ottenere i relativi dettagli

Molte delle API EMM di Google Play richiedono un userId (oltre a un enterpriseId) per svolgere alcune attività associate all'utente, come installare un'app, ottenere diritti e licenze. Alcune chiamate richiedono un oggetto utente.

Se un'organizzazione utilizza account della versione gestita di Google Play, mantieni una mappatura tra gli indirizzi email degli utenti e gli ID utente di questi account. Con gli Account Google, usi l'app UsersListResponse.

Cerca utenti

Questo esempio di codice ottiene gli ID utente associati agli Account Google. Non si applica alle organizzazioni che utilizzano account della versione gestita di Google Play.

Questo esempio presuppone che tu abbia importato i modelli User e UsersListResponse nel codice. Per ottenere un account utente specifico, ottieni il relativo userId trasmettendo enterpriseId e email a UsersListResponse.

public UsersListResponse list(String enterpriseId, String email) throws
   IOException {
    return androidEnterprise
        .users()
        .list(enterpriseId, email)
        .execute();
}

Ottieni dettagli utente

Una volta che hai l'userId, puoi recuperare altri dettagli. Consulta Users.Get.

public User get(String enterpriseId, String userId) throws IOException {
    return androidEnterprise
        .users()
        .get(enterpriseId, userId)
        .execute();
}

Concedere l'accesso alle app a un utente

Puoi utilizzare le API EMM di Google Play per controllare a quali app un utente può accedere dalla versione gestita del Google Play Store. L'accesso a un'app include la possibilità di cercarla, visualizzarla, installarla e aggiornarla. Sono disponibili tre diversi livelli di accesso:

  • Solo app consentite: l'utente ha accesso soltanto ad app specifiche.
  • Tutte le app approvate: l'utente ha accesso a tutte le app approvate per l'azienda.
  • Tutte le app: l'utente ha accesso a tutte le app disponibili pubblicamente nel Google Play Store.

Concedere a un utente l'accesso solo ad app specifiche

L'esempio seguente mostra come concedere a un utente l'accesso a un insieme specifico di app dalla versione gestita di Google Play Store. La procedura prevede i seguenti passaggi:

  • Crea un elenco di productIds (app) approvate per l'utente (productSet).
  • Specifica che l'utente può accedere solo alle app nell'elenco specificato impostando il valore della stringa productSetBehavior su "whitelist".
  • Applica l'elenco di productIds e l'impostazione del comportamento al set di prodotti disponibili dell'utente utilizzando setAvailableProductSet.
public ProductSet setProductSet(String enterpriseId, String userId,
    List<String> productIds) throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductId(productIds);
  productSet.setProductSetBehavior("whitelist");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

Concedere a un utente l'accesso a tutte le app approvate

L'esempio seguente mostra come concedere a un utente l'accesso a qualsiasi app approvata per l'azienda dalla versione gestita di Google Play Store. La procedura prevede i seguenti passaggi:

  • Specifica che l'utente può accedere a tutte le app approvate per l'azienda impostando il valore della stringa productSetBehavior su "allApproved".
  • Applica questa impostazione all'utente che utilizza setAvailableProductSet.
public ProductSet setUserIncludeApprovedApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("allApproved");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

Nota: se productSetBehavior è impostato su "allApproved", non è necessario specificare productIds per il set di prodotti.

Concedere a un utente l'accesso a tutte le app

L'esempio seguente mostra come concedere a un utente la possibilità nella versione gestita del Google Play Store di accedere a qualsiasi app disponibile nella versione pubblica del Google Play Store. Gli utenti con accesso a tutte le app vedranno comunque il layout dello store della loro azienda solo quando aprono la versione gestita di Google Play, ma possono trovare altre app tramite la ricerca.

Alcuni utenti attendibili, come gli amministratori IT, potrebbero richiedere questo livello di accesso maggiore per testare e valutare le app prima di approvarle per l'azienda. La procedura per concedere a un utente l'accesso a tutte le app include i seguenti passaggi:

  • Specifica che l'utente può accedere a tutte le app nel Google Play Store impostando il valore della stringa productSetBehavior su "includeAll".
  • Applica questa impostazione all'utente che utilizza setAvailableProductSet.
public ProductSet setUserIncludeAllApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("includeAll");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

Nota: se productSetBehavior è impostato su "includeAll", non è necessario specificare productIds per il set di prodotti.

Crea un layout per il negozio

Dopo aver concesso agli utenti l'accesso alle app, raggruppale in cluster per mostrarle nella vetrina della versione gestita di Google Play Store.

Puoi creare un layout unico e personalizzato per ciascuno dei tuoi clienti utilizzando le API Storelayoutpages e Storelayoutclusters. Un layout tipico è costituito da un insieme di pagine, ciascuna delle quali può contenere cluster di app. Puoi inserire le app correlate nello stesso cluster. Consulta Creare layout negozio personalizzati per dettagli e codice di esempio.

Richiedere le autorizzazioni di un'app

Per aggiungere un'app a un layout personalizzato dello store (o installarla in modalità invisibile sul dispositivo di un utente) e mostrarla in modo che l'utente possa selezionarla, l'amministratore deve accettare le autorizzazioni per l'app per l'intera organizzazione. Gli amministratori possono accettare le autorizzazioni app e contrassegnare le app come approvate per la distribuzione nella versione gestita di Google Play Console (consulta la panoramica della versione gestita di Google Play).

Come best practice, ti consigliamo di incorporare l'iframe delle autorizzazioni nella console EMM. Ciò significa che l'utente non deve accedere separatamente alla versione gestita di Google Play Console. Utilizza Products.getApprovalUrl per ottenere l'URL dell'iframe.

public String getApprovalUrl(String enterpriseId, String productId)
    throws IOException {
  return androidEnterprise
      .products()
      .generateApprovalUrl(enterpriseId, productId)
      .execute()
      .getUrl();
}

Usa Products.approve per accettare queste autorizzazioni.

public void approveProduct(String enterpriseId,
    String productId,
    String approvalUrl) throws IOException {
  ProductsApproveRequest productsApproveRequest =
      new ProductsApproveRequest()
          .setApprovalUrlInfo(
              new ApprovalUrlInfo().setApprovalUrl(approvalUrl));
  androidEnterprise
      .products()
      .approve(enterpriseId, productId, productsApproveRequest)
      .execute();
  }

Recupera i dispositivi di un utente

Per eseguire azioni specifiche per un dispositivo, devi identificare i dispositivi associati a un utente. Questo esempio restituisce l'elenco dei dispositivi per un determinato userID utilizzando DevicesListResponse.

public DevicesListResponse list(String enterpriseId, String userId) throws
   IOException {

    return androidEnterprise
        .devices()
        .list(enterpriseId, userId)
        .execute();
}

Se l'utente ha accettato i Termini di servizio presentati quando ha tentato di accedere alla versione gestita di Google Play per la prima volta, la risposta include i dispositivi non gestiti (dispositivi con il tipo di gestione unmanagedProfile).

Recupero e impostazione dello stato di un dispositivo

Questa attività di gestione si applica solo alle organizzazioni che utilizzano Account Google. Non si applica alle organizzazioni che utilizzano account della versione gestita di Google Play.

Quando l'Account Google gestito dell'utente viene attivato su un dispositivo gestito, l'accesso ai servizi Google viene attivato (o disattivato) in base a:

Se l'applicazione forzata dell'EMM è disattivata, lo stato del dispositivo viene ignorato e l'account viene autorizzato ad accedere ai servizi Google ogni volta che viene attivato su un dispositivo Android. Se l'applicazione forzata della soluzione EMM è abilitata, ma lo stato del dispositivo non lo è, gli utenti non potranno installare applicazioni da Google Play e le API EMM di Google Play non potranno installare automaticamente le app per quell'utente sul dispositivo.

Questo esempio mostra come ottenere lo stato di un determinato dispositivo (specificato passando enterpriseId, userId e deviceId).

Le operazioni getState() e setState() funzionano solo per i dispositivi con managementType pari a managedDevice o managedProfile (nella risorsa Devices). I dispositivi con managementType pari a unmanagedProfile non possono essere controllati con queste API.

public DeviceState getState(String enterpriseId, String userId, String
   deviceId) throws IOException {

    return androidEnterprise
        .devices()
        .getState(enterpriseId, userId, deviceId)
        .execute();
}

Abilita o disabilita i servizi Google per l'account su un dispositivo impostando la stringa AccountState sulla costante appropriata.

public DeviceState setState(String enterpriseId, String userId, String
   deviceId, String accountState) throws IOException {

    DeviceState deviceState = new DeviceState();
    deviceState.setAccountState(accountState);

    return androidEnterprise
        .devices()
        .setState(enterpriseId, userId, deviceId, deviceState)
        .execute();
}

Installare un'app tramite push su un dispositivo

Gli amministratori possono installare le applicazioni in modalità invisibile. L'interazione dell'utente non è obbligatoria. In questo esempio viene utilizzato Installs.Update per installare automaticamente un'app (identificata da productId) su un dispositivo (identificato da deviceId).

public Install update(String enterpriseId, String userId, String
   deviceId, String productId) throws IOException {

    return androidEnterprise
        .installs()
        .update(enterpriseId, userId, deviceId, productId,
           new Install())
        .execute();
}

Se l'app esiste già sul dispositivo ed è disponibile una versione aggiornata, l'app viene aggiornata alla nuova versione.

Cerca e scarica le app dall'elenco delle applicazioni approvate

Gli amministratori creano e gestiscono un elenco di app approvate disponibili per i loro utenti nella versione gestita di Google Play. Gli utenti di dispositivi BYOD (Bring your own device, Porta il tuo dispositivo) con profili di lavoro e gli utenti di dispositivi aziendali in cui l'intero dispositivo è gestito dall'organizzazione possono scaricare app solo da questo elenco approvato.

Puoi personalizzare la tua console EMM in modo da includere una casella di ricerca in modo che gli amministratori possano cercare le app solo nell'elenco delle app approvate. La funzione di ricerca accetta gli stessi parametri di una funzione di ricerca standard della versione gestita di Google Play, ma cerca solo le app presenti nell'elenco delle app approvate.

Ad esempio, se l'amministratore vuole eseguire il push di un'app presente nell'elenco delle app approvate per i dispositivi aziendali, può utilizzare questa funzione di ricerca nella console EMM per trovare l'app.

Nella query, puoi specificare un numero massimo di prodotti che il risultato deve contenere, ad esempio setMaxResults(10L), sufficiente a riempire lo schermo. Il valore predefinito è 100, che rappresenta anche il numero massimo che è possibile restituire contemporaneamente. Se il risultato contiene un token di impaginazione, puoi recuperare più risultati passando il token di impaginazione.

Questo esempio mostra come ottenere i primi 10 risultati di una ricerca di app per la produttività. Leggi i Products.List.

public List searchProducts(String enterpriseId) throws IOException {
  ProductsListResponse executeResult =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setQuery("productivity")
          .execute();
  return executeResult.getProduct();
}

Se il risultato di ricerca contiene un token di impaginazione, la ricerca ha prodotto più di setMaxResults risultati o più di 10 in questo esempio. Per recuperare altri risultati, ripeti la ricerca e includi il token di impaginazione nella richiesta. In questo esempio vengono restituiti i dieci risultati successivi.

public ProductsListResponse continueSearch(
    String enterpriseId, ProductsListResponse previousResponse) throws IOException {
  ProductsListResponse nextResults =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setToken(previousResponse.getTokenPagination().getNextPageToken())
          .setQuery("productivity")
          .execute();
  return nextResults;
}