iFrame dans les configurations gérées

L'iFrame de configurations gérées est une interface utilisateur intégrable qui permet aux administrateurs informatiques d'enregistrer, de modifier et de supprimer les paramètres de configuration gérée d'une application. Vous pouvez, par exemple, afficher un bouton (ou un élément d'interface utilisateur similaire) sur la page d'informations ou de paramètres d'une application qui ouvre l'iFrame.

Actions disponibles pour les administrateurs informatiques dans l'iFrame

iFrame mcm
Figure 1 : Exemple d'iFrame de configurations gérées pour Gmail

Définir et enregistrer des profils de configuration

L'iFrame récupère et affiche le schéma des configurations gérées pour une application spécifiée. Dans l'iFrame, un administrateur informatique peut définir les configurations et les enregistrer en tant que profil de configuration. Chaque fois qu'un administrateur informatique enregistre un nouveau profil de configuration, l'iFrame renvoie un identifiant unique appelé mcmId. Cela permet aux administrateurs informatiques de créer plusieurs profils pour la même application.

Modifier les profils de configuration

L'iFrame est capable d'afficher les profils de configuration enregistrés. Les administrateurs informatiques peuvent mettre à jour les paramètres d'un profil et enregistrer leurs modifications.

Supprimer des profils de configuration

Les administrateurs informatiques peuvent supprimer des profils de configuration de l'iFrame. Cette fonctionnalité est désactivée par défaut.

Afficher l'iFrame des configurations gérées dans votre console

Générer un jeton Web

Utilisez Enterprises.createWebToken pour générer un jeton Web qui identifie l'entreprise. Vous devez inclure le jeton renvoyé ainsi que d'autres paramètres lors de l'affichage de l'iFrame dans votre console. L'exemple suivant montre comment récupérer le jeton à l'aide de la bibliothèque cliente de l'API EMM Google Play pour Java.

public AdministratorWebToken getAdministratorWebToken(
    String enterpriseId,
    AdministratorWebTokenSpec tokenSpec) throws IOException {
  return androidEnterprise
     .enterprise()
     .createWebToken(enterpriseId, tokenSpec)
     .execute();
}

Afficher l'iFrame

Voici un exemple d'affichage de l'iFrame de configurations gérées:

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

Paramètres d'URL

Le tableau ci-dessous liste tous les paramètres disponibles pour l'URL iFrame.

ParamètresObligatoireDescription
token Oui Jeton renvoyé par Enterprises.createWebToken.
packageName Oui ID produit de l'application. Par exemple, com.google.android.gm.
mcmId Non ID d'un profil de configuration géré.
canDelete Non Si la valeur est TRUE, active un bouton dans l'iFrame qui permet aux administrateurs informatiques de supprimer le profil de configuration gérée. Si la valeur est FALSE (valeur par défaut), le bouton est désactivé.
locale Non Balise BCP 47 correctement formatée, utilisée pour localiser le contenu dans l'iFrame. Si aucune valeur n'est spécifiée, la valeur par défaut est en_US.

Événements iFrame

Vous devez également gérer les événements suivants dans le cadre de votre intégration.

ÉvénementDescription
onconfigupdated L'utilisateur met à jour un profil de configuration géré existant ou en crée un. Cette opération renvoie un objet contenant :
{
  "mcmId": The ID of the managed configurations profile.
  "name": The name of the updated or newly created managed configurations profile.
}
onconfigdeleted L'utilisateur supprime un profil de configuration géré existant. Cette opération renvoie un objet contenant :
{
  "mcmId": The ID of the managed configurations profile.
}

L'exemple ci-dessous montre comment écouter onconfigupdated:

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

Mises à jour du schéma de configuration géré d'une application

Si le développeur met à jour le schéma de configuration géré d'une application, les profils de configuration enregistrés sont automatiquement mis à jour. Par exemple, si le développeur supprime une option, elle sera supprimée de tous les profils de configuration existants pour l'application. Si le développeur ajoute une option, la valeur par défaut de l'option (définie par le développeur) sera ajoutée à tous les profils de configuration existants pour l'application.

