Iframe de configuración administrada

El iframe de configuraciones administradas es una IU integrable que permite a los administradores de TI guardar, editar y borrar los ajustes de configuración administrados de una app. Por ejemplo, puedes mostrar un botón (o un elemento de IU similar) en los detalles o en la página de configuración de una app que abre el iframe.

Acciones disponibles para los administradores de TI desde el marco flotante

iframe de mcm
Figura 1: Ejemplo de iframe de configuración administrada para Gmail.

Cómo establecer y guardar perfiles de configuración

El iframe recupera y muestra el esquema de configuración administrada para una aplicación especificada. Dentro del iframe, un administrador de TI puede establecer configuraciones y guardarlas 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 los 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 configuración administrada en tu consola

Genera un token web

Usa Enterprises.createWebToken para generar un token web que identifique a la empresa. Cuando incluyas el iframe en tu consola, debes incluir el token que se muestra, junto con otros parámetros. 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();
}

Cómo procesar el iframe

A continuación, se muestra un ejemplo de cómo procesar el iframe de configuración administrada:

<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 enumera todos los parámetros disponibles para la URL del iframe.

ParámetroObligatoriaDescripción
token El token que muestra Enterprises.createWebToken.
packageName Es el ID del producto de la app. Por ejemplo, com.google.android.gm.
mcmId No El ID de un perfil de configuración administrado.
canDelete No Si es TRUE, se habilita un botón en el iframe que permite a los administradores de TI borrar el perfil de configuración administrada. Si es FALSE (valor predeterminado), el botón está inhabilitado.
locale No Una etiqueta de lenguaje BCP 47 bien formada que se usa para localizar el contenido en el iframe Si no se especifica, el valor predeterminado es en_US.

Eventos de iframe

Como parte de tu integración, también debes controlar los siguientes eventos.

EventoDescripción
onconfigupdated El usuario actualiza un perfil de configuración administrado existente o crea uno nuevo. Esto muestra un objeto que contiene:
{
  "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 administrado existente. Esto muestra un objeto que contiene:
{
  "mcmId": The ID of the managed configurations profile.
}

En el siguiente ejemplo, se muestra cómo escuchar onconfigupdated, por ejemplo:

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

Actualizaciones del esquema de configuración administrada de una app

Si el desarrollador actualiza el esquema de configuración administrada de una app, los perfiles de configuración guardados se actualizan de forma automática. 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.

Aplica configuraciones administradas a los dispositivos de los usuarios

Para obtener información sobre cómo aplicar las configuraciones administradas a los dispositivos de los usuarios, consulta Aplica configuraciones administradas.


Comprensión del comportamiento de selección o anulación de selección

El iframe de configuración administrada ahora permite a los administradores de TI anular de forma explícita la selección de las restricciones de la app de una configuración administrada cuando no la necesitan. Esto es un cambio en relación con el comportamiento anterior y puede tener un impacto en las restricciones que se envían a tu app en función de la selección del administrador.

En la siguiente sección, se describe cómo se comporta el iframe de la configuración administrada con este patrón de anulación de selección nuevo y qué pueden esperar recibir los desarrolladores como parte de su configuración administrada.

Usa el valor predeterminado para una restricción de app

Si las restricciones de la app con el tipo bool, choice, integer, selecto o string se proporcionan con un valor predeterminado, este se aplicará como el valor de la restricción cuando los administradores guarden la configuración administrada sin aplicarle ningún cambio.

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 apps con el tipo bool, choice, integer, multi-select o string no se proporcionan con un valor predeterminado, estas restricciones de app no se incluirán cuando los administradores guarden la configuración administrada sin aplicar ningún cambio en esa restricción de la app.

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 paquetes dentro de tu esquema

Esta sección se aplica a las restricciones de apps del paquete:

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 del paquete se incluye al menos una de las restricciones de la app secundaria con el tipo bool, choice, integer, multiselect o string, se proporcionarán con un valor predeterminado, el valor predeterminado se aplicará como el valor de la restricción de la app, y aquellos que no tengan valores predeterminados se excluirán cuando los administradores guarden la configuración administrada sin aplicar los cambios en esa restricción.

"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 en la restricción de la app del paquete se todas las restricciones de la app secundaria con el tipo bool, choice, número entero, selección múltiple o string no se proporcionan con un valor predeterminado, la restricción de la aplicación bundle no se incluirá cuando los administradores guarden la configuración administrada sin aplicar los cambios en esa restricción.

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 la app 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 paquetes en la restricción de app bundle_array

Si se establece al menos un grupo de paquetes, se incluirá la restricción de app 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 app 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 bundle. Las restricciones de apps enviadas al dispositivo serán las siguientes:

"restrictions": [
    // Empty
]