สร้างเลย์เอาต์ร้านค้าที่กําหนดเอง

Managed Google Play ให้คุณออกแบบและสร้างเลย์เอาต์ของร้านค้าสำหรับองค์กร ลูกค้า คุณสามารถปรับแต่งเลย์เอาต์ของร้านค้าได้โดยจัดกลุ่มแอปออกเป็นคลัสเตอร์ ตั้งค่าหน้าร้านค้า และเพิ่มลิงก์ด่วนที่มอบการเข้าถึง ภายในร้านค้า

แอปทั้งหมดที่ผู้ใช้ปลายทางใช้งานได้ใน Managed Google Play Store ต้องได้รับการอนุมัติจากผู้ดูแลระบบไอทีก่อน ได้รับการอนุมัติสำหรับผู้ใช้ และเพิ่มลงใน คลัสเตอร์ (ดูรายละเอียดเพิ่มเติมในการเพิ่มแอปในการจัดวางของ Store กระบวนการ)

องค์ประกอบของเลย์เอาต์ร้านค้า

การจัดวางของร้านมักประกอบด้วยชุดหน้าเว็บที่แสดงต่อผู้ใช้ใน Managed Google Play แต่ละหน้าอาจมีกลุ่มแอปอย่างน้อย 1 กลุ่ม ซึ่งเรียกว่า ไว้เป็นคลัสเตอร์ แต่ละคลัสเตอร์จะมีแอปอย่างน้อย 1 แอป

คลัสเตอร์ช่วยให้คุณจัดกลุ่มแอปที่เกี่ยวข้องได้ ตัวอย่างเช่น คุณสามารถสร้างหน้าเว็บสำหรับ แอปที่เกี่ยวข้องกับงานที่มีคลัสเตอร์ Essentials และ Get Things คลัสเตอร์เสร็จสิ้น คลัสเตอร์ของ Essentials อาจมีแอปต่างๆ เช่น Notepad+ Google สไลด์ และอื่นๆ คลัสเตอร์ "การรับสิ่งที่ต้องทำ" อาจมีแอป เช่น OneNote, Wunderlist, Any.do และการติดตามอื่นๆ ปฏิทิน และ แอปวางแผนการประชุม (ดูรูปที่ 1)

เมื่อคุณสร้างหน้าเว็บ คุณจะสามารถเพิ่มลิงก์ด่วนได้สูงสุด 10 ลิงก์ที่ด้านบนของ ลิงก์ด่วนช่วยให้ผู้ใช้ข้ามไปยังหน้าอื่นๆ ได้ ตัวอย่างเช่น รูปที่ 1 แสดง ลิงก์ด่วนสำหรับหน้าธุรกิจ การสื่อสาร และการเงิน

รูปที่ 1 แสดงองค์ประกอบสำคัญบางอย่างของการจัดวางร้านค้าตามที่เห็นบนอุปกรณ์

วันที่ หน้าจอตัวอย่างจากอุปกรณ์ของผู้ใช้ที่แสดงองค์ประกอบของร้านค้า
    รวมทั้งลิงก์ด่วน หน้าเว็บ และกลุ่มแอป
รูปที่ 1 - หน้าจอตัวอย่างจากอุปกรณ์ของผู้ใช้
  • ลิงก์ด่วน: ลิงก์ที่ไม่บังคับซึ่งให้สิทธิ์เข้าถึงหน้าอื่นๆ รวดเร็ว จะใช้ชื่อของหน้าเว็บที่ลิงก์ไป
  • หน้า: หน้าที่มีชื่อและเลื่อนได้ในแนวตั้ง ซึ่งประกอบด้วยกลุ่มแอปต่างๆ
  • คลัสเตอร์ (หรือที่เรียกว่าคอลเล็กชัน): ชื่อที่เลื่อนได้ในแนวนอน ภาพสไลด์ของแอป ขยายแบบเต็มหน้าถ้าหน้าเว็บมีคลัสเตอร์เดียว (หรือ คลิก "เพิ่มเติม" ให้เลื่อนในแนวตั้งได้)

ข้อจำกัดขององค์ประกอบการจัดวางร้านค้า

เมื่อออกแบบและติดตั้งใช้งานเลย์เอาต์ของร้านค้าให้กับลูกค้า ให้ (ขีดจำกัดส่วนใหญ่เหล่านี้มาจากหลักการออกแบบ UI ที่ดี) ดังนี้

  • 100 แอปต่อคลัสเตอร์
  • 30 คลัสเตอร์ต่อหน้า
  • ลิงก์ด่วน 10 ลิงก์ต่อ 1 หน้า
  • 100 หน้าต่อร้านค้า
  • ผลิตภัณฑ์ 1,000 รายการ (แอปที่ได้รับอนุมัติ) ต่อองค์กร

