管理対象設定の iframe

管理対象構成の iframe は、IT 管理者はアプリの管理対象構成の設定を保存、編集、削除できる埋め込み可能な UI です。たとえば、iframe を開くアプリの詳細ページまたは設定ページにボタン(または同様の UI 要素)を表示できます。

IT 管理者が iframe から行える操作

iframe 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 × 管理対象構成プロファイルの 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 の動作と、デベロッパーが管理対象設定の一部として送信されることを概説します。

アプリの制限にデフォルト値を使用する

boolchoiceinteger複数選択文字列のアプリ制限にデフォルト値が指定されている場合、そのアプリ制限に変更を加えずに管理者が管理対象構成を保存すると、アプリ制限の値としてデフォルト値が適用されます。

たとえば、次のアプリ制限スキーマがあるとします。

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

デバイスに送信されるアプリの制限は次のとおりです。

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

アプリの制限にデフォルト値を使用しない場合

boolchoiceinteger複数選択文字列のアプリ制限タイプにデフォルト値が指定されていない場合、管理者がそのアプリの制限に変更を加えずに管理対象構成を保存する際、それらのアプリの制限は含まれません。

たとえば、次のアプリ制限スキーマがあるとします。

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

デバイスに送信されるアプリの制限は次のとおりです。

"restrictions": [
    // Empty
]

スキーマ内でのバンドルの使用

このセクションは、バンドルアプリの制限に適用されます。

Bundle アプリの制限にデフォルト値を持つ子アプリ制限が 1 つ以上ある

バンドルのアプリ制限内で、boolchoiceinteger複数選択文字列の子アプリの制限の少なくとも 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.
    ]
}]

デフォルト値を使用しない子アプリのすべての制限

バンドル アプリの制限内で、boolchoiceinteger複数選択文字列の子アプリのすべての制限にデフォルト値が指定されていない場合、管理者が管理対象の構成を保存する際に、そのアプリの制限に変更を適用することなく、バンドルのアプリ制限は含まれません。

たとえば、次のアプリ制限スキーマがあるとします。

"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 アプリの制限に適用されます。boolchoiceinteger複数選択文字列の型を使用する子アプリの制限にデフォルト値がある場合、関係ありません。

たとえば、次のアプリ制限スキーマがあるとします。

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