一般的な管理タスク

EMM は、このガイドで説明するタスクをはじめとする、さまざまな一般的な管理タスクを Android 向けエンタープライズ ソリューションに実装できます。このサンプルコードでは、Java® 用 Google Play EMM API クライアント ライブラリを使用しています。

ユーザーを検索して詳細を取得する

Google Play EMM API の多くは、アプリのインストール、利用資格の取得、ライセンスの取得など、ユーザー関連のタスクを行うために、(enterpriseId に加えて)userId を必要とします。一部の呼び出しではユーザー オブジェクトが必要です。

組織が managed Google Play アカウントを使用している場合は、ユーザーのメールアドレスとユーザー ID のマッピングを維持します。Google アカウントの場合は、UsersListResponse を使用します。

ユーザーを検索

このコードサンプルは、Google アカウントに関連付けられているユーザー ID を取得します。managed Google Play アカウントを使用する組織には適用されません。

この例では、User モデルと UsersListResponse モデルをコードにインポートしたことを前提としています。特定のユーザー アカウントを取得するには、enterpriseId とメールアドレスを UsersListResponse に渡して userId を取得します。

public UsersListResponse list(String enterpriseId, String email) throws
   IOException {
    return androidEnterprise
        .users()
        .list(enterpriseId, email)
        .execute();
}

ユーザーの詳細を取得する

userId を取得したら、他の詳細を取得できます。Users.Get をご覧ください。

public User get(String enterpriseId, String userId) throws IOException {
    return androidEnterprise
        .users()
        .get(enterpriseId, userId)
        .execute();
}

ユーザーにアプリへのアクセス権を付与する

Google Play EMM API を使用すると、ユーザーが managed Google Play ストアからアクセスできるアプリを制御できます。アプリへのアクセス権には、アプリの検索、表示、インストール、更新が含まれます。使用可能なアクセスレベルは 3 つあります。

  • 許可されているアプリのみ:特定のアプリにのみアクセスできます。
  • すべての承認済みアプリ: ユーザーは、企業で承認されたすべてのアプリにアクセスできます。
  • すべてのアプリ: ユーザーは、Google Play ストアで一般公開されているすべてのアプリにアクセスできます。

特定のアプリのみにアクセス権を付与する

以下の例は、managed Google Play ストアの特定のアプリセットへのアクセス権をユーザーに付与する方法を示しています。このプロセスは次の手順で行います。

  • ユーザー(productSet)に承認されている productIds(アプリ)のリストを収集します。
  • productSetBehavior 文字列の値を "whitelist" に設定して、指定されたリストにあるアプリにのみユーザーがアクセスできることを指定します。
  • setAvailableProductSet を使用して、productIds のリストと動作設定をユーザーの購入可能な商品セットに適用します。
public ProductSet setProductSet(String enterpriseId, String userId,
    List<String> productIds) throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductId(productIds);
  productSet.setProductSetBehavior("whitelist");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

承認済みのすべてのアプリへのアクセスをユーザーに許可する

次の例は、managed Google Play ストアから企業で承認されているすべてのアプリへのアクセス権をユーザーに付与する方法を示しています。このプロセスは次の手順で行います。

  • productSetBehavior 文字列の値を "allApproved" に設定して、ユーザーが企業で承認されているすべてのアプリにアクセスできるように指定します。
  • setAvailableProductSet を使用して、ユーザーに設定を適用します。
public ProductSet setUserIncludeApprovedApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("allApproved");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

注: productSetBehavior"allApproved" に設定されている場合、productSet に productIds を指定する必要はありません。

ユーザーにすべてのアプリへのアクセス権を付与する

以下の例は、managed Google Play ストアで公開されているすべてのアプリにアクセスできる権限を managed Google Play ストアに付与する方法を示しています。すべてのアプリにアクセスできるユーザーが managed Google Play を開いたときは、引き続き企業のストア レイアウトのみが表示されますが、検索では追加のアプリが表示されます。

IT 管理者などの信頼できるユーザーは、企業で承認する前に、アプリのテストと評価のために、このより高いレベルのアクセス権を必要とする場合があります。すべてのアプリへのアクセスをユーザーに許可するプロセスは、次の手順で行います。

  • productSetBehavior 文字列の値を "includeAll" に設定して、ユーザーが Google Play ストアのすべてのアプリにアクセスできることを指定します。
  • setAvailableProductSet を使用して、ユーザーに設定を適用します。
public ProductSet setUserIncludeAllApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("includeAll");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

注: productSetBehavior"includeAll" に設定されている場合、productSet に productIds を指定する必要はありません。

店舗のレイアウトを作成する

ユーザーにアプリへのアクセス権を付与したら、アプリをクラスタにグループ化し、managed Google Play ストアに表示します。

Storelayoutpages API と Storelayoutclusters API を使用して、顧客ごとにカスタマイズされた独自の店舗レイアウトを作成できます。一般的なレイアウトは一連のページで構成され、各ページにアプリのクラスタを含めることができます。関連するアプリを同じクラスタに配置できます。詳細とサンプルコードについては、ストアのカスタム レイアウトを作成するをご覧ください。

アプリの権限を取得する

アプリをカスタムストア レイアウトに追加(またはユーザーのデバイスにサイレント インストールする)して、ユーザーが選択できるようにアプリを表示するには、管理者が組織全体でそのアプリに対する権限を許可する必要があります。管理者は、managed Google Play Console でアプリの権限を受け入れ、アプリの配信を承認済みとしてマークできます(managed Google Play の概要を参照)。

ベスト プラクティスとして、権限 iframe を EMM コンソールに埋め込むことをおすすめします。つまり、ユーザーは managed Google Play Console に個別に移動する必要はありません。Products.getApprovalUrl を使用して iframe の URL を取得します。

