Supporta configurazioni gestite

Alcune app progettate per le aziende includono impostazioni integrate chiamate configurazioni gestite che gli amministratori IT possono configurare da remoto. Ad esempio, un'app potrebbe avere la possibilità di sincronizzare i dati solo quando il dispositivo è connesso a una rete Wi-Fi. Fornire agli amministratori IT la possibilità di specificare le configurazioni gestite e applicarle ai dispositivi è un requisito per tutti gli set di soluzioni. Esistono due modi per supportare le configurazioni gestite nella console EMM:

  • Crea la tua UI e applica le impostazioni tramite managedConfiguration in ApplicationPolicy.
  • Aggiungi l'iframe delle configurazioni gestite alla console (istruzioni dettagliate di seguito) e applica le impostazioni tramite managedConfigurationTemplate in ApplicationPolicy


L'iframe delle configurazioni gestite è un'interfaccia utente incorporabile che consente agli amministratori IT di salvare, modificare ed eliminare le impostazioni di configurazione gestita di un'app. Ad esempio, puoi visualizzare un pulsante (o un elemento UI simile) nella pagina dei dettagli o delle impostazioni di un'app che apre l'iframe.

Azioni disponibili per gli amministratori IT dall'iframe

iframe mcm
Figura 1. Esempio di iframe di configurazioni gestite per Gmail.

Impostare e salvare i profili di configurazione

L'iframe recupera e visualizza lo schema delle configurazioni gestite per un'app specificata. All'interno dell'iframe, un amministratore IT può impostare le configurazioni e salvarle come profilo di configurazione. Ogni volta che un amministratore IT salva un nuovo profilo di configurazione, l'iframe restituisce un identificatore univoco chiamato mcmId. In questo modo, gli amministratori IT possono creare più profili per la stessa app.

Modifica profili di configurazione

L'iframe è in grado di visualizzare i profili di configurazione salvati. Gli amministratori IT possono aggiornare le impostazioni di un profilo e salvare le modifiche.

Elimina profili di configurazione

Gli amministratori IT possono eliminare i profili di configurazione dall'iframe. Questa funzionalità è disattivata per impostazione predefinita.

Aggiungi l'iframe alla tua console

Genera un token web

Utilizza enterprises.webTokens.create per generare un token web che identifichi l'azienda e imposta iframeFeature su MANAGED_CONFIGURATIONS. Quando esegui il rendering dell'iframe nella tua console, devi includere il token restituito, insieme ad altri parametri.

Rendering dell'iframe

Ecco un esempio di come eseguire il rendering dell'iframe delle configurazioni gestite:

<script src="https://apis.google.com/js/api.js"></script>
<div id="container" style="width: 1000px; height: 1000px"></div>
<script>
  gapi.load('gapi.iframes', function() {
    var options = {
      'url': 'https://play.google.com/managed/mcm?token=web_token&packageName=app_package_name',
      'where': document.getElementById('container'),
      'attributes': { style: 'height:1000px', scrolling: 'yes'}
    }

    var iframe = gapi.iframes.getContext().openChild(options);
  });
</script>

Parametri URL

La tabella seguente elenca tutti i parametri disponibili per l'URL iframe.

ParametroObbligatorioDescrizione
token Il token restituito da Enterprises.createWebToken.
packageName L'ID prodotto dell'app. Ad esempio, com.google.android.gm.
mcmId No L'ID di un profilo di configurazioni gestite.
canDelete No Se TRUE, attiva un pulsante nell'iframe che consente agli amministratori IT di eliminare il profilo di configurazioni gestite. Se FALSE (valore predefinito), il pulsante è disabilitato.
locale No Un tag BCP 47 language ben strutturato che viene utilizzato per localizzare i contenuti nell'iframe. Se non specificato, il valore predefinito è en_US.

Eventi iframe

Nell'ambito dell'integrazione, dovresti anche gestire i seguenti eventi.

