マネージド構成のサポート

企業向けに設計されたアプリには、IT 管理者がリモートで構成できる「管理対象設定」という設定が組み込まれています。たとえば、デバイスが Wi-Fi に接続されている場合にのみデータを同期するオプションがある場合があります。すべてのソリューション セットでは、IT 管理者が管理対象構成を指定してデバイスに適用できるようにする必要があります。EMM コンソールで管理対象設定をサポートするには、次の 2 つの方法があります。

  • 独自の UI を作成し、ApplicationPolicymanagedConfiguration を介して設定を適用します。
  • 管理対象構成の iframe をコンソールに追加し(手順は後述)、ApplicationPolicymanagedConfigurationTemplate を使用して設定を適用します。


管理対象構成 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.webTokens.create を使用して企業を識別するウェブトークンを生成し、iframeFeatureMANAGED_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 の場合、iframe 内のボタンが有効になり、IT 管理者が管理対象構成プロファイルを削除できるようになります。FALSE(デフォルト値)の場合、ボタンは無効になります。
locale × iframe 内のコンテンツのローカライズに使用される、正しい形式の BCP 47 言語タグ。指定しない場合、デフォルト値は 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 として保存されます。構成プロファイルをポリシーに適用するには、managedConfigurationTemplatemcmId を指定します。


選択/選択解除の動作について

IT 管理者は、管理対象構成の iframe を使用して、不要な管理対象構成のアプリ制限を明示的に選択解除できるようになりました。これは以前の動作からの変更であり、管理者の選択に基づいてアプリに送信される制限に影響する可能性があります。

以下のセクションでは、この新しい選択解除パターンでの管理対象設定 iframe の動作と、デベロッパーが管理対象設定の一部として送信される内容について説明します。

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

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

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

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

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

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

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

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

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

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

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

"restrictions": [
    // Empty
]

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

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

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

バンドルのアプリ制限内で、boolchoiceinteger複数選択string 型の子アプリの制限の少なくとも 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複数選択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 アプリの制限に適用されます。boolchoiceinteger複数選択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 アプリの制限にバンドル グループが 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
            }
        }]
    }]
}]

1 つの制限またはバンドル グループが保存されている場合は、bundle_array 全体のすべての制限/バンドルが、次の優先順位で設定されます。

  • 管理者が選択した値
  • そのバンドル/制限に対してリストされているデフォルト値。
  • デフォルト値がない場合に iframe に表示される値

bundle_array のアプリの制限にバンドル グループがありません

管理者が bundle グループを追加せずに管理対象設定を保存した場合、bundle_array アプリの制限は含まれません。デバイスに送信されるアプリの制限は次のとおりです。

"restrictions": [
    // Empty
]