public String getApprovalUrl(String enterpriseId, String productId)
    throws IOException {
  return androidEnterprise
      .products()
      .generateApprovalUrl(enterpriseId, productId)
      .execute()
      .getUrl();
}

Products.approve を使用して、これらの権限を承認します。

public void approveProduct(String enterpriseId,
    String productId,
    String approvalUrl) throws IOException {
  ProductsApproveRequest productsApproveRequest =
      new ProductsApproveRequest()
          .setApprovalUrlInfo(
              new ApprovalUrlInfo().setApprovalUrl(approvalUrl));
  androidEnterprise
      .products()
      .approve(enterpriseId, productId, productsApproveRequest)
      .execute();
  }

ユーザーのデバイスを取得する

デバイス固有のアクションを行うには、ユーザーに関連付けられているデバイスを特定する必要があります。この例では、DevicesListResponse を使用して、特定の userID のデバイスのリストを返します。

public DevicesListResponse list(String enterpriseId, String userId) throws
   IOException {

    return androidEnterprise
        .devices()
        .list(enterpriseId, userId)
        .execute();
}

ユーザーが初めて managed Google Play にアクセスしようとしたときに表示された利用規約に同意した場合、レスポンスには管理対象外デバイス(管理タイプが unmanagedProfile のデバイス)が含まれます。

デバイスの状態を取得して設定する

この管理タスクは、Google アカウントを使用する組織のみを対象としています。ただし、managed Google Play アカウントを使用する組織には適用されません。

ユーザーの管理対象の Google アカウントが管理対象デバイスで有効になると、以下に基づいて Google サービスへのアクセスが有効または無効になります。

EMM の適用が無効になっている場合、デバイスの状態は無視され、Android デバイスでアカウントが有効にされるたびに、Google サービスへのアクセスが許可されます。EMM の適用が有効になっていても、デバイスの状態が有効になっていない場合、ユーザーは Google Play からアプリをインストールできず、Google Play EMM API は、ユーザーに対してアプリをサイレント インストールすることはできません。

この例は、特定のデバイスの状態を取得する方法を示しています(enterpriseIduserIddeviceId を渡すことで指定します)。

getState() オペレーションと setState() オペレーションは、managementTypemanagedDevice または managedProfileDevices リソース上)のデバイスでのみ機能します。managementTypeunmanagedProfile のデバイスは、これらの API で操作できません。

public DeviceState getState(String enterpriseId, String userId, String
   deviceId) throws IOException {

    return androidEnterprise
        .devices()
        .getState(enterpriseId, userId, deviceId)
        .execute();
}

AccountState 文字列を適切な定数に設定することで、デバイス上のアカウントで Google サービスを有効または無効にできます。

public DeviceState setState(String enterpriseId, String userId, String
   deviceId, String accountState) throws IOException {

    DeviceState deviceState = new DeviceState();
    deviceState.setAccountState(accountState);

    return androidEnterprise
        .devices()
        .setState(enterpriseId, userId, deviceId, deviceState)
        .execute();
}

デバイスにアプリをプッシュ インストールする

管理者はアプリケーションをサイレント インストールできます。ユーザーの操作は必要ありません。 この例では、Installs.Update を使用して、アプリ(productId で識別される)をデバイス(deviceId で識別される)にサイレント インストールします。

public Install update(String enterpriseId, String userId, String
   deviceId, String productId) throws IOException {

    return androidEnterprise
        .installs()
        .update(enterpriseId, userId, deviceId, productId,
           new Install())
        .execute();
}

アプリがすでにデバイスに存在し、更新版が利用可能な場合、アプリは新しいバージョンに更新されます。

承認済みアプリケーションのリストからアプリを検索して取得する

管理者は、managed Google Play でユーザーが利用できる承認済みアプリのリストを作成、管理します。仕事用プロファイルが設定された BYOD デバイス上のユーザーと、デバイス全体が組織によって管理される会社所有のデバイスを使用しているユーザーは、この承認済みリストからのみアプリをダウンロードできます。

EMM コンソールをカスタマイズして検索ボックスを含めると、管理者が [承認済みアプリ] リストでのみアプリを検索できるようになります。この検索機能では、標準の managed Google Play 検索機能と同じパラメータを使用できますが、検索されるのは承認済みアプリのリストに含まれているアプリのみです。

たとえば、承認済みアプリのリストに登録されているアプリを会社のデバイスにプッシュ インストールする場合、EMM コンソールでこの検索機能を使用してアプリを検索できます。

クエリでは、結果に含める商品の最大数(setMaxResults(10L) など、画面を埋めるのに十分な数)を指定できます。デフォルト値は 100 です。これは、一度に返すことができる最大値でもあります。結果にページ設定トークンが含まれている場合は、ページ設定トークンを渡すことで取得できる結果がさらにあります。

この例では、生産性向上アプリの検索結果の最初の 10 件を取得する方法を示します。Products.Listをご確認ください。

public List searchProducts(String enterpriseId) throws IOException {
  ProductsListResponse executeResult =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setQuery("productivity")
          .execute();
  return executeResult.getProduct();
}

検索結果にページ設定トークンが含まれている場合、setMaxResults 件を超える結果(この例では 10 件以上)の結果が生成されました。さらに多くの結果を取得するには、検索をやり直し、ページ設定トークンをリクエストに含めます。この例では、次の 10 件の結果を取得します。

public ProductsListResponse continueSearch(
    String enterpriseId, ProductsListResponse previousResponse) throws IOException {
  ProductsListResponse nextResults =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setToken(previousResponse.getTokenPagination().getNextPageToken())
          .setQuery("productivity")
          .execute();
  return nextResults;
}