El iframe de configuraciones administradas es una IU incorporable que permite a los administradores de TI guardar, editar y borrar los parámetros de configuración administrada de una app. Por ejemplo, puedes mostrar un botón (o un elemento de IU similar) en la página de detalles o de configuración de una app que abra el iframe.
Acciones disponibles para los administradores de TI desde el iframe
![iframe de MCM](https://developers.google.cn/static/android/work/play/emm-api/images/mcm_iframe.png?authuser=5&hl=es)
Establece y guarda perfiles de configuración
El iframe recupera y muestra el esquema de configuraciones administradas de una app específica. Dentro del iframe, un administrador de TI puede establecer la configuración y guardarla como un perfil de configuración. Cada vez que un administrador de TI guarda un perfil de configuración nuevo, el iframe muestra un identificador único llamado mcmId
.
Esto permite que los administradores de TI creen varios perfiles para la misma app.
Editar perfiles de configuración
El iframe puede mostrar perfiles de configuración guardados. Los administradores de TI pueden actualizar la configuración de un perfil y guardar sus cambios.
Borrar perfiles de configuración
Los administradores de TI pueden borrar perfiles de configuración del iframe. Esta función está inhabilitada de forma predeterminada.
Cómo mostrar el iframe de las configuraciones administradas en tu consola
Genera un token web
Usa Enterprises.createWebToken
para generar un token web que identifique a la empresa. Debes incluir el
token que se muestra, junto con otros parámetros, cuando renderizas el iframe en tu
consola. En el siguiente ejemplo, se muestra cómo recuperar el token mediante la biblioteca cliente de la API de EMM de Google Play para Java.
public AdministratorWebToken getAdministratorWebToken(
String enterpriseId,
AdministratorWebTokenSpec tokenSpec) throws IOException {
return androidEnterprise
.enterprise()
.createWebToken(enterpriseId, tokenSpec)
.execute();
}
Renderiza el iframe
A continuación, se incluye un ejemplo de cómo renderizar el iframe de las configuraciones administradas:
<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>
Parámetros de URL
La siguiente tabla incluye todos los parámetros disponibles para la URL del iframe.
Parámetro | Obligatorias | Descripción |
---|---|---|
token |
Sí | El token que muestra Enterprises.createWebToken . |
packageName |
Sí | Es el ID del producto de la app. Por ejemplo, com.google.android.gm . |
mcmId |
No | El ID de un perfil de configuración administrada. |
canDelete |
No | Si es TRUE, habilita un botón en el iframe que permite a los administradores de TI borrar el perfil de configuraciones administradas. Si es FALSE (valor predeterminado), el botón está inhabilitado. |
locale |
No | Una etiqueta de idioma BCP 47 con el formato correcto que se usa para localizar el contenido en el iframe Si no se especifica, el valor predeterminado es en_US. |
Eventos de iframe
También debes controlar los siguientes eventos como parte de tu integración.
Evento | Descripción |
---|---|
onconfigupdated |
El usuario actualiza un perfil de configuración administrada existente o crea uno nuevo. Se muestra un objeto que contiene lo siguiente:
{ "mcmId": The ID of the managed configurations profile. "name": The name of the updated or newly created managed configurations profile. } |
onconfigdeleted |
El usuario borra un perfil de configuración administrada existente. Se muestra un objeto que contiene lo siguiente:{ "mcmId": The ID of the managed configurations profile. } |
En el siguiente ejemplo, se muestra cómo escuchar onconfigupdated
, a modo de ejemplo:
iframe.register('onconfigupdated', function(event) {
console.log(event);
}, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER);
Actualizaciones del esquema de configuraciones administradas de una app
Si el desarrollador actualiza el esquema de configuración administrada de una app, los perfiles de configuración guardados se actualizan automáticamente. Por ejemplo, si el desarrollador quita una opción, esta se quitará de todos los perfiles de configuración existentes de la app. Si el desarrollador agrega una opción, se agregará el valor predeterminado de la opción (definido por el desarrollador) a todos los perfiles de configuración existentes de la app.
Aplicar configuraciones administradas a los dispositivos de los usuarios
Para obtener información sobre cómo aplicar configuraciones administradas a los dispositivos de los usuarios, consulta Cómo aplicar configuraciones administradas.
Información sobre el comportamiento de seleccionar y anular la selección
El iframe de las configuraciones administradas ahora permite a los administradores de TI anular de forma explícita las restricciones de apps de una configuración administrada cuando no las necesitan. Este es un cambio en relación con el comportamiento anterior y puede afectar las restricciones que se envían a tu app según la selección del administrador.
En la siguiente sección, se describe cómo se comporta el iframe de las configuraciones administradas con este nuevo patrón para anular la selección y lo que los desarrolladores pueden esperar que se envíen como parte de su configuración administrada.
Cómo usar el valor predeterminado para una restricción de app
Si las restricciones de la app de tipo bool, choice, integer, multi-select o string se proporcionan con un valor predeterminado, este se aplicará como el valor de la restricción de la app cuando los administradores guarden la configuración administrada sin aplicar ningún cambio en esa restricción de app.
Por ejemplo, con el siguiente esquema de restricciones de apps:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool",
"defaultValue": {
"type": "bool",
"valueBool": false
}
}]
Las restricciones de apps enviadas al dispositivo serán las siguientes:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool",
"value": {
"type": "bool",
"valueBool": false
}
}]
Sin usar valores predeterminados para las restricciones de apps
Si las restricciones de la app de tipo bool, choice, integer, multi-select o string no se proporcionan con un valor predeterminado, estas restricciones de apps no se incluirán cuando los administradores guarden la configuración administrada sin aplicar cambios en esa restricción.
Por ejemplo, con el siguiente esquema de restricciones de apps:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool"
// defaultValue absent.
}]
Las restricciones de apps enviadas al dispositivo serán las siguientes:
"restrictions": [
// Empty
]
Usa conjuntos en tu esquema
Esta sección se aplica a las restricciones de las apps en paquetes:
Tener, al menos, una restricción de app secundaria con un valor predeterminado en una restricción de app de paquete
Si, dentro de la restricción de la app de paquete, se proporcionan al menos una de las restricciones de la app secundaria con el tipo bool, choice, integer, multi-select o string con un valor predeterminado, este se aplicará como el valor de la restricción de la app, y aquellos sin este tipo se excluirán cuando los administradores guarden la configuración administrada sin aplicar ningún cambio en esa 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.
}
]
}]
Las restricciones de apps enviadas al dispositivo serán las siguientes:
"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.
]
}]
Todas las restricciones de apps secundarias sin valores predeterminados
Si, dentro de la restricción de la app de paquete, todas las restricciones de la app secundaria con tipo bool, choice, integer, multi-select o string no se proporcionan con un valor predeterminado, la restricción de app de bundle no se incluirá cuando los administradores guarden la configuración administrada sin aplicar ningún cambio en esa restricción de app.
Por ejemplo, con el siguiente esquema de restricciones de apps:
"restrictions": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key_1",
"restrictionType": "bool",
// defaultValue absent.
},
{
"key": "bool_key_2",
"restrictionType": "bool"
// defaultValue absent.
}
]
}]
Las restricciones de apps enviadas al dispositivo serán las siguientes:
"restrictions": [
// Empty
]
Usa bundle_array en tu esquema
Esta sección se aplica a las restricciones de las apps de bundle_array. No es relevante si las restricciones de la app secundaria con el tipo bool, choice, integer, multi-select o string tienen valores predeterminados.
Por ejemplo, con el siguiente esquema de restricciones de apps:
"restrictions": [{
"key": "bundle_array_key",
"restrictionType": "bundleArray",
"nestedRestriction": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key",
"restrictionType": "bool",
"defaultValue": {
"type": "bool",
"valueBool": true
}
}]
}]
}]
Tener, al menos, un grupo de paquete en la restricción de la app bundle_array
Si se configura al menos un grupo de paquete, se incluirá la restricción de apps bundle_array cuando los administradores guarden la configuración administrada.
Las restricciones de apps enviadas al dispositivo serán las siguientes:
"restrictions": [{
"key": "bundle_array_key",
"restrictionType": "bundleArray",
"nestedRestriction": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key",
"restrictionType": "bool",
"value": {
"type": "bool",
"valueBool": true
}
}]
}]
}]
No hay grupos de paquetes en la restricción de apps de bundle_array
La restricción de la app bundle_array no se incluirá cuando los administradores guarden la configuración administrada sin agregar un grupo de paquetes. Las restricciones de apps enviadas al dispositivo serán las siguientes:
"restrictions": [
// Empty
]