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](https://developers-dot-devsite-v2-prod.appspot.com/static/android/work/play/emm-api/images/mcm_iframe.png?authuser=7&hl=it)
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.
Visualizza l'iframe delle configurazioni gestite nella console
Genera un token web
Utilizza Enterprises.createWebToken
per generare un token web che identifichi l'azienda. Devi includere il token restituito, insieme ad altri parametri, quando esegui il rendering dell'iframe nella console. L'esempio seguente mostra come recuperare il token utilizzando la libreria client dell'API EMM di Google Play per Java.
public AdministratorWebToken getAdministratorWebToken(
String enterpriseId,
AdministratorWebTokenSpec tokenSpec) throws IOException {
return androidEnterprise
.enterprise()
.createWebToken(enterpriseId, tokenSpec)
.execute();
}
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.
Parametro | Obbligatorie | Descrizione |
---|---|---|
token |
Sì | Il token restituito da Enterprises.createWebToken . |
packageName |
Sì | 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.
Evento | Descrizione |
---|---|
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 configurazioni gestite ai dispositivi degli utenti
Per scoprire come applicare le configurazioni gestite ai dispositivi degli utenti, vedi Applicare configurazioni gestite.
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 sono fornite con 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 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
}
}]
}]
}]
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
]