중요: Play EMM API는 더 이상 신규 등록이 불가능합니다. 여기에서 자세히 알아보세요.

일반적인 관리 작업

EMM은 이 엔터프라이즈용 Android 솔루션에서 이 가이드에 표시된 작업 등 다양한 일반적인 관리 작업을 구현할 수 있습니다. 샘플 코드는 자바용 Google Play EMM API 클라이언트 라이브러리®를 사용합니다.

사용자 조회 및 사용자 세부정보 가져오기

대다수의 Google Play EMM API는 enterpriseId 외에도 userId가 있어야 앱 설치, 사용 권한, 라이선스 부여와 같은 사용자 관련 작업을 실행할 수 있습니다. 일부 호출에는 사용자 객체가 필요합니다.

조직에서 관리 Google Play 계정을 사용하는 경우 해당 계정의 사용자 이메일 주소와 사용자 ID 간의 매핑을 유지합니다. Google 계정으로는 UsersListResponse을 사용합니다.

사용자 조회

이 코드 샘플은 Google 계정과 연결된 사용자 ID를 가져옵니다. 관리 Google Play 계정을 사용하는 조직에는 적용되지 않습니다.

이 예시에서는 UserUsersListResponse 모델을 코드로 가져왔다고 가정합니다. 특정 사용자 계정을 가져오려면 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를 사용하여 사용자가 관리 Google Play 스토어에서 액세스할 수 있는 앱을 제어할 수 있습니다. 앱에 대한 액세스 권한으로는 앱을 검색, 조회, 설치, 업데이트할 수 있는 권한이 포함됩니다. 세 가지 액세스 수준을 사용할 수 있습니다.

  • 허용된 앱만: 사용자가 특정 앱에만 액세스할 수 있습니다.
  • 승인된 모든 앱: 사용자가 기업에서 승인한 모든 앱에 액세스할 수 있습니다.
  • 모든 앱: 사용자는 Google Play 스토어에서 공개적으로 제공되는 모든 앱에 액세스할 수 있습니다.

사용자에게 특정 앱에만 액세스 권한 부여하기

아래 예는 관리 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();
}

사용자에게 승인된 모든 앱에 대한 액세스 권한 부여하기

아래 예는 관리 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을 지정할 필요가 없습니다.

사용자에게 모든 앱에 대한 액세스 권한 부여하기

아래 예에서는 관리 Google Play 스토어에서 공개 Google Play 스토어에서 사용 가능한 모든 앱에 액세스할 수 있는 권한을 사용자에게 부여하는 방법을 보여줍니다. 모든 앱에 액세스할 수 있는 사용자는 관리 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을 지정할 필요가 없습니다.

매장 레이아웃 만들기

사용자에게 앱 액세스 권한을 부여한 후 앱을 관리 Google Play 스토어에 표시할 수 있도록 클러스터로 그룹화합니다.

Storelayoutpages Storelayoutclusters API를 사용하여 고객별로 고유한 맞춤 스토어 레이아웃을 만들 수 있습니다. 일반적인 레이아웃은 페이지 집합으로 구성되며, 각 페이지에는 앱 클러스터가 포함될 수 있습니다. 관련 앱을 동일한 클러스터에 배치할 수 있습니다. 자세한 내용과 샘플 코드는 맞춤 스토어 레이아웃 만들기를 참고하세요.

앱 권한 가져오기

맞춤 스토어 레이아웃에 앱을 추가하거나 사용자 기기에 앱을 자동으로 설치, 사용자가 선택할 수 있도록 표시하려면 관리자는 전체 조직의 해당 앱에 대한 권한을 수락해야 합니다. 관리자는 앱 권한을 수락하고 관리 Google Play Console에서 배포를 승인으로 표시할 수 있습니다 (관리 Google Play 개요 참고).

권장사항으로 EMM 콘솔에 권한 iframe을 삽입하는 것이 좋습니다. 즉, 사용자가 관리 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();
}

사용자가 관리 Google Play에 처음 액세스하려고 할 때 표시되는 서비스 약관에 동의하면 응답에 비관리 기기(unmanagedProfile 관리 유형이 있는 기기)가 포함됩니다.

기기 상태 가져오기 및 설정하기

이 관리 작업은 Google 계정을 사용하는 조직에만 적용됩니다. 관리 Google Play 계정을 사용하는 조직에는 적용되지 않습니다.

사용자의 관리 Google 계정이 관리 기기에서 활성화되면 다음을 기준으로 Google 서비스에 대한 액세스가 사용 설정 (또는 사용 중지)됩니다.

EMM 시행을 사용 중지하면 Android 기기에서 활성화할 때마다 기기 상태가 무시되고 계정에 Google 서비스에 대한 액세스 권한이 부여됩니다. EMM 시행은 사용 설정되어 있지만 기기 상태는 사용 설정되어 있지 않은 경우 사용자는 Google Play에서 애플리케이션을 설치할 수 없으며 Google Play EMM API는 해당 사용자의 앱을 기기에 자동으로 설치할 수 없습니다.

이 예에서는 지정된 기기의 상태를 가져오는 방법을 보여줍니다 (enterpriseId, userId, deviceId를 전달하여 지정됨).

getState()setState() 작업은 Devices 또는 managementType 리소스가 managedDevice 또는 managedProfile인 기기에서만 작동합니다. 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();
}

앱이 기기에 이미 존재하고 업데이트된 버전을 사용할 수 있는 경우 앱이 새 버전으로 업데이트됩니다.

승인된 애플리케이션 목록에서 앱 검색 및 가져오기

관리자는 관리 Google Play에서 사용자가 사용할 수 있는 승인된 앱 목록을 만들고 관리합니다. 직장 프로필이 있는 BYOD 기기 사용자 및 조직에서 전체 기기를 관리하는 기업 기기 사용자는 이 승인된 목록에서만 앱을 다운로드할 수 있습니다.

관리자가 승인된 앱 목록에 있는 앱만 검색할 수 있도록 검색창을 포함하도록 EMM 콘솔을 맞춤설정할 수 있습니다. 검색 함수는 표준 관리 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;
}