EventoDescrizione
onconfigupdated L'utente aggiorna un profilo di configurazioni gestite esistente o ne crea uno nuovo. Questo restituisce un oggetto contenente:
{
  "mcmId": The ID of the managed configurations profile.
  "name": The name of the updated or newly created managed configurations profile.
}
onconfigdeleted L'utente elimina un profilo di configurazioni gestite esistente. Questo restituisce un oggetto contenente:
{
  "mcmId": The ID of the managed configurations profile.
}

L'esempio seguente mostra come ascoltare onconfigupdated, ad esempio:

iframe.register('onconfigupdated', function(event) {
  console.log(event);
}, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER);

Aggiornamenti allo schema di configurazioni gestite di un'app

Se lo sviluppatore aggiorna lo schema di configurazione gestita di un'app, i profili di configurazione salvati vengono aggiornati automaticamente. Ad esempio, se lo sviluppatore rimuove un'opzione, questa verrà rimossa da tutti i profili di configurazione esistenti per l'app. Se lo sviluppatore aggiunge un'opzione, il valore predefinito dell'opzione (definito dallo sviluppatore) verrà aggiunto a tutti i profili di configurazione esistenti per l'app.

Applica i profili di configurazione al criterio

Ogni profilo di configurazione viene salvato come un mcmId univoco. Per applicare un profilo di configurazione a un criterio, specifica mcmId in managedConfigurationTemplate.


Informazioni sul comportamento di selezione/deselezione

L'iframe delle configurazioni gestite ora consente agli amministratori IT di deselezionare esplicitamente le limitazioni delle app di una configurazione gestita quando non ne hanno bisogno. Si tratta di un cambiamento rispetto al comportamento precedente e potrebbe influire sulle limitazioni inviate alla tua app in base alla selezione dell'amministratore.

La sezione che segue illustra il comportamento dell'iframe delle configurazioni gestite con questo nuovo pattern di deselezione e cosa possono aspettarsi gli sviluppatori nell'ambito della loro configurazione gestita.

Utilizzo del valore predefinito per una limitazione delle app

Se alle limitazioni delle app di tipo bool, choice, numero intero, selezione multipla o stringa viene applicato un valore predefinito, questo valore verrà applicato come valore della limitazione dell'app quando gli amministratori salvano la configurazione gestita senza applicare alcuna modifica alla limitazione delle app.

Ad esempio, con il seguente schema delle limitazioni app:

"restrictions": [{
    "key": "bool_key",
    "restrictionType": "bool",
    "defaultValue": {
        "type": "bool",
        "valueBool": false
    }
}]

Le limitazioni delle app inviate al dispositivo verranno:

"restrictions": [{
    "key": "bool_key",
    "restrictionType": "bool",
    "value": {
        "type": "bool",
        "valueBool": false
    }
}]

Senza utilizzare valori predefiniti per le limitazioni delle app

Se alle limitazioni delle app di tipo bool, choice, numero intero, selezione multipla o stringa non viene fornito un valore predefinito, queste limitazioni delle app non saranno incluse quando gli amministratori salvano la configurazione gestita senza applicare alcuna modifica alla limitazione delle app.

Ad esempio, con il seguente schema delle limitazioni app:

"restrictions": [{
    "key": "bool_key",
    "restrictionType": "bool"
    // defaultValue absent.
}]

Le limitazioni delle app inviate al dispositivo verranno:

"restrictions": [
    // Empty
]

Utilizzare bundle nello schema

Questa sezione si applica alle limitazioni delle app per set:

Avere almeno una limitazione per le app secondarie con un valore predefinito in una limitazione per app in bundle

Se all'interno della limitazione dell'app bundle viene fornita almeno una delle limitazioni delle app secondarie di tipo bool, choice, integer, multi-selezione o stringa con un valore predefinito, quest'ultimo verrà applicato come valore della limitazione dell'app, mentre quelle senza valori predefiniti verranno escluse quando gli amministratori salvano la configurazione gestita senza applicare modifiche alla stessa