ชื่อหน้าเว็บและคลัสเตอร์ที่แปลแล้ว

เลย์เอาต์ของ Managed Google Play Store รองรับชื่อที่แปลแล้วสำหรับหน้าร้านค้า และจัดเก็บคลัสเตอร์ เมื่อคุณสร้างหน้าเว็บหรือคลัสเตอร์ คุณจะต้องระบุรายการของ ภาษาที่รองรับ เช่น แท็กภาษา IETF และชื่อที่แปลแล้วที่เกี่ยวข้องกัน หากภาษาของผู้ใช้ไม่อยู่ในรายการที่รองรับ ระบบจะเลือกภาษาที่ใกล้เคียงที่สุด มีการจับคู่ที่ตรงกัน ตัวอย่างเช่น หาก en-GB ไม่พร้อมใช้งาน ระบบจะเลือก en-US แทน ถ้าไม่มีการจับคู่ที่ตรงกัน ระบบจะเลือกชื่อจริงใน รายการ

การเพิ่มแอปลงในรูปแบบร้านค้า

แอปทั้งหมดที่มีอยู่ใน policy.productPolicy จะถูกเพิ่มโดยอัตโนมัติหาก องค์กรกำลังใช้เลย์เอาต์ร้านค้าแบบพื้นฐาน หากองค์กรใช้แอตทริบิวต์ที่กำหนดเอง การจัดวางใน Store แอปจะแสดงเฉพาะในเลย์เอาต์ที่กำหนดเองและในรายการproductPolicy จะแสดงในอุปกรณ์ รายการทั้งหมดที่อยู่ใน policy.productPolicy คือ สามารถค้นหาได้ใน Play Store

ในการทำให้ผู้ใช้ปลายทางติดตั้งแอปจาก Managed Google Play Store แอปจะ ต้องใช้ร่วมกับอุปกรณ์ของผู้ใช้ได้ และมีคุณสมบัติตรงตามเงื่อนไขต่อไปนี้

  • เพิ่มลงในรายการที่อนุญาตของผู้ใช้ (โดยใช้ policy.productPolicy ในอุปกรณ์) ทรัพยากร) AND ตั้งค่า policy.productAvailabilityPolicy เป็น WHITELIST ตั้งค่า หรือ policy.productAvailabilityPolicy เป็น ALL (ทำให้สามารถค้นหา และการติดตั้งแอปใดก็ได้)

ผู้ใช้สามารถใช้ฟีเจอร์การค้นหาที่มีมาใน Managed Google Play เพื่อค้นหาและ โปรดติดตั้งแอปใดก็ได้ที่ตรงกับเงื่อนไขเหล่านี้ อย่างไรก็ตาม แอปจะ แสดงในเลย์เอาต์ของร้านแบบพื้นฐาน หรือเมื่อคุณเพิ่มแอปลงใน collection/cluster

แอปที่เพิกถอนการอนุมัติ

ผู้ดูแลระบบสามารถไม่อนุมัติแอป (เพิกถอนการอนุมัติ) ได้ทุกเมื่อ แอปที่มี แต่จะเพิ่มการอนุมัติที่ถูกเพิกถอนลงในคลัสเตอร์และผู้ใช้ได้ รายการที่อนุญาต แต่ ผู้ใช้จะไม่เห็นแอปดังกล่าวหรือจะติดตั้งแอปจาก Managed Google ไม่ได้ Play Store หากแอปที่ถูกเพิกถอนการอนุมัติได้รับการอนุมัติอีกครั้ง ระบบจะสร้างแอป พร้อมให้บริการแก่ผู้ใช้อีกครั้งใน Managed Google Play Store

เลย์เอาต์ร้านค้าแบบพื้นฐาน

โดยค่าเริ่มต้น ระบบจะเปิดใช้เลย์เอาต์ของร้านพื้นฐานให้กับลูกค้าแต่ละรายของคุณ เลย์เอาต์พื้นฐานมี 1 หน้าและ 1 คลัสเตอร์ที่แสดงแอปได้สูงสุด 1, 000 แอป แอปเปิดอยู่ หน้าเว็บจะจัดเรียงตามค่า product ID ถ้าคุณสร้างเกณฑ์ที่กำหนดเอง การจัดวางของร้าน (โดยการตั้งค่า storeLayoutType ="custom") การจัดวางของร้านแบบพื้นฐานคือ ปิดใช้อยู่

