建立自訂商店版面配置

Google Play 管理版可讓您為您的企業設計及建立商店版面配置 以更全面、準確的方式回答顧客問題 並與顧客自然流暢地對話您可以將應用程式分組為叢集,藉此自訂商店版面配置 設定商店網頁,並加入快速連結 大多數的網頁

使用者在 Google Play 管理版中發布的所有應用程式 商店必須先經過 IT 管理員核准、獲得使用者核准, 資源控制選項有助於 Kubernetes 提升叢集內整體工作負載的效能(詳情請參閱「將應用程式新增至商店版面配置」一文)。 程序)。

商店版面配置元素

商店版面配置通常包含使用者會看到的一系列頁面 Google Play 管理版。每個網頁可能包含一或多個應用程式群組 ( 分解為叢集每個叢集都包含一或多個應用程式。

叢集可讓您將相關的應用程式分組。舉例來說,您可以建立 內含 Essentials 叢集和取得事物的工作相關應用程式 完成叢集。Essentials 叢集可能包含 Notepad+、 Google 簡報等。「完成任務」叢集可能包含應用程式 例如 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.productAvailabilityPolicy 設為 WHITELIST, OR 將 policy.productAvailabilityPolicy 設為 ALL (允許搜尋 任何應用程式的安裝和安裝作業)。

使用者可使用 Google Play 管理版內建的搜尋功能尋找並 安裝任何符合這些條件的應用程式。但應用程式只會 顯示在基本的商店版面配置中,或您已在 collection/cluster

核准的應用程式

管理員可以隨時取消核准應用程式 (撤銷應用程式的核准)。採用以下格式的應用程式: 撤銷的核准仍可新增至叢集和使用者允許清單,但 使用者將不會看見這些應用程式,也無法透過受管理 Google Play 商店。如果撤銷核准的應用程式重新獲得核准,我們就會核准這些應用程式 。

基本商店版面配置

在預設情況下,系統會為您的所有客戶啟用基本商店版面配置。 基本版面配置有 1 個頁面和 1 個叢集,顯示最多 1000 個應用程式。開啟應用程式 網頁會按照 product ID 值排序。如果您要建立 透過設定 storeLayoutType ="custom" 來儲存基本的商店版面配置 已停用。

建立自訂商店版面配置

EMM 可以為每個企業客戶建立自訂商店版面配置。 您可以透過自訂儲存庫版面配置設定應用程式叢集、新增特定叢集 並指定快速連結因為每項元素是由您定義 可將相關應用程式分組 (例如「Essentials」 以及「做事完成」)。使用者只能查看具備權限的應用程式 已接受 IT 管理員核准

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

建立叢集

叢集包含一組應用程式。叢集會先建立 。如要建立叢集,請叫用insert Storelayoutclusters 並傳遞以下屬性的值:

  • 叢集應包含的 productId 清單 (例如 productId (Gmail 版本) 為 app:com.google.android.gm)
  • 易記的叢集名稱,例如「Getting Things」 完成
  • 應與叢集建立關聯的 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:

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 傳回),然後加入頁面連結。舉例來說,如果您在 建立三個頁面,其 pageIdp1p2p3,就可以新增快速連結 也包含下列內容:

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();

範例

以下的完整範例會建立基本儲存庫 相互連結的網頁每頁由類似應用程式的叢集組成。每一頁 是指定客戶的 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");
}