Managed Google Play ให้คุณออกแบบและสร้างเลย์เอาต์ของร้านค้าสำหรับลูกค้าองค์กร คุณสามารถปรับแต่งเลย์เอาต์ของร้านค้าโดยการจัดกลุ่มแอปเป็นคลัสเตอร์ ตั้งค่าหน้าร้านค้า และเพิ่มลิงก์ด่วนที่ให้สิทธิ์เข้าถึงหลายหน้าภายในร้านค้า
แอปทั้งหมดที่ให้บริการแก่ผู้ใช้ปลายทางใน Managed Google Play Store ต้องได้รับการอนุมัติจากผู้ดูแลระบบไอที อนุมัติสำหรับผู้ใช้ และเพิ่มลงในคลัสเตอร์ก่อน (ดูการเพิ่มแอปลงในเลย์เอาต์ของ Store สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับขั้นตอนนี้)
องค์ประกอบของเลย์เอาต์ร้านค้า
โดยทั่วไปเลย์เอาต์ของร้านค้าจะประกอบด้วยชุดหน้าที่แสดงต่อผู้ใช้ใน Managed Google Play แต่ละหน้าอาจมีกลุ่มแอปอย่างน้อย 1 กลุ่มที่เรียกว่าคลัสเตอร์ แต่ละคลัสเตอร์จะมีแอปอย่างน้อย 1 รายการ
คลัสเตอร์ช่วยให้คุณจัดกลุ่มแอปที่เกี่ยวข้องได้ เช่น คุณสร้างหน้าแอปที่เกี่ยวข้องกับงานซึ่งมีคลัสเตอร์ Essentials และคลัสเตอร์ Getting Things Done ได้ คลัสเตอร์ Essentials อาจมีแอป เช่น Notepad+, Google สไลด์ เป็นต้น คลัสเตอร์ "เริ่มต้นใช้งาน" อาจมีแอปอย่าง OneNote, Wunderlist, Any.do รวมถึงแอปการติดตามปฏิทินและการวางแผนการประชุมอื่นๆ (ดูรูปที่ 1)
เมื่อสร้างหน้าเว็บ คุณยังสามารถเพิ่มลิงก์ด่วนได้สูงสุด 10 ลิงก์ที่ด้านบนของหน้า ลิงก์ด่วนช่วยให้ผู้ใช้ข้ามไปยังหน้าอื่นๆ ได้ ตัวอย่างเช่น รูปที่ 1 แสดงลิงก์ด่วนสำหรับหน้าธุรกิจ การสื่อสาร และการเงิน
รูปที่ 1 แสดงองค์ประกอบหลักบางส่วนของการจัดวางร้านค้าตามที่เห็นในอุปกรณ์
- ลิงก์ด่วน: ลิงก์ที่ไม่บังคับซึ่งให้สิทธิ์เข้าถึงหน้าเว็บอื่นๆ ลิงก์ด่วนจะใช้ชื่อของหน้าที่มีการชี้ไป
- หน้าเว็บ: หน้าเว็บที่มีชื่อและเลื่อนได้ในแนวตั้ง ซึ่งประกอบด้วยกลุ่มแอป
- คลัสเตอร์ (หรือที่เรียกว่าคอลเล็กชัน): ภาพสไลด์ของแอปที่มีชื่อและเลื่อนในแนวนอนได้ ขยายเป็นแบบเต็มหน้าหากหน้าเว็บมีคลัสเตอร์เดียว (หรือคลิก "เพิ่มเติม" เพื่อเลื่อนในแนวตั้งได้)
ข้อจำกัดขององค์ประกอบการจัดวางร้านค้า
เมื่อออกแบบและใช้เลย์เอาต์ร้านค้าสำหรับลูกค้า โปรดคํานึงถึงขีดจํากัดเหล่านี้ (ขีดจํากัดส่วนใหญ่เหล่านี้เกิดจากหลักการออกแบบ UI ที่ดี)
- 100 แอปต่อคลัสเตอร์
- 30 คลัสเตอร์ต่อหน้า
- ลิงก์ด่วน 10 ลิงก์ต่อหน้า
- 100 หน้าต่อร้านค้า
- ผลิตภัณฑ์ (แอปที่ได้รับอนุมัติ) 1,000 รายการต่อองค์กร
ชื่อหน้าเว็บและคลัสเตอร์ที่แปลแล้ว
เลย์เอาต์ของ Managed Google Play Store รองรับชื่อที่แปลแล้วสำหรับหน้าร้านค้าและคลัสเตอร์ร้านค้า เมื่อสร้างหน้าเว็บหรือคลัสเตอร์ คุณจะต้องระบุรายการภาษาที่รองรับเป็นแท็กภาษา IETF และชื่อที่แปลแล้วที่เกี่ยวข้อง หากภาษาของผู้ใช้ไม่อยู่ในรายการที่รองรับ ระบบจะเลือกรายการที่ตรงกันที่ใกล้เคียงที่สุด ตัวอย่างเช่น หากไม่มี en-GB ระบบจะเลือก en-US แทน หากไม่มีการจับคู่ที่ตรงกัน ระบบจะเลือกชื่อจากรายการ
การเพิ่มแอปลงในเลย์เอาต์ของร้านค้า
ระบบจะเพิ่มแอปทั้งหมดที่มีอยู่ใน policy.productPolicy
โดยอัตโนมัติหากองค์กรใช้เลย์เอาต์ร้านค้าพื้นฐาน หากองค์กรใช้เลย์เอาต์ร้านค้าที่กำหนดเอง แอปที่แสดงในเลย์เอาต์ที่กำหนดเองเท่านั้นและรายการ productPolicy
จะแสดงในอุปกรณ์ รายการทั้งหมดที่มีอยู่ใน policy.productPolicy
จะค้นหาได้ใน Play Store
สำหรับผู้ใช้ปลายทางที่จะติดตั้งแอปจาก Managed Google Play Store แอปต้องเข้ากันได้กับอุปกรณ์ของผู้ใช้และตรงตามเงื่อนไขต่อไปนี้
- เพิ่มลงในรายการที่อนุญาตของผู้ใช้ (โดยใช้
policy.productPolicy
ในทรัพยากรของอุปกรณ์) และตั้งค่าpolicy.productAvailabilityPolicy
เป็นWHITELIST
หรือตั้งค่าpolicy.productAvailabilityPolicy
เป็นALL
(เพื่อให้ผู้ใช้ค้นหาและติดตั้งแอปใดก็ได้)
ผู้ใช้จะใช้ฟีเจอร์การค้นหาที่มีอยู่ใน Managed Google Play เพื่อค้นหาและติดตั้งแอปที่เป็นไปตามเงื่อนไขเหล่านี้ได้ อย่างไรก็ตาม แอปจะแสดงในเลย์เอาต์พื้นฐานของ Store เท่านั้นหรือเมื่อคุณเพิ่มแอปลงในคอลเล็กชัน/คลัสเตอร์
แอปที่เพิกถอนการอนุมัติ
ผู้ดูแลระบบสามารถยกเลิกการอนุมัติแอป (เพิกถอนการอนุมัติของแอป) ได้ทุกเมื่อ แอปที่ถูกเพิกถอนการอนุมัติจะยังคงสามารถเพิ่มไปยังคลัสเตอร์และรายการที่อนุญาตของผู้ใช้ได้ แต่ผู้ใช้จะไม่เห็นหรือไม่สามารถติดตั้งแอปเหล่านั้นจาก Managed Google Play Store หากแอปที่ถูกเพิกถอนการอนุมัติได้รับการอนุมัติอีกครั้ง แอปจะพร้อมใช้งานสำหรับผู้ใช้อีกครั้งใน Managed Google Play Store
การจัดวางร้านค้าพื้นฐาน
โดยค่าเริ่มต้น ระบบจะเปิดใช้เลย์เอาต์ร้านค้าพื้นฐานให้กับลูกค้าแต่ละราย เลย์เอาต์พื้นฐานมี 1 หน้าและ 1 คลัสเตอร์ ซึ่งแสดงแอปสูงสุด 1, 000 แอป แอปในหน้าเว็บจะจัดเรียงตามค่า product ID
หากคุณสร้างเลย์เอาต์ร้านค้าที่กำหนดเอง (โดยการตั้งค่า storeLayoutType ="custom"
) ระบบจะปิดใช้เลย์เอาต์พื้นฐานของร้านค้า
สร้างเลย์เอาต์ร้านค้าที่กำหนดเอง
EMM สามารถสร้างเลย์เอาต์ร้านค้าที่กำหนดเองสำหรับลูกค้าองค์กรแต่ละรายได้ เลย์เอาต์ร้านค้าที่กำหนดเองช่วยให้คุณตั้งค่าคลัสเตอร์ของแอป เพิ่มคลัสเตอร์ที่เจาะจงในหน้าเว็บ และระบุลิงก์ด่วนได้ เนื่องจากคุณกำหนดแอปที่ประกอบกันเป็นแต่ละคลัสเตอร์ คุณจึงใช้คลัสเตอร์เพื่อจัดกลุ่มแอปที่เกี่ยวข้องได้ (เช่น "แอปสำคัญ" และ "ทำสิ่งต่างๆ ให้เสร็จ") ผู้ใช้จะจะเห็นเฉพาะแอปที่ผู้ดูแลระบบไอที ยอมรับสิทธิ์แล้ว
เอกสารอ้างอิง Google Play EMM API มีข้อมูลเกี่ยวกับทรัพยากรและวิธีที่เชื่อมโยงที่คุณใช้ในการสร้างเลย์เอาต์ร้านค้าที่กำหนดเอง โดยเฉพาะ Storelayoutpages และ Storelayoutclusters ขั้นตอนที่แสดงในส่วนด้านล่างจะอธิบายตัวอย่างเบื้องต้น
งานเขียนโปรแกรม
หากต้องการสร้างเลย์เอาต์ Managed Google Play Store ที่กำหนดเองสำหรับลูกค้าของคุณ คุณต้องดำเนินการต่อไปนี้
- สร้างเพจ
- สร้างคลัสเตอร์อย่างน้อย 1 รายการภายในหน้า
- ตั้งค่าหน้าแรก
อย่างน้อยที่สุด คุณต้องสร้างหน้าเว็บอย่างน้อย 1 หน้าที่ประกอบด้วย 1 คลัสเตอร์สำหรับการจัดวางร้านค้า และคลัสเตอร์ต้องมีอย่างน้อย 1 แอป คุณต้องตั้งค่าหน้าแรกด้วย หากสร้างหน้าเว็บมากกว่า 1 หน้า คุณจะมีตัวเลือกในการตั้งค่าลิงก์ด่วนให้แสดงที่ด้านบนของแต่ละหน้า
งานเขียนโปรแกรมสำหรับการสร้างเลย์เอาต์ใน Managed Play Store ที่กำหนดเองมีอธิบายอยู่ด้านล่าง ตามด้วยตัวอย่างเลย์เอาต์ทั้งหมดใน 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
) - ชื่อที่เป็นมิตรกับผู้ใช้สำหรับคลัสเตอร์ เช่น แปลงานทุกอย่างเสร็จแล้ว
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();
ตัวอย่าง
นี่คือตัวอย่างที่สมบูรณ์ในการสร้างร้านค้าพื้นฐานซึ่งประกอบด้วยหน้าเว็บที่เชื่อมโยงถึงกัน 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");
}