アプリの設定

企業向けに設計されたアプリには、IT 管理者がリモートで構成できる構成管理と呼ばれる組み込み設定が含まれています。たとえば、アプリはデバイスが Wi-Fi に接続されている場合にのみデータを同期できます。IT 管理者が管理対象構成を指定してデバイスに適用できるようにすることは、すべてのソリューション セットの要件です。

下の図は、管理対象設定管理の主要な段階の一部と、Google Play EMM API で利用できるオプションの概要を示しています。

アプリが管理対象設定をサポートしているかどうかを確認する

Products.getAppRestrictionsSchema を使用して、アプリが管理対象設定をサポートしているかどうかを判断します。Java 用 Google Play EMM API クライアント ライブラリの使用例を次に示します。

public AppRestrictionsSchema getAppRestrictionsSchema(String enterpriseId,
    String productId, String language) throws IOException {
  return androidEnterprise
     .product()
     .getAppRestrictionsSchema(enterpriseId, productId, language)
     .execute();
}

すべてのアプリは、アプリ制限(管理対象設定)スキーマを返します。呼び出しから空のスキーマが返された場合、アプリは構成の管理をサポートしていません。呼び出しから一連の制限を含むスキーマが返された場合、アプリは管理対象設定をサポートします。たとえば、VPN 経由のリモート印刷を有効にするプロパティを持つアプリは、Products.getAppRestrictionsSchema に次のレスポンスを返します。

    {
      "kind": "androidenterprise#appRestrictionsSchema",
      "restrictions": [
        {
          "key": "printing_enabled",
          "title": "Enable printing",
          "restrictionType": "bool",
          "description": "Allow user to print from the app",
          "defaultValue": {
            "type": "bool",
            "valueBool": true,
          }
        },
        {
          "key": "vpn_configurations",
          "title": "VPN configurations",
          "restrictionType": "bundle_array",
          "description": "List of VPN configurations",
          "nestedRestriction": [
            {
              "key": "vpn_configuration",
              "title": "VPN configuration",
              "restrictionType": "bundle",
              "nestedRestrictions": [
                {
                  "key": "server",
                  "title": "VPN server host",
                  "restrictionType": "string"
                },
                {
                  "key": "username",
                  "title": "VPN account username",
                  "restrictionType": "string"
                }
              ]
            }
          ]
        }
      ]
    }

管理対象設定を指定する

管理対象構成をサポートするアプリの場合、IT 管理者が EMM コンソールから管理対象構成の iframe を埋め込むか、独自の UI を開発することで、それらの設定を EMM コンソールから行えます。

オプション 1: 管理対象設定の iframe を埋め込む

管理対象設定をサポートする最も簡単な方法は、EMM コンソールに管理対象設定 iframe を埋め込むことです。iframe は、指定されたアプリの管理対象構成スキーマを取得し、IT 管理者はカスタム構成プロファイルを保存、編集、削除できます。Play EMM API を使用して、ユーザーのデバイスにカスタム プロファイルを適用できます。iframe の詳細とコンソールに追加する方法については、マネージド構成の iframe をご覧ください。

オプション 2: 独自の UI を作成する

Products.getAppRestrictionsSchema から返された構成を使用して、IT 管理者がアプリの構成を管理できる独自の UI を作成できます。

管理対象設定を適用する

管理対象構成をデバイスに適用するには、Device Policy Controller を作成するで説明されているように、DPC を DPC サポート ライブラリと統合する必要があります。DPC サポート ライブラリは、管理対象構成を適用するための Google Play への委任を透過的に処理します。

管理対象設定をデバイスに適用するには、Devicepolicypolicy.productPolicy.managedConfiguration を設定します。

mcmId を使用する

IT 管理者が管理対象構成の iframe から新しい構成プロファイルを保存するたびに、iframe は mcmId という一意の識別子を返します。mcmId には、適用できるデバイスの数に制限はなく、有効期限もありません。

デバイスに構成プロファイルを適用するには、Devicepolicypolicy.productPolicy.managedConfiguration.configurationVariables.mcmId を設定します。

IT 管理者が管理対象構成の iframe で変数($FirstName、$LastName など)を使用できるようにするには、policy.productPolicy[].managedConfiguration.configurationVariables.mcmId.variableSet[] を使用してプロファイルに含まれる変数を定義する必要があります。

管理対象プロパティのリストを使用する

また、Devicepolicypolicy.productPolicy.managedConfiguration.managedProperty[] を設定することで、一連のマネージド プロパティを含めることもできます。

以下の例は、構成を定義する方法を示しています。この構成には、2 つのバンドル プロパティ(このケースでは VPN のプロパティである関連プロパティのグループ)で構成される bundle_array(リスト)が含まれています。

    ManagedConfiguration managedConfiguration = new ManagedConfiguration()
      .setManagedProperty(
        ImmutableList.of(
            new ManagedProperty()
                .setKey("printing_enabled")
                .setValueBool(true),
            new ManagedProperty()
                .setKey("vpn_configurations")
                .setValueBundleArray(
                    ImmutableList.of(
                        new ManagedPropertyBundle().setManagedProperty(
                            ImmutableList.of(
                                new ManagedProperty()
                                    .setKey("server")
                                    .setValueString("vpn1.example.com"),
                                new ManagedProperty()
                                    .setKey("username")
                                    .setValueString("john.doe"))),
                        new ManagedPropertyBundle().setManagedProperty(
                            ImmutableList.of(
                                new ManagedProperty()
                                    .setKey("server")
                                    .setValueString("vpn2.example.com"),
                                new ManagedProperty()
                                    .setKey("username")
                                    .setValueString("jane.doe")))))));

アプリがサポートするさまざまな構成プロパティについて詳しくは、管理対象構成を定義するをご覧ください。

アプリの構成プロファイルを一覧表示する

ソリューションの設計方法によっては、アプリに対して保存されている構成プロファイルのリストを表示する必要がある場合があります。このリストを取得するには、Managedconfigurationssettings.list を呼び出します。