관리 구성 iframe

관리 구성 iframe은 IT 관리자가 앱의 관리 구성 설정을 저장, 수정, 삭제할 수 있는 삽입 가능한 UI입니다. 예를 들어 iframe을 여는 앱의 세부정보나 설정 페이지에 버튼 (또는 유사한 UI 요소)을 표시할 수 있습니다.

iframe에서 IT 관리자가 수행할 수 있는 작업

MCM iframe
그림 1. Gmail의 관리 구성 iframe 예

구성 프로필 설정 및 저장

iframe은 지정된 앱의 관리 구성 스키마를 검색하여 표시합니다. IT 관리자는 iframe 내에서 구성을 설정하고 이를 구성 프로필로 저장할 수 있습니다. IT 관리자가 새 구성 프로필을 저장할 때마다 iframe은 mcmId라는 고유 식별자를 반환합니다. 이렇게 하면 IT 관리자가 동일한 앱에 대해 여러 개의 프로필을 만들 수 있습니다.

구성 프로필 수정

iframe은 저장된 구성 프로필을 표시할 수 있습니다. IT 관리자는 프로필 내의 설정을 업데이트하고 변경사항을 저장할 수 있습니다.

구성 프로필 삭제

IT 관리자는 iframe에서 구성 프로필을 삭제할 수 있습니다. 이 기능은 기본적으로 사용 중지되어 있습니다.

콘솔에 관리 구성 iframe 표시

웹 토큰 생성

Enterprises.createWebToken를 사용하여 기업을 식별하는 웹 토큰을 생성합니다. 콘솔에서 iframe을 렌더링할 때는 반환된 토큰을 다른 매개변수와 함께 포함해야 합니다. 다음 예는 Java용 Google Play EMM API 클라이언트 라이브러리를 사용하여 토큰을 검색하는 방법을 보여줍니다.

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

iframe 렌더링

다음은 관리 구성 iframe을 렌더링하는 방법의 예입니다.

<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 매개변수

아래 표에는 iframe URL에 사용할 수 있는 모든 매개변수가 나와 있습니다.

매개변수필수설명
token 지원됨 Enterprises.createWebToken에서 반환된 토큰입니다.
packageName 지원됨 앱의 제품 ID입니다(예: com.google.android.gm).
mcmId No 관리 구성 프로필의 ID입니다.
canDelete No TRUE이면 IT 관리자가 관리 구성 프로필을 삭제할 수 있는 버튼을 iframe에 사용 설정합니다. FALSE (기본값)인 경우 버튼이 사용 중지됩니다.
locale No iframe의 콘텐츠를 현지화하는 데 사용되는 올바른 형식의 BCP 47 language 태그 지정하지 않으면 기본값은 en_US입니다.

iframe 이벤트

또한 통합의 일부로 다음 이벤트도 처리해야 합니다.

이벤트설명
onconfigupdated 사용자가 기존 관리 구성 프로필을 업데이트하거나 새 프로필을 만듭니다. 그러면 다음이 포함된 객체가 반환됩니다.
{
  "mcmId": The ID of the managed configurations profile.
  "name": The name of the updated or newly created managed configurations profile.
}
onconfigdeleted 사용자가 기존 관리 구성 프로필을 삭제하는 경우 그러면 다음이 포함된 객체가 반환됩니다.
{
  "mcmId": The ID of the managed configurations profile.
}

아래 샘플은 예를 들어 onconfigupdated를 수신 대기하는 방법을 보여줍니다.

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

앱의 관리 구성 스키마 업데이트

개발자가 앱의 관리 구성 스키마를 업데이트하면 저장된 구성 프로필이 자동으로 업데이트됩니다. 예를 들어 개발자가 옵션을 삭제하면 옵션이 앱의 모든 기존 구성 프로필에서 삭제됩니다. 개발자가 옵션을 추가하면 (개발자가 정의한 옵션의 기본값이 앱의 모든 기존 구성 프로필에 추가됩니다.)