"restrictions": [{
    "key": "bundle_key",
    "restrictionType": "bundle",
    "nestedRestriction": [{
            "key": "bool_key_1",
            "restrictionType": "bool",
            "defaultValue": {
                "type": "bool",
                "valueBool": false
            }
        },
        {
            "key": "bool_key_2",
            "restrictionType": "bool"
            // defaultValue absent.
        }
    ]
}]

Le limitazioni delle app inviate al dispositivo verranno:

"restrictions": [{
    "key": "bundle_key",
    "restrictionType": "bundle",
    "nestedRestriction": [{
            "key": "bool_key_1",
            "restrictionType": "bool",
            "value": {
                "type": "bool",
                "valueBool": false
            }
        },
        // The bool_key_2 child app restriction is not included.
    ]
}]

Tutte le limitazioni delle app secondarie senza valori predefiniti

Se all'interno della limitazione dell'app bundle, tutte le limitazioni delle app secondarie di tipo bool, choice, integer, multiselezione o stringa non hanno un valore predefinito, la limitazione dell'app bundle non verrà inclusa quando gli amministratori salvano la configurazione gestita senza applicare alcuna modifica alla limitazione dell'app.

Ad esempio, con il seguente schema delle limitazioni app:

"restrictions": [{
    "key": "bundle_key",
    "restrictionType": "bundle",
    "nestedRestriction": [{
            "key": "bool_key_1",
            "restrictionType": "bool",
            // defaultValue absent.
        },
        {
            "key": "bool_key_2",
            "restrictionType": "bool"
            // defaultValue absent.
        }
    ]
}]

Le limitazioni delle app inviate al dispositivo verranno:

"restrictions": [
    // Empty
]

Utilizzare bundle_array nello schema

Questa sezione si applica alle limitazioni delle app bundle_array. Non è pertinente se le limitazioni dell'app secondaria con tipo bool, choice, numero intero, selezione multipla o stringa hanno valori predefiniti.

Ad esempio, con il seguente schema delle limitazioni app:

"restrictions": [{
    "key": "bundle_array_key",
    "restrictionType": "bundleArray",
    "nestedRestriction": [{
        "key": "bundle_key",
        "restrictionType": "bundle",
        "nestedRestriction": [{
            "key": "bool_key",
            "restrictionType": "bool",
            "defaultValue": {
                "type": "bool",
                "valueBool": true
            }
        }]
    }]
}]

Avere almeno un gruppo di bundle nella limitazione dell'app bundle_array

Se è impostato almeno un gruppo bundle, la limitazione dell'app bundle_array verrà inclusa quando gli amministratori salvano la configurazione gestita.

Le limitazioni delle app inviate al dispositivo verranno:

"restrictions": [{
    "key": "bundle_array_key",
    "restrictionType": "bundleArray",
    "nestedRestriction": [{
        "key": "bundle_key",
        "restrictionType": "bundle",
        "nestedRestriction": [{
            "key": "bool_key",
            "restrictionType": "bool",
            "value": {
                "type": "bool",
                "valueBool": true
            }
        }]
    }]
}]

Se viene salvato una limitazione o un gruppo di pacchetti, tutte le limitazioni/i bundle all'interno di bundle_array verranno impostati in base alla seguente precedenza:

  • il valore scelto dall'amministratore
  • il valore predefinito elencato per il pacchetto/la restrizione.
  • il valore visualizzato nell'iframe in assenza di un valore predefinito.

Nessun gruppo di bundle nella limitazione dell'app bundle_array

La limitazione dell'app bundle_array non viene inclusa quando gli amministratori salvano la configurazione gestita senza aggiungere un gruppo di bundle. Le limitazioni delle app inviate al dispositivo verranno:

"restrictions": [
    // Empty
]