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

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

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

매장 레이아웃의 요소

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

클러스터를 사용하면 관련 앱을 그룹화할 수 있습니다. 예를 들어 Essentials 클러스터와 작업 완료 클러스터가 포함된 업무 관련 앱의 페이지를 만들 수 있습니다. Essentials 클러스터에는 Notepad+, Google Slides 등의 앱이 포함될 수 있습니다. Things Done 클러스터에는 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이 '허용 목록'으로 설정되거나 policy.productAvailabilityPolicy이 '모두'로 설정(모든 앱 검색 및 설치 허용)

사용자는 관리 Google Play에 내장된 검색 기능을 사용하여 이러한 조건을 충족하는 앱을 찾아 설치할 수 있습니다. 그러나 앱은 기본 스토어 레이아웃에만 표시되거나 앱을 컬렉션/클러스터에 추가한 경우에만 표시됩니다.

승인이 취소된 앱

관리자는 언제든지 앱을 승인 취소 (승인 취소)할 수 있습니다. 승인이 취소된 앱도 클러스터 및 사용자의 허용 목록에 추가할 수 있지만, 사용자가 이러한 앱을 보거나 관리 Google Play 스토어에서 설치할 수 없습니다. 승인이 취소된 앱이 다시 승인되면 관리 Google Play 스토어에서 사용자가 다시 앱을 사용할 수 있게 됩니다.

기본 매장 레이아웃

기본적으로 기본 스토어 레이아웃은 각 고객마다 사용 설정되어 있습니다. 기본 레이아웃에는 페이지 1개와 클러스터 1개가 있으며 최대 1, 000개의 앱을 표시합니다. 페이지에 있는 앱은 product ID 값 순으로 정렬됩니다. storeLayoutType =“custom”를 설정하여 맞춤 스토어 레이아웃을 만들면 기본 스토어 레이아웃이 사용 중지됩니다.

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

EMM은 각 기업 고객을 위한 맞춤 스토어 레이아웃을 만들 수 있습니다. 맞춤 스토어 레이아웃을 사용하면 앱 클러스터를 설정하고 페이지에 특정 클러스터를 추가하며 빠른 링크를 지정할 수 있습니다. 각 클러스터를 구성하는 앱을 정의하므로 클러스터를 사용하여 관련 앱을 그룹화할 수 있습니다 (예: 'Essentials' 및 '완료할 작업'). 관리자가 권한을 수락한 앱만 사용자에게 표시됩니다.

Google Play EMM API 참조에는 맞춤 스토어 레이아웃, 특히 StorelayoutpagesStorelayoutclusters를 만드는 데 사용하는 리소스와 관련 메서드에 관한 정보가 포함되어 있습니다. 아래 섹션에 설명된 단계는 기본 예시를 통해 안내합니다.

프로그래밍 작업

고객을 위한 맞춤 관리 Google Play 스토어 레이아웃을 만들려면 다음 요건을 충족해야 합니다.

  1. 페이지 만들기
  2. 페이지 내에 클러스터를 하나 이상 만듭니다.
  3. 홈페이지 설정

최소한 매장 레이아웃의 클러스터 한 개로 구성된 페이지를 하나 이상 만들어야 하며 클러스터에 앱이 하나 이상 포함되어야 합니다. 홈페이지도 설정해야 합니다. 페이지를 두 개 이상 만드는 경우 각 페이지 상단에 빠른 링크가 표시되도록 설정할 수 있습니다.

아래에 맞춤 관리 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();
}

홈페이지 설정

사용자 기기의 Managed 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인 세 개의 페이지를 만드는 경우 다음을 사용하여 첫 번째 페이지에서 다른 두 페이지로 연결되는 빠른 링크를 추가할 수 있습니다.

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");
}