Appliquer les configurations gérées aux appareils des utilisateurs

Pour savoir comment appliquer des configurations gérées aux appareils des utilisateurs, consultez la section Appliquer des configurations gérées.


Comprendre le comportement de sélection/désélection

L'iFrame de configurations gérées permet désormais aux administrateurs informatiques de désélectionner explicitement les restrictions d'application d'une configuration gérée lorsqu'ils n'en ont pas besoin. Il s'agit d'un changement par rapport au comportement précédent et peut avoir un impact sur les restrictions envoyées à votre application en fonction de la sélection de l'administrateur.

La section ci-dessous décrit le comportement de l'iFrame de configurations gérées avec ce nouveau modèle de désactivation, et ce à quoi les développeurs peuvent s'attendre dans le cadre de leur configuration gérée.

Utiliser la valeur par défaut pour une restriction d'application

Si les restrictions d'application de type bool, choice, integer, multi-select ou string sont fournies avec une valeur par défaut, celle-ci est appliquée en tant que valeur de la restriction d'application lorsque les administrateurs enregistrent la configuration gérée sans appliquer de modification à cette restriction d'application.

Par exemple, avec le schéma de restriction d'application suivant:

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

Les restrictions d'applications envoyées à l'appareil seront les suivantes:

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

Sans utiliser les valeurs par défaut pour les restrictions d'application

Si les restrictions d'application de type bool, choice, integer, multi-select ou string ne sont pas fournies avec une valeur par défaut, elles ne sont pas incluses lorsque les administrateurs enregistrent la configuration gérée sans appliquer de modification à cette restriction.

Par exemple, avec le schéma de restriction d'application suivant:

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

Les restrictions d'applications envoyées à l'appareil seront les suivantes:

"restrictions": [
    // Empty
]

Utiliser des bundles dans votre schéma

Cette section s'applique aux restrictions d'application du bundle:

Avoir au moins une restriction d'application enfant avec une valeur par défaut dans une restriction d'application d'app bundle

Si au moins une des restrictions d'application enfants de type bool, choice, integer, multi-select ou string est fournie dans la restriction d'application bundle, elle est appliquée en tant que valeur de la restriction d'application. Si les administrateurs enregistrent la configuration gérée sans appliquer de modifications à cette restriction d'application, celle-ci sera appliquée en tant que valeur de la restriction d'application.

"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.
        }
    ]
}]

Les restrictions d'applications envoyées à l'appareil seront les suivantes:

"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.
    ]
}]

Toutes les restrictions pour les applications enfants sans valeurs par défaut

Si, dans la restriction d'application bundle, toutes les restrictions d'applications enfants de type bool, choice, integer, multi-select ou string ne sont pas fournies avec une valeur par défaut, la restriction d'application du bundle n'est pas incluse lorsque les administrateurs enregistrent la configuration gérée sans appliquer de modification à cette restriction d'application.

Par exemple, avec le schéma de restriction d'application suivant:

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

Les restrictions d'applications envoyées à l'appareil seront les suivantes:

"restrictions": [
    // Empty
]

Utiliser bundle_array dans votre schéma

Cette section s'applique aux restrictions d'application bundle_array. Cela n'est pas pertinent si les restrictions des applications enfants de type bool, choice, integer, multi-select ou string ont des valeurs par défaut.

Par exemple, avec le schéma de restriction d'application suivant:

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

Avoir au moins un groupe de bundles dans la restriction d'application bundle_array

Si au moins un groupe de bundles est défini, la restriction d'application bundle_array sera incluse lorsque les administrateurs enregistrent la configuration gérée.

Les restrictions d'applications envoyées à l'appareil seront les suivantes:

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

Aucun groupe de bundles dans la restriction d'application bundle_array

La restriction d'application bundle_array ne sera pas incluse lorsque les administrateurs enregistrent la configuration gérée sans ajouter de groupe. Les restrictions d'applications envoyées à l'appareil seront les suivantes:

"restrictions": [
    // Empty
]