Creare layout personalizzati per i negozi

La versione gestita di Google Play consente di progettare e creare layout di negozi per i clienti aziendali. Puoi personalizzare un layout dello store raggruppando le app in cluster, configurando le pagine dello store e aggiungendo link rapidi che forniscono l'accesso a più pagine all'interno dello store.

Tutte le app messe a disposizione di un utente finale nella versione gestita del Google Play Store devono prima essere approvate da un amministratore IT, essere approvate per l'utente e aggiunte a un cluster. Per ulteriori dettagli su questa procedura, consulta Aggiunta di app a un layout dello store.

Elementi di layout di un negozio

Il layout dello store è in genere costituito da una serie di pagine mostrate agli utenti nella versione gestita di Google Play. Ogni pagina può contenere uno o più gruppi di app, denominati cluster. Ogni cluster contiene una o più app.

I cluster ti consentono di raggruppare le app correlate. Ad esempio, puoi creare una pagina per le app di lavoro contenente un cluster Essentials e un cluster Getting Things Done. Il cluster Essentials potrebbe contenere app come Blocco note+, Presentazioni Google e così via. Il cluster Getting Things Done potrebbe includere app come OneNote, Wunderlist, Any.do e altre app di monitoraggio, calendario e pianificazione di riunioni (vedi la Figura 1).

Quando crei una pagina, puoi anche aggiungere fino a 10 link rapidi nella parte superiore della pagina. I link rapidi consentono agli utenti di passare ad altre pagine. Ad esempio, la Figura 1 mostra i link rapidi per le pagine Economia, Comunicazione e Finanza.

La Figura 1 mostra alcuni degli elementi chiave della disposizione di un negozio vista su un dispositivo:

Schermata di esempio del dispositivo di un utente che mostra gli elementi del layout di uno store, inclusi link rapidi, pagine e cluster di app.
Figura 1 - Schermata di esempio di un dispositivo utente
  • Link rapidi: link facoltativi che consentono di accedere ad altre pagine. I link rapidi prendono il nome della pagina a cui rimandano.
  • Pagina: una pagina denominata che può essere scorrevole in verticale e che comprende cluster di app.
  • Cluster (chiamato anche raccolta): un carosello di app denominato e scorrevole in orizzontale. Si espande a pagina intera se la pagina contiene un singolo cluster (oppure fai clic su "Altro" per rendere la pagina scorrevole verticalmente).

Limitazioni degli elementi del layout del negozio

