管理対象構成の iframe は、IT 管理者はアプリの管理対象構成の設定を保存、編集、削除できる埋め込み可能な UI です。たとえば、iframe を開くアプリの詳細ページまたは設定ページにボタン(または同様の UI 要素)を表示できます。
IT 管理者が 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 |
× | 管理対象構成プロファイルの ID。 |
canDelete |
× | TRUE の場合、iframe のボタンが有効になり、IT 管理者はこのボタンを使って管理対象構成プロファイルを削除できます。FALSE(デフォルト値)の場合、ボタンは無効になります。 |
locale |
× | 正しい形式の BCP 47 言語タグ。iframe 内のコンテンツをローカライズするために使用されます。指定しない場合、デフォルト値は 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、複数選択、文字列のアプリ制限にデフォルト値が指定されている場合、そのアプリ制限に変更を加えずに管理者が管理対象構成を保存すると、アプリ制限の値としてデフォルト値が適用されます。
たとえば、次のアプリ制限スキーマがあるとします。
"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、複数選択、文字列のアプリ制限タイプにデフォルト値が指定されていない場合、管理者がそのアプリの制限に変更を加えずに管理対象構成を保存する際、それらのアプリの制限は含まれません。
たとえば、次のアプリ制限スキーマがあるとします。
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool"
// defaultValue absent.
}]
デバイスに送信されるアプリの制限は次のとおりです。
"restrictions": [
// Empty
]
スキーマ内でのバンドルの使用
このセクションは、バンドルアプリの制限に適用されます。
Bundle アプリの制限にデフォルト値を持つ子アプリ制限が 1 つ以上ある
バンドルのアプリ制限内で、bool、choice、integer、複数選択、文字列の子アプリの制限の少なくとも 1 つにデフォルト値が指定されている場合、そのアプリ制限に変更を適用せずに管理対象構成を保存すると、デフォルト値がアプリ制限の値として適用され、デフォルト値がないものが除外されます。
"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、複数選択、文字列の子アプリのすべての制限にデフォルト値が指定されていない場合、管理者が管理対象の構成を保存する際に、そのアプリの制限に変更を適用することなく、バンドルのアプリ制限は含まれません。
たとえば、次のアプリ制限スキーマがあるとします。
"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、複数選択、文字列の型を使用する子アプリの制限にデフォルト値がある場合、関係ありません。
たとえば、次のアプリ制限スキーマがあるとします。
"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 アプリ制限に少なくとも 1 つのバンドル グループがある
少なくとも 1 つの bundle グループが設定されている場合、管理者が管理対象構成を保存する際に 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 グループを追加せずに管理対象構成を保存する場合、bundle_array アプリ制限は含まれません。デバイスに送信されるアプリの制限は次のとおりです。
"restrictions": [
// Empty
]