Verwaltete Konfigurationen unterstützen

Einige Anwendungen für Unternehmen enthalten integrierte Einstellungen, die als verwaltete Konfigurationen bezeichnet werden und von IT-Administratoren remote konfiguriert werden können. Beispielsweise kann eine App die Möglichkeit haben, Daten nur dann zu synchronisieren, wenn ein Gerät mit einem WLAN verbunden ist. Eine Voraussetzung für alle Lösungssätze ist, dass IT-Administratoren verwaltete Konfigurationen angeben und auf Geräte anwenden können. Es gibt zwei Möglichkeiten, verwaltete Konfigurationen in Ihrer EMM-Konsole zu unterstützen:

  • Erstellen Sie Ihre eigene UI und wenden Sie die Einstellungen über managedConfiguration in ApplicationPolicy an.
  • Fügen Sie der Konsole den iFrame für verwaltete Konfigurationen hinzu (siehe Anleitung unten) und wenden Sie über managedConfigurationTemplate in ApplicationPolicy die Einstellungen an.


Der iFrame für verwaltete Konfigurationen ist eine einbettbare UI, mit der IT-Administratoren die verwalteten Konfigurationseinstellungen einer App speichern, bearbeiten und löschen können. Sie können beispielsweise eine Schaltfläche (oder ein ähnliches UI-Element) auf der Seite mit den App-Details oder -Einstellungen einblenden, über die der iFrame geöffnet wird.

Für IT-Administratoren über den iFrame verfügbare Aktionen

CM-iFrame
Abbildung 1: Beispiel für einen iFrame für verwaltete Konfigurationen in Gmail

Konfigurationsprofile festlegen und speichern

Mit dem iFrame wird das Schema der verwalteten Konfigurationen für eine angegebene Anwendung abgerufen und angezeigt. Innerhalb des iFrames kann ein IT-Administrator Konfigurationen festlegen und als Konfigurationsprofil speichern. Jedes Mal, wenn ein IT-Administrator ein neues Konfigurationsprofil speichert, gibt der iFrame eine eindeutige Kennung namens mcmId zurück. Dadurch können IT-Administratoren mehrere Profile für dieselbe Anwendung erstellen.

Konfigurationsprofile bearbeiten

Im iFrame können gespeicherte Konfigurationsprofile angezeigt werden. IT-Administratoren können die Einstellungen in einem Profil aktualisieren und ihre Änderungen speichern.

Konfigurationsprofile löschen

IT-Administratoren können Konfigurationsprofile aus dem iFrame löschen. Diese Funktion ist standardmäßig deaktiviert.

iFrame zur Konsole hinzufügen

Webtoken generieren

Verwenden Sie enterprises.webTokens.create, um ein Webtoken zu generieren, das das Unternehmen identifiziert, und setzen Sie iframeFeature auf MANAGED_CONFIGURATIONS. Sie müssen das zurückgegebene Token zusammen mit anderen Parametern angeben, wenn Sie den iFrame in Ihrer Konsole rendern.

iFrame rendern

Hier ein Beispiel für das Rendern des iFrames für verwaltete Konfigurationen:

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

URL-Parameter

In der folgenden Tabelle sind alle verfügbaren Parameter für die iFrame-URL aufgeführt.

ParameterErforderlichBeschreibung
token Ja Das von Enterprises.createWebToken zurückgegebene Token.
packageName Ja Die Produkt-ID der App. Beispiel: com.google.android.gm.
mcmId Nein Die ID eines verwalteten Konfigurationsprofils.
canDelete Nein Falls TRUE, wird eine Schaltfläche im iFrame aktiviert, mit der IT-Administratoren das verwaltete Konfigurationsprofil löschen können. Wenn FALSE (Standardwert), ist die Schaltfläche deaktiviert.
locale Nein Ein korrekt formatiertes BCP 47 Language-Tag, das zum Lokalisieren der Inhalte im iFrame verwendet wird. Wenn keine Angabe erfolgt, wird der Standardwert en_US verwendet.

iFrame-Ereignisse

Sie sollten im Rahmen der Integration auch die folgenden Ereignisse verarbeiten.

VeranstaltungBeschreibung
onconfigupdated Der Nutzer aktualisiert ein vorhandenes verwaltetes Konfigurationsprofil oder erstellt ein neues. Dadurch wird ein Objekt zurückgegeben, das Folgendes enthält:
{
  "mcmId": The ID of the managed configurations profile.
  "name": The name of the updated or newly created managed configurations profile.
}
onconfigdeleted Der Nutzer löscht ein vorhandenes verwaltetes Konfigurationsprofil. Dadurch wird ein Objekt zurückgegeben, das
{
  "mcmId": The ID of the managed configurations profile.
}
enthält.

Das folgende Beispiel zeigt, wie auf onconfigupdated gewartet wird:

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

Aktualisierungen des Schemas für verwaltete Konfigurationen einer App

Wenn der Entwickler das verwaltete Konfigurationsschema einer Anwendung aktualisiert, werden gespeicherte Konfigurationsprofile automatisch aktualisiert. Wenn der Entwickler beispielsweise eine Option entfernt, wird sie aus allen vorhandenen Konfigurationsprofilen für die App entfernt. Wenn der Entwickler eine Option hinzufügt, wird der vom Entwickler festgelegte Standardwert für die Option allen vorhandenen Konfigurationsprofilen für die App hinzugefügt.