Quando progetti e implementi i layout dei negozi per i tuoi clienti, tieni presente questi limiti (la maggior parte di questi limiti è dovuta a principi di una buona progettazione dell'interfaccia utente):

  • 100 app per cluster
  • 30 cluster per pagina
  • 10 link rapidi per pagina
  • 100 pagine per negozio
  • 1000 prodotti (app approvate) per azienda

Nomi localizzati di pagine e cluster

Il layout della versione gestita del Google Play Store supporta nomi localizzati per le pagine dello store e i cluster di store. Quando crei una pagina o un cluster, fornisci un elenco delle impostazioni internazionali supportate, ad esempio i tag della lingua IETF e i nomi localizzati associati. Se le impostazioni internazionali di un utente non sono presenti nell'elenco delle impostazioni internazionali supportate, il sistema sceglie la corrispondenza più vicina disponibile. Ad esempio, se en-GB non è disponibile, il sistema sceglie en-US. Se non è disponibile una corrispondenza molto simile, il sistema sceglie il nome nell'elenco.

Aggiunta di app a un layout dello store

Tutte le app presenti in policy.productPolicy vengono aggiunte automaticamente se un'azienda utilizza un layout di base dello store. Se un'azienda utilizza un layout dello store personalizzato, le app presenti solo nel layout personalizzato e nell'elenco productPolicy verranno visualizzate su un dispositivo. Tutti gli elementi presenti in policy.productPolicy possono essere cercati nel Play Store.

Affinché un utente finale possa installare un'app dalla versione gestita del Google Play Store, l'app deve essere compatibile con il dispositivo dell'utente e soddisfare la seguente condizione:

  • Aggiunta all'elenco di autorizzazioni dell'utente (utilizzando policy.productPolicy nella risorsa dispositivo) E policy.productAvailabilityPolicy impostato su WHITELIST, OPPURE policy.productAvailabilityPolicy impostato su ALL (consente la ricerca e l'installazione di qualsiasi app).

Un utente può utilizzare la funzionalità di ricerca integrata nella versione gestita di Google Play per trovare e installare le app che soddisfano queste condizioni. Tuttavia, l'app sarà visibile soltanto in un layout di base dello store o se l'hai aggiunta a una raccolta/un cluster.

App con approvazione revocata

Gli amministratori possono annullare l'approvazione di un'app (revocarne l'approvazione) in qualsiasi momento. Le app con approvazione revocata possono comunque essere aggiunte ai cluster e agli elenchi di autorizzazioni degli utenti, ma gli utenti non le vedranno o non potranno installarle dalla versione gestita di Google Play Store. Se un'app con approvazione revocata viene riapprovata, verrà nuovamente resa disponibile per gli utenti nella versione gestita del Google Play Store.

Layout di base del negozio

Per impostazione predefinita, il layout di base del negozio è attivo per ciascuno dei tuoi clienti. Il layout di base ha una pagina e un cluster che mostra un massimo di 1000 app. Le app nella pagina sono ordinate in base al valore product ID. Se crei un layout dello store personalizzato (impostando storeLayoutType ="custom"), il layout di base del negozio viene disattivato.

Creare layout di negozi personalizzati

I provider EMM possono creare layout di negozio personalizzati per ciascuno dei propri clienti aziendali. I layout personalizzati degli archivi consentono di configurare cluster di app, aggiungere cluster specifici alle pagine e specificare link rapidi. Poiché sei tu a definire le app che compongono ogni cluster, puoi utilizzare i cluster per raggruppare le app correlate (ad esempio, "Essentials" e "Getting Things Done"). Gli utenti vedono solo le app le cui autorizzazioni sono state accettate dall'amministratore IT.

Il riferimento API EMM di Google Play contiene informazioni sulle risorse e sui metodi associati che utilizzi per creare un layout personalizzato per lo store, in particolare Storelayoutpages e Storelayoutclusters. I passaggi descritti nelle sezioni seguenti illustrano un esempio di base.

Attività di programmazione

Per creare un layout della versione gestita del Google Play Store personalizzato per i tuoi clienti, devi:

  1. Crea una pagina
  2. Crea uno o più cluster all'interno delle pagine
  3. Impostare la home page

Come minimo, devi creare almeno una pagina composta da un cluster per un layout dello store e il cluster deve contenere almeno un'app. Devi anche impostare la home page. Se crei più di una pagina, hai la possibilità di impostare i link rapidi da visualizzare nella parte superiore di ogni pagina.

Di seguito sono descritte le attività di programmazione per creare un layout personalizzato del Play Store gestito, seguite da un esempio completo di layout dello store.

Crea una pagina

Una pagina è composta da uno o più cluster. Ogni cluster contiene almeno un'app. Le pagine vengono create per aziende specifiche, quindi devi richiamare le operazioni su istanze aziendali specifiche (enterpriseId). Puoi fornire un nome facile da usare e informazioni sulla localizzazione per ogni pagina, oltre a un elenco di pageId che gli utenti possono raggiungere dalla pagina. La nuova pagina viene creata con l'operazione insert (Storelayoutpages.insert), come mostrato qui:

public StorePage createPage(String enterpriseId, String name)
    throws IOException {
  List<LocalizedText> names =
      ImmutableList.of(
          new LocalizedText().setLocale("en").setText(name));
  StorePage storePage = new StorePage();
  storePage.setName(names);
  return androidEnterprise.storelayoutpages()
    .insert(enterpriseId, storePage)
    .execute();
}

crea un cluster

I cluster contengono gruppi di app. Viene creato prima il cluster, poi puoi aggiungerlo a una pagina. Per creare un cluster, richiama l'operazione insert di Storelayoutclusters e trasmetti i valori per queste proprietà:

  • Un elenco dei productId che il cluster deve contenere (ad esempio, productId per Gmail è app:com.google.android.gm)
  • Un nome facile da usare per il cluster, ad esempio necessari cosvolgimenti
  • enterpriseId da associare al cluster
  • pageId (per la pagina che deve contenere il cluster)
  • Il posizionamento del cluster nella pagina (primo, secondo e così via)

Esempio:

private String insertCluster(String enterpriseId, String pageId, String name,
    List<String> productIds, String orderInPage) throws IOException {
  StoreCluster storeCluster = new StoreCluster();
  storeCluster.setName(
      ImmutableList.of(
          new LocalizedText().setLocale("en").setText(name)));
  storeCluster.setProductId(productIds);
  storeCluster.setOrderInPage(orderInPage);
  return androidEnterprise.storelayoutclusters()
    .insert(enterpriseId, pageId, storeCluster)
    .execute()
    .getId();
}

Impostare la home page

La prima pagina visualizzata nella versione gestita di Google Play sul dispositivo di un utente è la home page. In qualità di EMM, definisci una home page per ciascuno dei tuoi clienti. La pagina è sempre visibile, anche quando è vuota, e non può essere eliminata.

In questo esempio, viene recuperato l'ID della home page per l'elemento enterpriseId specificato:

public StoreLayout getStoreLayout(String enterpriseId) throws IOException {
  return androidEnterprise
    .enterprises()
    .getStoreLayout(enterpriseId)
    .execute();
}

Il prossimo esempio imposta la home page di un cliente fornendo il valore enterpriseId del cliente e pageId della sua home page:

public StoreLayout setStoreLayout(String enterpriseId, String homepageId)
    throws IOException {
  StoreLayout storeLayout = new StoreLayout();
  storeLayout.setHomepageId(homepageId);

  return androidEnterprise
    .enterprises()
    .setStoreLayout(enterpriseId, storeLayout)
    .execute();
}

I link rapidi vengono visualizzati nella parte superiore di ogni pagina per consentire agli utenti di navigare facilmente tra le pagine dello store. Per utilizzare i link rapidi, ottieni prima il pageId della pagina (restituito da insert) e aggiungi il link alla pagina. Ad esempio, se crei tre pagine i cui pageId sono p1, p2 e p3, puoi aggiungere link rapidi dalla prima pagina alle altre due pagine con quanto segue:

StorePage storePage = new StorePage();
storePage.setName(
    ImmutableList.of(new LocalizedText().setLocale("en").setText(title)));
storePage.setLink(ImmutableList.of("p2", "p3");
return androidEnterprise.storelayoutpages()
  .update(enterpriseId, "p1", storePage)
  .execute();

Esempio

Ecco un esempio completo di creazione di un archivio di base composto da tre pagine collegate. Ogni pagina è composta da cluster di app simili. Ogni pagina viene creata specificando il enterpriseId del cliente e impostando la pagina solo name, per ottenere il pageId che viene quindi utilizzato per creare un link rapido alla pagina.

// Create a basic page and return the pageId.
private String insertPage(String enterpriseId, String title,
    List<String> links) throws IOException {
  List<LocalizedText> names =
      ImmutableList.of(new LocalizedText().setLocale("en").setText(title));
  StorePage page = new StorePage();
  page.setName(names);
  page.setLink(links);
  return enterprise.storelayoutpages().insert(enterpriseId, page).execute().getId();
}

public StoreLayout setStoreLayout(String enterpriseId, String homepageId)
    throws IOException {
  StoreLayout storeLayout = new StoreLayout();
  storeLayout.setHomepageId(homepageId);

  return androidEnterprise
      .enterprises()
      .setStoreLayout(enterpriseId, storeLayout)
      .execute();
}

private String insertCluster(String enterpriseId, String pageId, String name,
    List<String> productIds, String orderInPage) throws IOException {
  StoreCluster cluster = new StoreCluster();
  List<LocalizedText> names =
      ImmutableList.of(new LocalizedText().setLocale("en").setText(name));
  cluster.setName(names);
  cluster.setProductId(productIds);
  cluster.setOrderInPage(orderInPage);
  return androidEnterprise.storelayoutclusters()
      .insert(enterpriseId, pageId, cluster)
      .execute()
      .getId();
}

private void updatePage(String enterpriseId, String pageId, String title,
    List<String> links) throws IOException {
  List<LocalizedText> names =
      ImmutableList.of(new LocalizedText().setLocale("en").setText(title));
  StorePage page = new StorePage();
  page.setName(names);
  page.setLink(links);
  enterprise.storelayoutpages()
      .update(enterpriseId, pageId, page).execute();
}

private void makeStore(String enterpriseId) throws IOException {
  // Create the pages.
  String page1 = insertPage(enterpriseId, "Home");
  String page2 = insertPage(enterpriseId, "Productivity");
  String page3 = insertPage(enterpriseId, "Accounting");

  // Set the homepage (page that displays by default when store is opened).
  setStoreLayout(enterpriseId, page1);

  // Add the links to the pages. This makes a small tree.
  updatePage(enterpriseId, page1, "Home", ImmutableList.of(page2, page3));
  updatePage(enterpriseId, page2, "Productivity", ImmutableList.of(page1));
  updatePage(enterpriseId, page3, "Accounting", ImmutableList.of(page1));

  // Add clusters with contents.
  insertCluster(
      enterpriseId,
      page1,
      "Getting Things Done",
      ImmutableList.of(
          "app:com.mytodolist",
          "app:com.google.android.gm",
          "app:com.google.android.docs"),
      "1");
  insertCluster(
      enterpriseId,
      page1,
      "Strategy",
      ImmutableList.of(
          "app:com.myplanner",
          "app:com.stratego"),
      "2");
  insertCluster(
      enterpriseId,
      page2,
      "Editors",
      ImmutableList.of(
          "app:com.myeditor",
          "app:com.betteredit",
          "app:com.lazyguy"),
      "1");
  insertCluster(
      enterpriseId,
      page2,
      "Time Management",
      ImmutableList.of(
          "app:com.mytimetracker",
          "app:com.lazygal",
          "app:com.lazyguy"),
      "2");
  insertCluster(
      enterpriseId,
      page2,
      "Accounting",
      ImmutableList.of(
          "app:com.mymoney",
          "app:com.taxpro",
          "app:com.balances"),
      "3");
}