สร้างเลย์เอาต์ของร้านค้าที่กำหนดเอง

EMM สร้างเลย์เอาต์ร้านค้าที่กำหนดเองสำหรับลูกค้าองค์กรแต่ละรายได้ เลย์เอาต์ของร้านค้าที่กำหนดเองช่วยให้คุณตั้งค่าคลัสเตอร์ของแอป เพิ่มคลัสเตอร์ที่เฉพาะเจาะจงไปยัง หน้าเว็บ และระบุลิงก์ด่วน เนื่องจากคุณกำหนดแอปที่ประกอบกัน คลัสเตอร์ คุณจะใช้คลัสเตอร์เพื่อจัดกลุ่มแอปที่เกี่ยวข้องได้ (เช่น "Essentials" และ "จัดการสิ่งต่างๆ ให้เสร็จ") ผู้ใช้จะเห็นเฉพาะแอปที่มีสิทธิ์ ได้รับการยอมรับจากผู้ดูแลระบบไอที

เอกสารอ้างอิง Google Play EMM API มีข้อมูลเกี่ยวกับทรัพยากรและ ที่เกี่ยวข้องที่คุณใช้เพื่อสร้างรูปแบบร้านค้าที่กำหนดเอง โดยเฉพาะอย่างยิ่ง Storelayoutpages และ Storelayoutclusters ขั้นตอนที่ระบุไว้ใน ส่วนต่างๆ ด้านล่างจะอธิบายตัวอย่างเบื้องต้น

งานการจัดโปรแกรม

หากต้องการสร้างเลย์เอาต์ที่กำหนดเองใน Managed Google Play Store ให้ลูกค้า คุณต้องทำดังนี้ ต้อง

  1. สร้างเพจ
  2. สร้างคลัสเตอร์อย่างน้อย 1 รายการภายในหน้า
  3. ตั้งค่าหน้าแรก

อย่างน้อยที่สุดคุณต้องสร้างหน้าเว็บอย่างน้อย 1 หน้าซึ่งประกอบด้วย 1 คลัสเตอร์สำหรับ การจัดวาง Store และคลัสเตอร์ต้องมีแอปอย่างน้อยหนึ่งรายการ นอกจากนี้ คุณต้องตั้งค่า หน้าแรก หากคุณสร้างหน้าเว็บมากกว่า 1 หน้า คุณมีตัวเลือกในการตั้งค่า ให้แสดงที่ด้านบนของหน้าแต่ละหน้า

งานการเขียนโปรแกรมสำหรับการสร้างเลย์เอาต์ใน Managed Play Store แบบกำหนดเองมีดังนี้ ที่อธิบายไว้ด้านล่าง ตามด้วยตัวอย่างที่สมบูรณ์ของการจัดวางร้านค้า

สร้างเพจ

หน้าเว็บประกอบด้วยคลัสเตอร์อย่างน้อย 1 รายการ แต่ละคลัสเตอร์มีแอปอย่างน้อย 1 รายการ ระบบจะสร้างหน้าสำหรับองค์กรที่เฉพาะเจาะจง คุณจึงต้องเรียกใช้การดำเนินการ อินสแตนซ์ระดับองค์กรที่ระบุ (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)
  • ชื่อคลัสเตอร์ที่ใช้ง่าย เช่น โดยดูจาก Receive 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();
}

ตั้งค่าหน้าแรก

หน้าแรกที่แสดงใน Managed 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();
}

ลิงก์ด่วนจะแสดงอยู่ที่ด้านบนของแต่ละหน้า เพื่อให้ผู้ใช้ไปยังส่วนต่างๆ ระหว่างหน้าต่างๆ ใน Store หากต้องการใช้ลิงก์ด่วน ขั้นแรกให้ค้นหา pageId สำหรับ (แสดงผลโดย insert) และเพิ่มลิงก์ไปยังหน้าดังกล่าว ตัวอย่างเช่น หากคุณ สร้างหน้าเว็บ 3 หน้า ซึ่ง pageId คือ p1, p2, p3 คุณสามารถเพิ่มลิงก์ด่วนได้ จากหน้าแรกไปยังอีก 2 หน้าพร้อมด้วยข้อมูลต่อไปนี้

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