관리 Google Play를 사용하면 기업 고객을 위한 스토어 레이아웃을 디자인하고 만들 수 있습니다. 앱을 클러스터로 그룹화하고, 스토어 페이지를 설정하고, 스토어 내의 여러 페이지에 액세스할 수 있는 빠른 링크를 추가하여 스토어 레이아웃을 맞춤설정할 수 있습니다.
관리 Google Play 스토어에서 최종 사용자가 사용할 수 있는 모든 앱은 먼저 IT 관리자의 승인을 받아야 하고, 사용자에 대해 승인되고, 클러스터에 추가되어야 합니다. 이 프로세스에 관한 자세한 내용은 스토어 레이아웃에 앱 추가를 참고하세요.
매장 레이아웃의 요소
스토어 레이아웃은 일반적으로 관리 Google Play에서 사용자에게 표시되는 일련의 페이지로 구성됩니다. 각 페이지에는 클러스터라고 하는 앱 그룹이 하나 이상 포함될 수 있습니다. 각 클러스터에는 하나 이상의 앱이 포함됩니다.
클러스터를 사용하면 관련 앱을 그룹화할 수 있습니다. 예를 들어 Essentials 클러스터와 작업 완료 클러스터가 포함된 업무 관련 앱의 페이지를 만들 수 있습니다. Essentials 클러스터에는 Notepad+, Google Slides 등의 앱이 포함될 수 있습니다. 완료한 작업 클러스터에는 OneNote, Wunderlist, Any.do와 같은 앱과 기타 추적, 캘린더, 회의 계획 앱이 포함될 수 있습니다 (그림 1 참조).
페이지를 만들 때 페이지 상단에 최대 10개의 빠른 링크를 추가할 수도 있습니다. 빠른 링크를 사용하면 다른 페이지로 이동할 수 있습니다. 예를 들어 그림 1은 비즈니스, 커뮤니케이션, 재무 페이지의 빠른 링크를 보여줍니다.
그림 1은 기기에 표시된 매장 레이아웃의 주요 요소를 보여줍니다.
- 빠른 링크: 다른 페이지에 액세스할 수 있는 링크(선택사항)입니다. 빠른 링크에는 연결되는 페이지의 이름을 사용합니다.
- 페이지: 이름이 지정되고 세로로 스크롤 가능한 페이지로 앱 클러스터로 구성됩니다.
- 클러스터 (컬렉션이라고도 함): 이름이 지정되고 가로로 스크롤되는 앱 캐러셀입니다. 페이지에 단일 클러스터가 포함된 경우 전체 페이지로 확장됩니다. 세로로 스크롤할 수 있도록 '더보기'를 클릭합니다.
매장 레이아웃 요소의 제한사항
고객을 위해 매장 레이아웃을 디자인하고 구현할 때 다음 제한사항을 염두에 두세요. 이러한 제한사항의 대부분은 우수한 UI 디자인 원칙으로 인한 것입니다.
- 클러스터당 앱 100개
- 페이지당 클러스터 30개
- 페이지당 빠른 링크 10개
- 매장당 100페이지
- 기업당 제품 (승인된 앱) 1,000개
현지화된 페이지 및 클러스터 이름
관리 Google Play 스토어 레이아웃은 스토어 페이지 및 스토어 클러스터의 현지화된 이름을 지원합니다. 페이지 또는 클러스터를 만들 때 지원되는 언어 목록을 IETF 언어 태그 및 관련 현지화된 이름으로 제공합니다. 사용자의 언어가 지원되는 목록에 없는 경우 시스템은 사용 가능한 가장 근접한 언어를 선택합니다. 예를 들어 en-GB를 사용할 수 없으면 시스템은 대신 en-US를 선택합니다. 근접한 일치 항목이 없으면 시스템은 목록에서 이름을 선택합니다.
스토어 레이아웃에 앱 추가
policy.productPolicy
에 있는 모든 앱은 엔터프라이즈에서 기본 스토어 레이아웃을 사용하는 경우 자동으로 추가됩니다. 기업에서 맞춤 스토어 레이아웃을 사용하는 경우 맞춤 레이아웃과 productPolicy
목록에만 있는 앱이 기기에 표시됩니다. policy.productPolicy
에 있는 모든 항목은 Play 스토어에서 검색할 수 있습니다.
최종 사용자가 관리 Google Play 스토어에서 앱을 설치하려면 앱이 사용자 기기와 호환되고 다음 조건을 충족해야 합니다.
- 사용자의 허용 목록에 추가 (기기 리소스의
policy.productPolicy
사용)하고policy.productAvailabilityPolicy
가WHITELIST
로 설정되거나policy.productAvailabilityPolicy
가ALL
로 설정 (모든 앱 검색 및 설치 허용)됩니다.
사용자는 관리 Google Play에 내장된 검색 기능을 사용하여 이러한 조건을 충족하는 앱을 찾아 설치할 수 있습니다. 하지만 앱은 기본 스토어 레이아웃에 표시되거나 앱을 컬렉션/클러스터에 추가한 경우에만 표시됩니다.
승인이 취소된 앱
관리자는 언제든지 앱을 승인 취소 (승인 취소)할 수 있습니다. 승인이 취소된 앱도 클러스터 및 사용자의 허용 목록에 추가할 수 있지만 사용자는 관리 Google Play 스토어에서 앱을 보거나 설치할 수 없습니다. 승인이 취소된 앱이 다시 승인되면 관리 Google Play 스토어에서 사용자가 다시 앱을 사용할 수 있게 됩니다.
기본 매장 레이아웃
기본적으로 각 고객에게 기본 매장 레이아웃이 사용 설정되어 있습니다. 기본 레이아웃은 페이지 1개와 클러스터 1개로 구성되어 있으며 최대 1, 000개의 앱을 표시합니다. 페이지의 앱은 product ID
값 순으로 정렬됩니다. storeLayoutType ="custom"
를 설정하여 맞춤 스토어 레이아웃을 만들면 기본 스토어 레이아웃이 사용 중지됩니다.
맞춤 매장 레이아웃 만들기
EMM은 각 기업 고객을 위한 맞춤 스토어 레이아웃을 만들 수 있습니다. 맞춤 스토어 레이아웃을 사용하면 앱 클러스터를 설정하고 페이지에 특정 클러스터를 추가하며 빠른 링크를 지정할 수 있습니다. 각 클러스터를 구성하는 앱을 정의하므로 클러스터를 사용하여 관련 앱을 그룹화할 수 있습니다 (예: 'Essentials' 및 '업무 처리'). IT 관리자가 권한을 승인한 앱만 사용자에게 표시됩니다.
Google Play EMM API 참조에는 맞춤 스토어 레이아웃을 만드는 데 사용하는 리소스 및 관련 메서드, 특히 Storelayoutpages, Storelayoutclusters에 관한 정보가 포함되어 있습니다. 아래 섹션에 설명된 단계는 기본 예를 안내합니다.
프로그래밍 작업
고객을 위한 맞춤 Managed Google Play 스토어 레이아웃을 만들려면 다음을 실행해야 합니다.
- 페이지 만들기
- 페이지 내에 클러스터를 하나 이상 만듭니다.
- 홈페이지 설정
최소한 매장 레이아웃용 클러스터 1개로 구성된 페이지를 1개 이상 만들어야 하며 클러스터에 앱이 1개 이상 포함되어야 합니다. 홈페이지도 설정해야 합니다. 페이지를 두 개 이상 만드는 경우 각 페이지 상단에 빠른 링크가 표시되도록 설정할 수 있습니다.
아래에는 맞춤 관리 Play 스토어 레이아웃을 만드는 프로그래밍 작업과 스토어 레이아웃의 전체 예가 설명되어 있습니다.
페이지 만들기
페이지는 하나 이상의 클러스터로 구성됩니다. 각 클러스터에는 앱이 하나 이상 포함되어 있습니다. 페이지는 특정 기업을 위한 것이므로 특정 엔터프라이즈 인스턴스 (enterpriseId
)에서 작업을 호출해야 합니다. 각 페이지의 사용자 친화적인 이름 및 현지화 정보와 함께 사용자가 페이지에서 액세스할 수 있는 pageId
목록을 제공할 수 있습니다. 새 페이지는 다음과 같이 insert
작업 (Storelayoutpages.insert)으로 생성됩니다.
public StorePage createPage(String enterpriseId, String name)
throws IOException {
List<LocalizedText> names =
ImmutableList.of(
new LocalizedText().setLocale("en").setText(name));
StorePage storePage = new StorePage();
storePage.setName(names);
return androidEnterprise.storelayoutpages()
.insert(enterpriseId, storePage)
.execute();
}
클러스터 만들기
클러스터에는 앱 그룹이 포함됩니다. 클러스터가 먼저 생성된 다음 페이지에
추가될 수 있습니다 클러스터를 만들려면 Storelayoutclusters의 insert
작업을 호출하고 이러한 속성의 값을 전달합니다.
- 클러스터에 포함되어야 하는
productId
의 목록입니다 (예: Gmail의productId
는app:com.google.android.gm
입니다). - 사용자 친화적인 클러스터 이름(예: '작업 수행' )
- 클러스터와 연결해야 하는
enterpriseId
pageId
(클러스터가 포함되어야 하는 페이지용)- 페이지의 클러스터 위치 (첫 번째, 두 번째 등)
예를 들면 다음과 같습니다.
private String insertCluster(String enterpriseId, String pageId, String name,
List<String> productIds, String orderInPage) throws IOException {
StoreCluster storeCluster = new StoreCluster();
storeCluster.setName(
ImmutableList.of(
new LocalizedText().setLocale("en").setText(name)));
storeCluster.setProductId(productIds);
storeCluster.setOrderInPage(orderInPage);
return androidEnterprise.storelayoutclusters()
.insert(enterpriseId, pageId, storeCluster)
.execute()
.getId();
}
홈페이지 설정
사용자 기기의 관리 Google Play에 표시되는 첫 번째 페이지가 홈페이지입니다. EMM은 각 고객의 홈페이지를 정의합니다. 페이지는 비어 있는 경우에도 항상 표시되며 삭제할 수 없습니다.
이 예시에서는 지정된 enterpriseId
에 대해 홈페이지의 ID를 가져옵니다.
public StoreLayout getStoreLayout(String enterpriseId) throws IOException {
return androidEnterprise
.enterprises()
.getStoreLayout(enterpriseId)
.execute();
}
다음 예는 고객의 enterpriseId
및 해당 고객의 홈페이지의 pageId
를 제공하여 고객의 홈페이지를 설정합니다.
public StoreLayout setStoreLayout(String enterpriseId, String homepageId)
throws IOException {
StoreLayout storeLayout = new StoreLayout();
storeLayout.setHomepageId(homepageId);
return androidEnterprise
.enterprises()
.setStoreLayout(enterpriseId, storeLayout)
.execute();
}
빠른 링크 설정 (선택사항)
각 페이지 상단에 빠른 링크가 표시되므로 사용자가 스토어의 페이지 간에 쉽게 이동할 수 있습니다. 빠른 링크를 사용하려면 먼저 페이지의 pageId
(insert
에서 반환)를 가져와 페이지에 링크를 추가합니다. 예를 들어 pageId
가 p1
, p2
, p3
인 3개의 페이지를 만드는 경우 다음을 사용하여 첫 번째 페이지에서 다른 두 페이지로 연결되는 빠른 링크를 추가할 수 있습니다.
StorePage storePage = new StorePage();
storePage.setName(
ImmutableList.of(new LocalizedText().setLocale("en").setText(title)));
storePage.setLink(ImmutableList.of("p2", "p3");
return androidEnterprise.storelayoutpages()
.update(enterpriseId, "p1", storePage)
.execute();
예
다음은 상호 연결된 페이지 3개로 구성된 기본 저장소를 만드는 완전한 예입니다. 각 페이지는 유사한 앱의 클러스터를 구성합니다. 고객의 enterpriseId
를 지정하고 페이지 name
만 설정하여 각 페이지를 만들며, 이렇게 하면 페이지의 빠른 링크를 만드는 데 사용되는 pageId
를 가져올 수 있습니다.
// Create a basic page and return the pageId.
private String insertPage(String enterpriseId, String title,
List<String> links) throws IOException {
List<LocalizedText> names =
ImmutableList.of(new LocalizedText().setLocale("en").setText(title));
StorePage page = new StorePage();
page.setName(names);
page.setLink(links);
return enterprise.storelayoutpages().insert(enterpriseId, page).execute().getId();
}
public StoreLayout setStoreLayout(String enterpriseId, String homepageId)
throws IOException {
StoreLayout storeLayout = new StoreLayout();
storeLayout.setHomepageId(homepageId);
return androidEnterprise
.enterprises()
.setStoreLayout(enterpriseId, storeLayout)
.execute();
}
private String insertCluster(String enterpriseId, String pageId, String name,
List<String> productIds, String orderInPage) throws IOException {
StoreCluster cluster = new StoreCluster();
List<LocalizedText> names =
ImmutableList.of(new LocalizedText().setLocale("en").setText(name));
cluster.setName(names);
cluster.setProductId(productIds);
cluster.setOrderInPage(orderInPage);
return androidEnterprise.storelayoutclusters()
.insert(enterpriseId, pageId, cluster)
.execute()
.getId();
}
private void updatePage(String enterpriseId, String pageId, String title,
List<String> links) throws IOException {
List<LocalizedText> names =
ImmutableList.of(new LocalizedText().setLocale("en").setText(title));
StorePage page = new StorePage();
page.setName(names);
page.setLink(links);
enterprise.storelayoutpages()
.update(enterpriseId, pageId, page).execute();
}
private void makeStore(String enterpriseId) throws IOException {
// Create the pages.
String page1 = insertPage(enterpriseId, "Home");
String page2 = insertPage(enterpriseId, "Productivity");
String page3 = insertPage(enterpriseId, "Accounting");
// Set the homepage (page that displays by default when store is opened).
setStoreLayout(enterpriseId, page1);
// Add the links to the pages. This makes a small tree.
updatePage(enterpriseId, page1, "Home", ImmutableList.of(page2, page3));
updatePage(enterpriseId, page2, "Productivity", ImmutableList.of(page1));
updatePage(enterpriseId, page3, "Accounting", ImmutableList.of(page1));
// Add clusters with contents.
insertCluster(
enterpriseId,
page1,
"Getting Things Done",
ImmutableList.of(
"app:com.mytodolist",
"app:com.google.android.gm",
"app:com.google.android.docs"),
"1");
insertCluster(
enterpriseId,
page1,
"Strategy",
ImmutableList.of(
"app:com.myplanner",
"app:com.stratego"),
"2");
insertCluster(
enterpriseId,
page2,
"Editors",
ImmutableList.of(
"app:com.myeditor",
"app:com.betteredit",
"app:com.lazyguy"),
"1");
insertCluster(
enterpriseId,
page2,
"Time Management",
ImmutableList.of(
"app:com.mytimetracker",
"app:com.lazygal",
"app:com.lazyguy"),
"2");
insertCluster(
enterpriseId,
page2,
"Accounting",
ImmutableList.of(
"app:com.mymoney",
"app:com.taxpro",
"app:com.balances"),
"3");
}