Obsługa konfiguracji zarządzanych

Niektóre aplikacje przeznaczone dla firm mają wbudowane ustawienia nazywane konfiguracjami zarządzanymi, które administratorzy IT mogą konfigurować zdalnie. Na przykład aplikacja może mieć opcję synchronizowania danych tylko wtedy, gdy urządzenie jest połączone z Wi-Fi. W przypadku wszystkich zestawów rozwiązań wymagane jest umożliwienie administratorom IT określania konfiguracji zarządzanych i stosowania ich na urządzeniach. Konfiguracje zarządzane możesz obsługiwać w konsoli EMM na 2 sposoby:

  • Utwórz własny interfejs i zastosuj ustawienia za pomocą managedConfiguration w ApplicationPolicy.
  • Dodaj do konsoli element iframe konfiguracji zarządzanych (instrukcje znajdziesz poniżej) i zastosuj ustawienia za pomocą managedConfigurationTemplate w ApplicationPolicy


Element iframe konfiguracji zarządzanej to możliwy do umieszczenia interfejs, który pozwala administratorom IT zapisywać, edytować i usuwać ustawienia konfiguracji zarządzanej aplikacji. Możesz na przykład wyświetlać przycisk (lub podobny element interfejsu) w szczegółach aplikacji lub na stronie ustawień, która otwiera element iframe.

Działania dostępne dla administratorów IT z poziomu elementu iframe

element iframe mcm
Rysunek 1. Przykładowe elementy iframe konfiguracji zarządzanych w Gmailu.

Ustawianie i zapisywanie profili konfiguracji

Element iframe pobiera i wyświetla schemat konfiguracji zarządzanych dla określonej aplikacji. W elemencie iframe administrator IT może ustawiać konfiguracje i zapisywać je jako profile konfiguracji. Za każdym razem, gdy administrator IT zapisuje nowy profil konfiguracji, element iframe zwraca unikalny identyfikator o nazwie mcmId. Dzięki temu administratorzy IT mogą tworzyć wiele profili dla tej samej aplikacji.

Edytowanie profili konfiguracji

Element iframe może wyświetlać zapisane profile konfiguracji. Administratorzy IT mogą aktualizować ustawienia w profilu i zapisywać zmiany.

Usuń profile konfiguracji

Administratorzy IT mogą usuwać profile konfiguracji z elementu iframe. Ta funkcja jest domyślnie wyłączona.

Dodawanie elementu iframe do konsoli

Generowanie tokena internetowego

Użyj enterprises.webTokens.create do wygenerowania tokena internetowego, który identyfikuje firmę, i ustaw iframeFeature na MANAGED_CONFIGURATIONS. Podczas renderowania elementu iframe w konsoli musisz uwzględnić zwrócony token wraz z innymi parametrami.

Renderowanie elementu iframe

Oto przykład renderowania elementu iframe konfiguracji zarządzanej:

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

Parametry adresu URL

Tabela poniżej zawiera wszystkie dostępne parametry adresu URL elementu iframe.

ParametrWymaganeOpis
token Tak Token zwrócony z Enterprises.createWebToken.
packageName Tak Identyfikator produktu aplikacji. Na przykład com.google.android.gm.
mcmId Nie Identyfikator profilu konfiguracji zarządzanych.
canDelete Nie Jeśli ma wartość TRUE, włącza w elemencie iframe przycisk, który umożliwia administratorom IT usunięcie profilu konfiguracji zarządzanej. Jeśli FALSE (wartość domyślna), przycisk jest wyłączony.
locale Nie Prawidłowo utworzony tag języka BCP 47, który służy do zlokalizowania treści w elemencie iframe. Jeśli nie podasz żadnej wartości, domyślną wartością będzie en_US.

Zdarzenia iframe

W ramach integracji musisz też obsługiwać poniższe zdarzenia.

ZdarzenieOpis
onconfigupdated Użytkownik zaktualizuje istniejący profil konfiguracji zarządzanej lub utworzy nowy. Zwraca on obiekt zawierający:
{
  "mcmId": The ID of the managed configurations profile.
  "name": The name of the updated or newly created managed configurations profile.
}
onconfigdeleted Użytkownik usuwa istniejący profil konfiguracji zarządzanych. Zwraca on obiekt zawierający:
{
  "mcmId": The ID of the managed configurations profile.
}

Poniższy przykład pokazuje, jak nasłuchiwać onconfigupdated:

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

Aktualizacje schematu konfiguracji zarządzanych aplikacji

Jeśli deweloper zaktualizuje schemat konfiguracji zarządzanej aplikacji, zapisane profile konfiguracji zostaną automatycznie zaktualizowane. Jeśli na przykład deweloper usunie daną opcję, zostanie ona usunięta ze wszystkich istniejących profili konfiguracji aplikacji. Jeśli deweloper doda opcję, jej domyślna wartość (zdefiniowana przez dewelopera) zostanie dodana do wszystkich istniejących profili konfiguracji aplikacji.

