Compatibilité avec les configurations gérées

Certaines applications conçues pour les entreprises incluent 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. Tous les ensembles de solutions nécessitent de donner aux administrateurs informatiques la possibilité de spécifier des configurations gérées et de les appliquer aux appareils. 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 des 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. Par exemple, vous pouvez 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.

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 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 des profils de configuration aux stratégies

Chaque profil de configuration est enregistré en tant que 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 à 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 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'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
            }
        }]
    }]
}]

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

  • la valeur choisie par l'administrateur
  • la valeur par défaut indiquée pour ce bundle/restriction.
  • la valeur affichée dans l'iFrame s'il n'existe aucune valeur par défaut ;

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
]