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 แสดงองค์ประกอบสำคัญบางอย่างของการจัดวางร้านค้าตามที่เห็นบนอุปกรณ์
![หน้าจอตัวอย่างจากอุปกรณ์ของผู้ใช้ที่แสดงองค์ประกอบของร้านค้า
รวมทั้งลิงก์ด่วน หน้าเว็บ และกลุ่มแอป](https://developers.google.cn/static/android/work/play/emm-api/store_layout_figure_1.png?authuser=0000&hl=th)
- ลิงก์ด่วน: ลิงก์ที่ไม่บังคับซึ่งให้สิทธิ์เข้าถึงหน้าอื่นๆ รวดเร็ว จะใช้ชื่อของหน้าเว็บที่ลิงก์ไป
- หน้า: หน้าที่มีชื่อและเลื่อนได้ในแนวตั้ง ซึ่งประกอบด้วยกลุ่มแอปต่างๆ
- คลัสเตอร์ (หรือที่เรียกว่าคอลเล็กชัน): ชื่อที่เลื่อนได้ในแนวนอน ภาพสไลด์ของแอป ขยายแบบเต็มหน้าถ้าหน้าเว็บมีคลัสเตอร์เดียว (หรือ คลิก "เพิ่มเติม" ให้เลื่อนในแนวตั้งได้)
ข้อจำกัดขององค์ประกอบการจัดวางร้านค้า
เมื่อออกแบบและติดตั้งใช้งานเลย์เอาต์ของร้านค้าให้กับลูกค้า ให้ (ขีดจำกัดส่วนใหญ่เหล่านี้มาจากหลักการออกแบบ 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 รายการภายในหน้า
- ตั้งค่าหน้าแรก
อย่างน้อยที่สุดคุณต้องสร้างหน้าเว็บอย่างน้อย 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");
}