맞춤 스토어 레이아웃 만들기

관리 Google Play를 사용하면 기업 고객을 위한 스토어 레이아웃을 디자인하고 만들 수 있습니다. 앱을 클러스터로 그룹화하고, 스토어 페이지를 설정하고, 스토어 내의 여러 페이지에 액세스할 수 있는 빠른 링크를 추가하여 스토어 레이아웃을 맞춤설정할 수 있습니다.

관리 Google Play 스토어에서 최종 사용자가 사용할 수 있는 모든 앱은 먼저 IT 관리자의 승인을 받아야 하고, 사용자에 대해 승인되고, 클러스터에 추가되어야 합니다. 이 프로세스에 관한 자세한 내용은 스토어 레이아웃에 앱 추가를 참고하세요.

매장 레이아웃의 요소

스토어 레이아웃은 일반적으로 관리 Google Play에서 사용자에게 표시되는 일련의 페이지로 구성됩니다. 각 페이지에는 클러스터라고 하는 앱 그룹이 하나 이상 포함될 수 있습니다. 각 클러스터에는 하나 이상의 앱이 포함됩니다.

클러스터를 사용하면 관련 앱을 그룹화할 수 있습니다. 예를 들어 Essentials 클러스터와 작업 완료 클러스터가 포함된 업무 관련 앱의 페이지를 만들 수 있습니다. Essentials 클러스터에는 Notepad+, Google Slides 등의 앱이 포함될 수 있습니다. 완료한 작업 클러스터에는 OneNote, Wunderlist, Any.do와 같은 앱과 기타 추적, 캘린더, 회의 계획 앱이 포함될 수 있습니다 (그림 1 참조).

페이지를 만들 때 페이지 상단에 최대 10개의 빠른 링크를 추가할 수도 있습니다. 빠른 링크를 사용하면 다른 페이지로 이동할 수 있습니다. 예를 들어 그림 1은 비즈니스, 커뮤니케이션, 재무 페이지의 빠른 링크를 보여줍니다.

그림 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.productAvailabilityPolicyWHITELIST로 설정되거나 policy.productAvailabilityPolicyALL로 설정 (모든 앱 검색 및 설치 허용)됩니다.

사용자는 관리 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. 페이지 만들기
  2. 페이지 내에 클러스터를 하나 이상 만듭니다.
  3. 홈페이지 설정

최소한 매장 레이아웃용 클러스터 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();
}

클러스터 만들기

클러스터에는 앱 그룹이 포함됩니다. 클러스터가 먼저 생성된 다음 페이지에 추가될 수 있습니다 클러스터를 만들려면 Storelayoutclustersinsert 작업을 호출하고 이러한 속성의 값을 전달합니다.

  • 클러스터에 포함되어야 하는 productId의 목록입니다 (예: Gmail의 productIdapp: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에서 반환)를 가져와 페이지에 링크를 추가합니다. 예를 들어 pageIdp1, 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");
}