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 alla rete Wi-Fi. Offrire agli amministratori IT la possibilità di specificare le configurazioni gestite e applicarle ai dispositivi è un requisito per tutti i 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 denominato 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 all'interno 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. Devi includere il token restituito, insieme ad altri parametri, quando esegui il rendering dell'iframe nella tua console.

Eseguire il 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

Nella tabella seguente sono elencati tutti i parametri disponibili per l'URL iframe.

ParametroObbligatorieDescrizione
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 delle configurazioni gestite. Se FALSE (valore predefinito), il pulsante è disabilitato.
locale No Un tag lingua BCP 47 ben strutturato 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 delle configurazioni gestite esistente o ne crea uno nuovo. Questa operazione 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. Questa operazione restituisce un oggetto contenente:
{
  "mcmId": The ID of the managed configurations profile.
}

Il seguente esempio mostra come ascoltare onconfigupdated, ad esempio:

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

Aggiornamenti allo schema delle 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 dell'app. Se lo sviluppatore aggiunge un'opzione, il relativo valore predefinito (definito dallo sviluppatore) verrà aggiunto a tutti i profili di configurazione esistenti dell'app.

Applica 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 una modifica 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 ciò che gli sviluppatori possono aspettarsi di inviare come parte della loro configurazione gestita.

Utilizzo del valore predefinito per una limitazione dell'app

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

Ad esempio, con il seguente schema di limitazioni dell'app:

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

Le limitazioni delle app inviate al dispositivo saranno:

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

Senza utilizzare valori predefiniti per le limitazioni delle app

Se per le 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 di limitazioni dell'app:

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

Le limitazioni delle app inviate al dispositivo saranno:

"restrictions": [
    // Empty
]

Utilizzare i bundle nello schema

Questa sezione riguarda le limitazioni delle app per set:

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

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

"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 saranno:

"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 per bambini senza valori predefiniti

Se all'interno della limitazione delle app bundle, tutte le limitazioni delle app secondarie di tipo bool, choice, integer, multi-select o string non vengono fornite con un valore predefinito, la limitazione dell'app bundle non sarà inclusa quando gli amministratori salvano la configurazione gestita senza applicare alcuna modifica alla limitazione dell'app.

Ad esempio, con il seguente schema di limitazioni dell'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 saranno:

"restrictions": [
    // Empty
]

Utilizzare bundle_array nello schema

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

Ad esempio, con il seguente schema di limitazioni dell'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 pacchetti 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 saranno:

"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 restrizione o un gruppo di pacchetti, tutte le limitazioni/i bundle all'interno dell'intero bundle_array verranno impostati in base alla seguente precedenza:

  • il valore scelto dall'amministratore
  • il valore predefinito indicato per il pacchetto/la limitazione.
  • 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 verrà inclusa quando gli amministratori salvano la configurazione gestita senza aggiungere un gruppo bundle. Le limitazioni delle app inviate al dispositivo saranno:

"restrictions": [
    // Empty
]