EMM은 Android용 엔터프라이즈 솔루션에서 이 가이드에 표시된 작업과 같은 일반적인 관리 작업을 다양하게 구현할 수 있습니다. 샘플 코드에서는 Java용 Google Play EMM API 클라이언트 라이브러리®를 사용합니다.
사용자 조회 및 사용자 세부정보 가져오기
대부분의 Google Play EMM API에는 앱 설치, 사용 권한 획득, 라이선스 획득과 같은 일부 사용자 관련 작업을 실행하기 위해 enterpriseId
외에 userId
가 필요합니다. 일부 호출에는 사용자 객체가 필요합니다.
조직에서 관리 Google Play 계정을 사용하는 경우 사용자 이메일 주소와 해당 계정의 사용자 ID 간에 매핑을 유지합니다. Google 계정으로 UsersListResponse
을(를) 사용합니다.
사용자 조회
이 코드 샘플은 Google 계정과 연결된 사용자 ID를 가져옵니다. 관리 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를 사용하여 사용자가 액세스할 수 있는 앱을 제어할 수 있습니다. 다운로드할 수 있습니다. 앱 액세스에는 다음 기능이 포함됩니다. 검색하고, 보고, 설치하고, 업데이트할 수 있습니다. 3가지 서로 다른 액세스가 등급:
- 허용된 앱만: 사용자가 특정 앱에만 액세스할 수 있습니다.
- 승인된 모든 앱: 사용자는 승인된 모든 앱에 액세스할 수 있습니다. 살펴봤습니다
- 모든 앱: 사용자가 공개적으로 제공되는 모든 앱에 액세스할 수 있습니다. 포함되어 있습니다.
사용자에게 특정 앱에만 액세스 권한 부여하기
아래 예는 사용자에게 특정 앱 세트에 대한 액세스 권한을 부여하는 방법을 보여줍니다. 다운로드할 수 있습니다. 이 프로세스에는 다음 단계를 따르세요.
- 사용자 (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(); }
사용자에게 승인된 모든 앱에 대한 액세스 권한 부여
아래 예시는 승인된 앱에 대한 사용자 액세스 권한을 부여하는 방법을 보여줍니다. 기업용 앱을 다운로드할 수 있습니다. 이 프로세스에는 다음 단계를 따르세요.
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
를 지정할 필요가 없습니다.
매장 레이아웃 만들기
사용자에게 앱 액세스 권한을 부여한 후 Managed Google Play 스토어에 표시할 앱을 클러스터로 그룹화합니다.
Storelayoutpages
및 Storelayoutclusters
API를 사용하여 고객별로 고유한 맞춤설정 매장 레이아웃을 만들 수 있습니다. 일반적인 레이아웃은 일련의 페이지로 구성되며 각 페이지에는 앱 클러스터가 포함될 수 있습니다. 관련 앱을 동일한 클러스터에 배치할 수 있습니다. 자세한 내용과 샘플 코드는 맞춤 스토어 레이아웃 만들기를 참고하세요.
앱 권한 가져오기
맞춤 스토어 레이아웃에 앱을 추가 (또는 사용자의 기기에 앱을 자동으로 설치) 사용자가 선택할 수 있도록 앱을 표시하려면 관리자가 해당 앱에 대한 조직 전체의 권한 수락 관리자가 수행할 수 있는 작업 앱 권한을 수락하고 관리 콘솔에서 앱을 배포할 수 있도록 Google Play Console (관리 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 계정이 관리 기기에서 활성화되면 사용 설정 (또는 사용 중지)되는 기준은 다음과 같습니다.
- 기기 상태입니다.
- 도메인 관리자가 EMM 정책을 적용했는지 여부 ( Android 기기에 EMM 정책 시행 )을 입력합니다.
EMM 시행을 사용 중지하면 기기 상태가 무시되고 계정이 Android 기기에서 활성화될 때마다 Google 서비스에 대한 액세스 권한이 부여됩니다. EMM 시행이 사용 설정되어 있지만 기기 상태가 아닌 경우 사용자가 설치할 수 없습니다. 애플리케이션을 Google Play EMM API에서 자동으로 설치할 수 없음 사용자를 위한 앱만 사용할 수 있습니다.
이 예는 주어진 기기의 상태를 가져오는 방법을 보여줍니다(
enterpriseId
, userId
, deviceId
).
getState()
및 setState()
작업은 managementType
가
managedDevice
또는 managedProfile
(Devices
리소스)만 지원 기기
unmanagedProfile
의 managementType
는 이러한 API로 제어할 수 없습니다.
public DeviceState getState(String enterpriseId, String userId, String deviceId) throws IOException { return androidEnterprise .devices() .getState(enterpriseId, userId, deviceId) .execute(); }
다음 설정을 통해 기기에서 계정의 Google 서비스를 사용 또는 사용 중지
AccountState
문자열을 적절한 상수로 변환합니다.
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 ListsearchProducts(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; }