重要: Play EMM API の新しい登録受け付けは終了しました。詳細

一般的な管理タスク

EMM は、このガイドに示されているタスクなど、Android のエンタープライズ ソリューションで一般的な管理タスクの範囲を実装できます。サンプルコードでは、Java 用 Google Play EMM API クライアント ライブラリを使用します。

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

Google Play EMM API の多くでは、userIdenterpriseId に加えて、アプリのインストール、利用資格の取得、ライセンスの割り当てなどのユーザー関連のタスクを実行する必要があります。一部の呼び出しでは、ユーザー オブジェクトが必要になります。

組織で 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();
}

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

managed 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 ストア内のユーザーが、一般公開の 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.UpdateproductId で識別)にデバイス(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;
}