Compatibilité avec les configurations gérées

Certaines applications conçues pour les entreprises intègrent des paramètres intégrés appelés configurations gérées, que les administrateurs informatiques peuvent configurer à distance. Par exemple, une application peut avoir la possibilité de ne synchroniser les données que lorsqu'un appareil est connecté au Wi-Fi. Il est obligatoire de donner aux administrateurs informatiques la possibilité de spécifier des configurations gérées et de les appliquer aux appareils pour tous les ensembles de solutions. Il existe deux façons de gérer les configurations gérées dans votre console EMM:

  • Créez votre propre interface utilisateur et appliquez les paramètres via managedConfiguration dans ApplicationPolicy.
  • Ajoutez l'iFrame de configurations gérées à votre console (instructions détaillées ci-dessous) et appliquez les paramètres via managedConfigurationTemplate dans ApplicationPolicy.


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 à partir de 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 des 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. Les administrateurs informatiques peuvent ainsi 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 dans l'iFrame. Cette fonctionnalité est désactivée par défaut.

Ajouter l'iFrame à votre console

Générer un jeton Web

Utilisez enterprises.webTokens.create pour générer un jeton Web qui identifie l'entreprise, puis définissez iframeFeature sur MANAGED_CONFIGURATIONS. Vous devez inclure le jeton renvoyé, ainsi que d'autres paramètres, lors de l'affichage de l'iFrame dans votre console.

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 des cadres 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ée.
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 Une balise BCP 47 bien formulé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ée 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ée 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, celle-ci 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 des profils de configuration aux stratégies

Chaque profil de configuration est enregistré en tant qu'mcmId unique. Pour appliquer un profil de configuration à une règle, spécifiez mcmId dans managedConfigurationTemplate.


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 que les développeurs peuvent s'attendre à recevoir 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 modifications à cette restriction.

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'application envoyées à l'appareil sont 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 seront pas incluses lorsque les administrateurs enregistrent la configuration gérée sans appliquer aucune 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'application envoyées à l'appareil sont les suivantes:

"restrictions": [
    // Empty
]

Utiliser des bundles dans votre schéma

Cette section s'applique aux restrictions d'application des bundles:

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

Si, dans la restriction d'application du bundle, au moins une des restrictions d'application enfants de type bool, choice, integer, multi-select ou string est fournie avec une valeur par défaut, celle-ci sera appliquée en tant que valeur de la restriction d'application et celles sans valeur par défaut seront exclues lorsque les administrateurs enregistreront la configuration gérée sans appliquer de modifications à cette 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'application envoyées à l'appareil sont 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 d'applications enfants sans valeurs par défaut

Si, dans la restriction d'application du 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 bundle n'est pas incluse lorsque les administrateurs enregistrent la configuration gérée sans appliquer de modifications à 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'application envoyées à l'appareil sont 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 possèdent 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 bundle dans la restriction d'application bundle_array

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

Les restrictions d'application envoyées à l'appareil sont 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
            }
        }]
    }]
}]

Si une restriction ou un groupe de groupes est enregistré, tous les groupes/restrictions de l'ensemble bundle_array seront définis par la priorité suivante:

  • la valeur choisie par l'administrateur
  • la valeur par défaut indiquée pour ce bundle/cette restriction.
  • la valeur affichée dans l'iFrame en l'absence de valeur par défaut

Aucun groupe de groupes 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'application envoyées à l'appareil sont les suivantes:

"restrictions": [
    // Empty
]