기업용으로 설계된 일부 앱에는 IT 관리자가 원격으로 구성할 수 있는 관리 구성이라는 기본 제공 설정이 포함되어 있습니다. 예를 들어 앱이 기기가 Wi-Fi에 연결되어 있을 때만 데이터를 동기화하는 옵션이 있을 수 있습니다. IT 관리자에게 관리 구성을 지정하고 기기에 적용할 수 있는 기능을 제공하는 것은 모든 솔루션 세트의 요구사항입니다. EMM 콘솔에서 관리 구성을 지원하는 방법에는 두 가지가 있습니다.
- 고유 UI를 만들고 ApplicationPolicy의
managedConfiguration
를 통해 설정을 적용합니다. - 관리 구성 iframe을 콘솔에 추가하고 (아래 자세한 안내 참조) ApplicationPolicy에서
managedConfigurationTemplate
를 통해 설정을 적용합니다.
관리 구성 iframe은 IT 관리자가 앱의 관리 구성 설정을 저장, 수정, 삭제할 수 있는 삽입 가능한 UI입니다. 예를 들어 앱의 세부정보나 설정 페이지에 iframe을 여는 버튼 (또는 유사한 UI 요소)을 표시할 수 있습니다.
IT 관리자가 iframe에서 할 수 있는 작업
![MCM iframe](https://developers.google.cn/static/android/work/play/emm-api/images/mcm_iframe.png?authuser=3&hl=ko)
구성 프로필 설정 및 저장
iframe은 지정된 앱의 관리 구성 스키마를 검색하여 표시합니다. IT 관리자는 iframe 내에서 구성을 설정하고 이를 구성 프로필로 저장할 수 있습니다. IT 관리자가 새 구성 프로필을 저장할 때마다 iframe은 mcmId
라는 고유 식별자를 반환합니다.
이렇게 하면 IT 관리자가 동일한 앱에 대해 여러 프로필을 만들 수 있습니다.
구성 프로필 수정
iframe은 저장된 구성 프로필을 표시할 수 있습니다. IT 관리자는 프로필 내에서 설정을 업데이트하고 변경사항을 저장할 수 있습니다.
구성 프로필 삭제
IT 관리자는 iframe에서 구성 프로필을 삭제할 수 있습니다. 이 기능은 기본적으로 사용 중지되어 있습니다.
콘솔에 iframe 추가
웹 토큰 생성
enterprises.webTokens.create
를 사용하여 기업을 식별하는 웹 토큰을 생성하고 iframeFeature
를 MANAGED_CONFIGURATIONS
로 설정합니다. 콘솔에서 iframe을 렌더링할 때는 다른 매개변수와 함께 반환된 토큰을 포함해야 합니다.
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 |
아니요 | 관리 구성 프로필의 ID입니다. |
canDelete |
아니요 | TRUE이면 IT 관리자가 관리 구성 프로필을 삭제할 수 있는 버튼을 iframe에서 사용 설정합니다. FALSE (기본값)인 경우 버튼이 사용 중지됩니다. |
locale |
아니요 | 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);
앱의 관리 구성 스키마 업데이트
개발자가 앱의 관리 구성 스키마를 업데이트하면 저장된 구성 프로필이 자동으로 업데이트됩니다. 예를 들어 개발자가 옵션을 삭제하면 옵션이 앱의 모든 기존 구성 프로필에서 삭제됩니다. 개발자가 옵션을 추가하면 (개발자가 정의한) 옵션의 기본값이 앱의 모든 기존 구성 프로필에 추가됩니다.
정책에 구성 프로필 적용
각 구성 프로필은 고유한 mcmId
로 저장됩니다. 구성 프로필을 정책에 적용하려면 managedConfigurationTemplate
에 mcmId
를 지정합니다.
선택/선택 해제 동작 이해
이제 관리 구성 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
내의 모든 제한사항/번들이 다음 우선순위에 따라 설정됩니다.
- 관리자가 선택한 값입니다.
- 해당 번들/제한에 표시된 기본값
- 기본값이 없는 경우 iFrame에 표시되는 값
bundle_array 앱 제한에 번들 그룹이 없습니다.
관리자가 번들 그룹을 추가하지 않고 관리 구성을 저장하면 bundle_array 앱 제한이 포함되지 않습니다. 기기에 전송되는 앱 제한은 다음과 같습니다.
"restrictions": [
// Empty
]