사용자의 기기에 관리 구성 적용

사용자의 기기에 관리 구성을 적용하는 방법을 알아보려면 관리 구성 적용을 참고하세요.


선택/선택 해제 동작 이해하기

이제 관리 구성 iframe을 사용하면 IT 관리자가 필요 없는 관리 구성의 앱 제한을 명시적으로 선택 해제할 수 있습니다. 이는 이전 동작에서 변경된 것으로, 관리자의 선택에 따라 앱에 전송되는 제한사항에 영향을 미칠 수 있습니다.

아래 섹션에서는 관리 구성 iframe이 이 새로운 선택 해제 패턴에서 작동하는 방식과 개발자가 관리 구성의 일부로 전송될 것으로 예상되는 내용을 설명합니다.

앱 제한에 기본값 사용

bool, choice, integer, multi-select, string 유형의 앱 제한이 기본값과 함께 제공되는 경우 관리자가 앱 제한에 변경사항을 적용하지 않고 관리 구성을 저장하면 앱 제한 값으로 기본값이 적용됩니다.

예를 들어 다음과 같은 앱 제한 스키마가 있습니다.

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

기기에 전송되는 앱 제한은 다음과 같습니다.

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

앱 제한에 기본값을 사용하지 않음

bool, choice, integer, multi-select, string 유형의 앱 제한이 기본값과 함께 제공되지 않으면 관리자가 앱 제한의 변경사항을 적용하지 않고 관리 구성을 저장할 때 이러한 앱 제한이 포함되지 않습니다.

예를 들어 다음과 같은 앱 제한 스키마가 있습니다.

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

기기에 전송되는 앱 제한은 다음과 같습니다.

"restrictions": [
    // Empty
]

스키마 내에서 번들 사용

이 섹션은 번들 앱 제한에 적용됩니다.

번들 앱 제한에 기본값이 있는 하위 앱 제한이 하나 이상 있음

번들 앱 제한 내에서 bool, choice, integer, multi-select 또는 string 유형의 하위 앱 제한 중 하나 이상이 기본값으로 제공되는 경우 기본값은 앱 제한의 값으로 적용되고 기본값이 없는 제한은 관리자가 앱에 변경사항을 적용하지 않고 관리 구성을 저장하면 제외됩니다.

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

기기에 전송되는 앱 제한은 다음과 같습니다.

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

기본값이 없는 모든 하위 앱 제한사항

번들 앱 제한 내에서 bool, choice, integer, multi-select 또는 string 유형의 모든 하위 앱 제한이 기본값과 함께 제공되지 않으면 관리자가 앱 제한의 변경사항을 적용하지 않고 관리 구성을 저장하면 번들 앱 제한이 포함되지 않습니다.

예를 들어 다음과 같은 앱 제한 스키마가 있습니다.

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

기기에 전송되는 앱 제한은 다음과 같습니다.

"restrictions": [
    // Empty
]

스키마 내에서 bundle_array 사용

이 섹션은 bundle_array 앱 제한에 적용됩니다. bool, choice, integer, multi-select, string 유형의 하위 앱 제한에 기본값이 있는지는 관련이 없습니다.

예를 들어 다음과 같은 앱 제한 스키마가 있습니다.

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

bundle_array 앱 제한에 번들 그룹이 하나 이상 있음

번들 그룹이 하나 이상 설정된 경우 관리자가 관리 구성을 저장하면 bundle_array 앱 제한이 포함됩니다.

기기에 전송되는 앱 제한은 다음과 같습니다.

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

bundle_array 앱 제한에 번들 그룹이 없음

관리자가 번들 그룹을 추가하지 않고 관리 구성을 저장하면 bundle_array 앱 제한은 포함되지 않습니다. 기기에 전송되는 앱 제한은 다음과 같습니다.

"restrictions": [
    // Empty
]