일반적인 관리 작업

EMM은 Android용 기업용 솔루션에서 이 가이드에 설명된 작업과 같이 다양한 일반적인 관리 작업을 구현할 수 있습니다. 샘플 코드는 Java용 Google Play EMM API 클라이언트 라이브러리®를 사용합니다.

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

대부분의 Google Play EMM API는 앱 설치, 사용 권한 획득, 라이선스 획득과 같은 일부 사용자 관련 작업을 실행하기 위해 userId (enterpriseId 외에도)가 필요합니다. 일부 호출에는 사용자 객체가 필요합니다.

조직에서 관리 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를 사용하여 고객별로 고유한 맞춤 스토어 레이아웃을 만들 수 있습니다. 일반적인 레이아웃은 일련의 페이지로 구성되며 각 페이지는 앱 클러스터를 포함할 수 있습니다. 관련된 앱을 동일한 클러스터에 배치할 수 있습니다. 세부정보 및 샘플 코드는 맞춤 스토어 레이아웃 만들기를 참고하세요.

앱 권한 가져오기

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

권장사항 iframe을 EMM 콘솔에 삽입하는 것이 좋습니다. 즉, 사용자가 관리 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 리소스에서 managementTypemanagedDevice 또는 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(Bring Your Own Device) 기기의 사용자 및 조직에서 전체 기기를 관리하는 기업 책임 기기의 사용자는 승인된 목록에서만 앱을 다운로드할 수 있습니다.

관리자가 승인된 앱 목록에 있는 앱만 검색할 수 있도록 검색창을 포함하도록 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;
}