Konfigurationsprofile auf Richtlinie anwenden

Jedes Konfigurationsprofil wird als eindeutige mcmId gespeichert. Geben Sie mcmId in managedConfigurationTemplate an, um ein Konfigurationsprofil auf eine Richtlinie anzuwenden.


Verhalten der Auswahl/Auswahl aufheben

Mit dem iFrame für verwaltete Konfigurationen können IT-Administratoren jetzt die Anwendungseinschränkungen einer verwalteten Konfiguration explizit aufheben, wenn sie sie nicht benötigen. Dies ist eine Änderung gegenüber dem vorherigen Verhalten und kann sich darauf auswirken, welche Einschränkungen je nach Auswahl des Administrators an Ihre Anwendung gesendet werden.

Im folgenden Abschnitt wird beschrieben, wie sich der iFrame für verwaltete Konfigurationen mit diesem neuen Auswahlmuster verhält und was Entwickler als Teil ihrer verwalteten Konfiguration erwarten können.

Standardwert für eine App-Einschränkung verwenden

Wenn die App-Einschränkungen vom Typ bool, choice, integer, Mehrfachauswahl oder String einen Standardwert haben, wird der Standardwert als Wert der App-Einschränkung angewendet, wenn Administratoren die verwaltete Konfiguration speichern, ohne Änderungen an dieser App-Einschränkung vorzunehmen.

Beispiel mit dem folgenden Anwendungseinschränkungsschema:

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

Folgende App-Einschränkungen werden an das Gerät gesendet:

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

Ohne Standardwerte für App-Einschränkungen zu verwenden

Wenn für die Anwendungseinschränkungen des Typs bool, choice, integer, Mehrfachauswahl oder string kein Standardwert festgelegt ist, werden diese Anwendungseinschränkungen nicht angewendet, wenn Administratoren die verwaltete Konfiguration speichern, ohne Änderungen an der App-Einschränkung vorzunehmen.

Beispiel mit dem folgenden Anwendungseinschränkungsschema:

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

Folgende App-Einschränkungen werden an das Gerät gesendet:

"restrictions": [
    // Empty
]

Bundles im Schema verwenden

Dieser Abschnitt gilt für Einschränkungen für Bundle-Apps:

Mindestens eine Einschränkung für untergeordnete Apps mit einem Standardwert in einer Einschränkung für Bundle-Apps muss vorhanden sein.

Wenn in der App-Einschränkung Bundle mindestens eine der untergeordneten App-Einschränkungen vom Typ bool, choice, integer, Mehrfachauswahl oder String mit einem Standardwert enthalten ist, wird der Standardwert als Wert der App-Einschränkung angewendet. Alle ohne Standardwerte werden ausgeschlossen, wenn Administratoren die verwaltete Konfiguration speichern, ohne Änderungen an der App-Einschränkung vorzunehmen.

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

Folgende App-Einschränkungen werden an das Gerät gesendet:

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

Alle untergeordneten App-Einschränkungen ohne Standardwerte

Wenn in der App-Einschränkung des Bundle alle untergeordneten App-Einschränkungen mit dem Typ bool, choice, integer, Mehrfachauswahl oder String keinen Standardwert enthalten, wird die App-Einschränkung für Bundle nicht berücksichtigt, wenn Administratoren die verwaltete Konfiguration speichern, ohne Änderungen an der App-Einschränkung vorzunehmen.

Beispiel mit dem folgenden Anwendungseinschränkungsschema:

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

Folgende App-Einschränkungen werden an das Gerät gesendet:

"restrictions": [
    // Empty
]

„bundle_array“ im Schema verwenden

Dieser Abschnitt bezieht sich auf Einschränkungen der App bundle_array. Es ist nicht relevant, wenn die Einschränkungen der untergeordneten Anwendung mit dem Typ bool, choice, integer, Mehrfachauswahl oder string Standardwerte haben.

Beispiel mit dem folgenden Anwendungseinschränkungsschema:

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

Mindestens eine Bundle-Gruppe in der Einschränkung der App „bundle_array“

Wenn mindestens eine Bundle-Gruppe festgelegt ist, wird die Einschränkung der App bundle_array eingeschlossen, wenn Administratoren die verwaltete Konfiguration speichern.

Folgende App-Einschränkungen werden an das Gerät gesendet:

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

Wenn eine Einschränkung oder Bundle-Gruppe gespeichert wird, werden alle Einschränkungen/Bundles innerhalb der gesamten bundle_array nach der folgenden Priorität festgelegt:

  • den vom Administrator ausgewählten Wert
  • der für das Set bzw. die Einschränkung aufgeführte Standardwert ist.
  • Der Wert, der im iFrame angezeigt wird, wenn kein Standardwert vorhanden ist

Keine Bundle-Gruppen in der App-Einschränkung „bundle_array“

Die Einschränkung der App bundle_array wird nicht angewendet, wenn Administratoren die verwaltete Konfiguration speichern, ohne eine Bundle-Gruppe hinzuzufügen. Folgende App-Einschränkungen werden an das Gerät gesendet:

"restrictions": [
    // Empty
]