Zastosuj do zasady profile konfiguracji

Każdy profil konfiguracji jest zapisywany jako unikalny identyfikator mcmId. Aby zastosować do zasady profil konfiguracji, wpisz mcmId w managedConfigurationTemplate.


Opis działania zaznaczania/odznaczania

Element iframe konfiguracji zarządzanych umożliwia teraz administratorom IT jawne odznaczenie ograniczeń aplikacji w konfiguracji zarządzanej, gdy ich nie potrzebują. Jest to zmiana w stosunku do poprzedniego sposobu działania i może mieć wpływ na ograniczenia wysyłane do aplikacji na podstawie wyboru administratora.

W sekcji poniżej znajdziesz informacje o tym, jak działa element iframe konfiguracji zarządzanej po nowym wzorcu odznaczenia oraz jakie informacje mogą zostać wysłane przez deweloperów w ramach konfiguracji zarządzanej.

Używanie wartości domyślnej ograniczenia aplikacji

Jeśli ograniczenia aplikacji z typem bool, choice, integer, wybor wielokrotny lub ciąg znaków mają wartość domyślną, taka wartość jest stosowana jako wartość ograniczenia aplikacji po zapisaniu konfiguracji zarządzanej przez administratora bez wprowadzania w nim żadnych zmian.

Na przykład z tym schematem ograniczeń aplikacji:

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

Ograniczenia aplikacji wysyłane do urządzenia będą:

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

Bez wartości domyślnych ograniczeń aplikacji

Jeśli ograniczenia aplikacji z typem bool, wybór, całkowita, wybór wielokrotny lub ciąg znaków nie mają wartości domyślnej, te ograniczenia aplikacji nie zostaną uwzględnione, gdy administratorzy zapiszą konfigurację zarządzaną bez wprowadzania w nich zmian.

Na przykład z tym schematem ograniczeń aplikacji:

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

Ograniczenia aplikacji wysyłane do urządzenia będą:

"restrictions": [
    // Empty
]

Używanie pakietów w schemacie

Ta sekcja dotyczy ograniczeń dotyczących pakietów aplikacji:

mieć co najmniej 1 ograniczenie aplikacji dla dzieci z wartością domyślną w ograniczeniu dotyczącym aplikacji w pakiecie;

Jeśli w ramach ograniczenia w pakiecie co najmniej jedno z ograniczeń dotyczących aplikacji podrzędnych z typem bool, wybór, liczba całkowita, wybor wielokrotny lub ciąg znaków ma wartość domyślną, zostanie ona zastosowana jako wartość ograniczenia aplikacji, a te bez wartości domyślnych zostaną wykluczone, gdy administrator zapisze konfigurację zarządzaną bez stosowania żadnych zmian.

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

Ograniczenia aplikacji wysyłane do urządzenia będą:

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

Wszystkie ograniczenia aplikacji podrzędnych bez wartości domyślnych

Jeśli w ramach ograniczenia w pakiecie wszystkie ograniczenia aplikacji podrzędnych o typie bool, wybór, całkowite, wyborze wielokrotnego wyboru lub ciąg znaków w ramach pakietu, nie mają wartości domyślnej, to ograniczenie dotyczące pakietu nie zostanie uwzględnione, gdy administratorzy zapiszą konfigurację zarządzaną bez wprowadzania w niej żadnych zmian.

Na przykład z tym schematem ograniczeń aplikacji:

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

Ograniczenia aplikacji wysyłane do urządzenia będą:

"restrictions": [
    // Empty
]

Używanie atrybutu „bundle_array” w schemacie

Ta sekcja dotyczy ograniczeń aplikacji bundle_array. Nie ma znaczenia, jeśli ograniczenia aplikacji podrzędnych z typem bool, choice, integer, wyborem wielokrotnym lub ciągiem znaków mają wartości domyślne.

Na przykład z tym schematem ograniczeń aplikacji:

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

Używanie co najmniej 1 grupy pakietu w ograniczeniu aplikacji „bundle_array”

Jeśli skonfigurowana jest co najmniej 1 grupa bundle, ograniczenie aplikacji bundle_array zostanie uwzględnione, gdy administratorzy zapiszą konfigurację zarządzaną.

Ograniczenia aplikacji wysyłane do urządzenia będą:

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

Jeśli zapiszesz jedno ograniczenie lub grupę pakietów, wszystkie ograniczenia/pakiety w całym bundle_array będą miały następujący priorytet:

  • wartość wybrana przez administratora
  • wartość domyślną określoną dla danego pakietu/ograniczenia.
  • wartość wyświetlana w elemencie iframe, jeśli nie ma wartości domyślnej.

Brak grup pakietów w ograniczeniu aplikacjibundle_array

Ograniczenie aplikacji bundle_array nie będzie uwzględniane, gdy administratorzy zapisują konfigurację zarządzaną bez dodawania grupy bundle. Ograniczenia aplikacji wysyłane do urządzenia będą:

"restrictions": [
    // Empty
]