Managed Google Play cho phép bạn thiết kế và tạo bố cục cửa hàng cho khách hàng doanh nghiệp. Bạn có thể tuỳ chỉnh bố cục cửa hàng bằng cách nhóm ứng dụng thành các cụm, thiết lập trang cửa hàng và thêm các đường liên kết nhanh cung cấp quyền truy cập vào nhiều trang trong cửa hàng.
Tất cả ứng dụng được cung cấp cho người dùng cuối trong Cửa hàng Managed Google Play trước tiên phải được quản trị viên CNTT phê duyệt, phê duyệt cho người dùng và thêm vào một cụm. (Xem bài viết Thêm ứng dụng vào bố cục cửa hàng để biết thêm thông tin chi tiết về quy trình này).
Các thành phần của bố cục cửa hàng
Bố cục cửa hàng thường bao gồm một loạt trang mà người dùng nhìn thấy trong Managed Google Play. Mỗi trang có thể chứa một hoặc nhiều nhóm ứng dụng, được gọi là cụm. Mỗi cụm chứa một hoặc nhiều ứng dụng.
Các cụm giúp bạn nhóm các ứng dụng có liên quan. Ví dụ: bạn có thể tạo một trang cho các ứng dụng liên quan đến công việc chứa cụm Cần thiết và cụm Hoàn thành công việc. Cụm Essentials có thể chứa các ứng dụng như Notepad+, Google Trang trình bày, v.v. Cụm Hoàn thành công việc có thể bao gồm các ứng dụng như OneNote, Wunderlist, Any.do và các ứng dụng theo dõi, lịch và lập kế hoạch cuộc họp khác (xem Hình 1).
Khi tạo một trang, bạn cũng có thể thêm tối đa 10 đường liên kết nhanh ở đầu trang. Đường liên kết nhanh giúp người dùng chuyển đến các trang khác. Ví dụ: Hình 1 cho thấy các đường liên kết nhanh đến các trang Kinh doanh, Truyền thông và Tài chính.
Hình 1 cho thấy một số thành phần chính của bố cục cửa hàng khi hiển thị trên một thiết bị:
![Màn hình mẫu trên thiết bị của người dùng, cho thấy các thành phần của bố cục cửa hàng, bao gồm cả các đường liên kết nhanh, trang và cụm ứng dụng.](https://developers-dot-devsite-v2-prod.appspot.com/static/android/work/play/emm-api/store_layout_figure_1.png?authuser=5&hl=vi)
- Liên kết nhanh: Các đường liên kết không bắt buộc cung cấp quyền truy cập vào các trang khác. Đường liên kết nhanh sẽ lấy tên của trang mà đường liên kết đó trỏ đến.
- Trang: Một trang có thể cuộn theo chiều dọc và được đặt tên bao gồm các cụm ứng dụng.
- Cụm (còn gọi là bộ sưu tập): Một băng chuyền có thể cuộn theo chiều ngang của các ứng dụng. Mở rộng ra toàn trang nếu trang chứa một cụm duy nhất (hoặc nhấp vào "Thêm" để cuộn theo chiều dọc).
Hạn chế của các phần tử bố cục cửa hàng
Khi thiết kế và triển khai bố cục cửa hàng cho khách hàng, hãy lưu ý đến những giới hạn này (hầu hết các giới hạn này là do nguyên tắc thiết kế giao diện người dùng hợp lý):
- 100 ứng dụng trên mỗi cụm
- 30 cụm trên mỗi trang
- 10 đường liên kết nhanh trên mỗi trang
- 100 trang mỗi cửa hàng
- 1.000 sản phẩm (ứng dụng được phê duyệt) cho mỗi doanh nghiệp
Tên cụm và trang đã bản địa hoá
Bố cục Cửa hàng Managed Google Play hỗ trợ tên đã bản địa hoá cho các trang cửa hàng và cụm cửa hàng. Khi tạo một trang hoặc cụm, bạn cung cấp danh sách các ngôn ngữ được hỗ trợ, dưới dạng thẻ ngôn ngữ IETF và tên đã bản địa hoá tương ứng. Nếu ngôn ngữ của người dùng không có trong danh sách được hỗ trợ, hệ thống sẽ chọn kết quả phù hợp nhất hiện có. Ví dụ: nếu không có en-GB, hệ thống sẽ chọn en-US. Nếu không có kết quả trùng khớp gần, hệ thống sẽ chọn tên đầu tiên trong danh sách.
Thêm ứng dụng vào bố cục cửa hàng
Tất cả ứng dụng có trong policy.productPolicy
sẽ tự động được thêm vào nếu doanh nghiệp đang sử dụng bố cục cửa hàng cơ bản. Nếu doanh nghiệp đang sử dụng bố cục cửa hàng tuỳ chỉnh, thì các ứng dụng chỉ có trong bố cục tuỳ chỉnh và danh sách productPolicy
sẽ hiển thị trên thiết bị. Bạn có thể tìm tất cả các mục có trong policy.productPolicy
trên Cửa hàng Play.
Để người dùng cuối cài đặt được ứng dụng qua Cửa hàng Managed Google Play, ứng dụng đó phải tương thích với thiết bị của người dùng và đáp ứng điều kiện sau:
- Đã thêm vào danh sách cho phép của người dùng (sử dụng
policy.productPolicy
trên tài nguyên thiết bị) VÀpolicy.productAvailabilityPolicy
được đặt thànhWHITELIST
, HOẶCpolicy.productAvailabilityPolicy
được đặt thànhALL
(cho phép tìm kiếm và cài đặt bất kỳ ứng dụng nào).
Người dùng có thể sử dụng tính năng tìm kiếm tích hợp trong Managed Google Play để tìm và cài đặt bất kỳ ứng dụng nào đáp ứng những điều kiện này. Tuy nhiên, ứng dụng sẽ chỉ hiển thị trong bố cục cửa hàng cơ bản hoặc nếu bạn đã thêm ứng dụng vào một bộ sưu tập/cụm.
Ứng dụng bị thu hồi quyết định phê duyệt
Quản trị viên có thể huỷ phê duyệt một ứng dụng (thu hồi sự phê duyệt của ứng dụng đó) bất cứ lúc nào. Bạn vẫn có thể thêm các ứng dụng bị thu hồi phê duyệt vào các cụm và danh sách cho phép của người dùng. Tuy nhiên, người dùng sẽ không thấy các ứng dụng đó hoặc không thể cài đặt các ứng dụng đó từ Cửa hàng Managed Google Play. Nếu một ứng dụng bị thu hồi phê duyệt được phê duyệt lại, người dùng sẽ có thể sử dụng lại ứng dụng đó trong Cửa hàng Managed Google Play.
Bố cục cửa hàng cơ bản
Theo mặc định, bố cục cửa hàng cơ bản được bật cho từng khách hàng của bạn. Bố cục cơ bản có 1 trang và 1 cụm, hiển thị tối đa 1.000 ứng dụng. Các ứng dụng trên trang được sắp xếp theo thứ tự giá trị product ID
. Nếu bạn tạo bố cục cửa hàng tuỳ chỉnh (bằng cách đặt storeLayoutType ="custom"
), bố cục cửa hàng cơ bản sẽ bị tắt.
Tạo bố cục tuỳ chỉnh cho cửa hàng
EMM có thể tạo bố cục cửa hàng tuỳ chỉnh cho từng khách hàng doanh nghiệp của họ. Bố cục cửa hàng tuỳ chỉnh cho phép bạn thiết lập các cụm ứng dụng, thêm các cụm cụ thể vào các trang và chỉ định các đường liên kết nhanh. Vì bạn xác định các ứng dụng tạo nên từng cụm, nên bạn có thể sử dụng cụm để nhóm các ứng dụng liên quan (ví dụ: "Các ứng dụng thiết yếu" và "Hoàn thành công việc"). Người dùng chỉ thấy những ứng dụng đã được quản trị viên CNTT chấp nhận quyền.
Tài liệu tham khảo API EMM của Google Play có thông tin về các tài nguyên và phương thức liên quan mà bạn dùng để tạo bố cục cửa hàng tuỳ chỉnh, cụ thể là Storelayoutpages và Storelayoutclusters. Các bước được nêu trong các phần dưới đây sẽ hướng dẫn bạn qua một ví dụ cơ bản.
Nhiệm vụ lập trình
Để tạo bố cục Cửa hàng Google Play được quản lý tuỳ chỉnh cho khách hàng, bạn phải:
- Tạo trang
- Tạo một hoặc nhiều cụm bên trong các trang
- Đặt trang chủ
Ít nhất, bạn phải tạo ít nhất một trang bao gồm một cụm cho bố cục cửa hàng, đồng thời cụm đó phải chứa ít nhất một ứng dụng. Bạn cũng phải đặt trang chủ. Nếu tạo nhiều trang, bạn có thể thiết lập để đường liên kết nhanh hiển thị ở đầu mỗi trang.
Các tác vụ lập trình để tạo bố cục Cửa hàng Play được quản lý tuỳ chỉnh được mô tả dưới đây, tiếp theo là ví dụ hoàn chỉnh về bố cục cửa hàng.
Tạo trang
Một trang bao gồm một hoặc nhiều cụm. Mỗi cụm chứa ít nhất một ứng dụng. Các trang được tạo cho các doanh nghiệp cụ thể, vì vậy, bạn phải gọi các hoạt động trên các phiên bản doanh nghiệp cụ thể (enterpriseId
). Bạn có thể cung cấp tên thân thiện với người dùng và thông tin bản địa hoá cho từng trang, cùng với danh sách pageId
mà người dùng có thể truy cập từ trang. Trang mới được tạo bằng thao tác insert
(Storelayoutpages.insert) như minh hoạ dưới đây:
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();
}
Tạo một cụm
Các cụm chứa các nhóm ứng dụng. Trước tiên, cụm này được tạo, sau đó có thể được thêm vào một trang. Để tạo một cụm, hãy gọi thao tác insert
của Storelayoutclusters và truyền giá trị cho các thuộc tính này:
- Danh sách các
productId
mà cụm phải chứa (ví dụ:productId
cho Gmail làapp:com.google.android.gm
) - Đặt tên thân thiện với người dùng cho cụm, chẳng hạn như Chuyến Hồ sơ
enterpriseId
cần liên kết với cụm nàypageId
(cho trang chứa cụm)- Vị trí của các cụm trên trên trang (đầu tiên, thứ hai, v.v.)
Ví dụ:
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();
}
Đặt trang chủ
Trang đầu tiên hiển thị trong Managed Google Play trên thiết bị của người dùng là trang chủ. Là một EMM, bạn xác định một trang chủ cho mỗi khách hàng của mình. Trang sẽ luôn hiển thị, ngay cả khi trống và không thể xoá được.
Trong ví dụ này, mã nhận dạng của trang chủ được tìm nạp cho enterpriseId
đã chỉ định:
public StoreLayout getStoreLayout(String enterpriseId) throws IOException {
return androidEnterprise
.enterprises()
.getStoreLayout(enterpriseId)
.execute();
}
Ví dụ tiếp theo sau đây đặt trang chủ cho khách hàng bằng cách cung cấp enterpriseId
của khách hàng và pageId
của trang chủ của khách hàng đó:
public StoreLayout setStoreLayout(String enterpriseId, String homepageId)
throws IOException {
StoreLayout storeLayout = new StoreLayout();
storeLayout.setHomepageId(homepageId);
return androidEnterprise
.enterprises()
.setStoreLayout(enterpriseId, storeLayout)
.execute();
}
Đặt đường liên kết nhanh (không bắt buộc)
Đường liên kết nhanh hiển thị ở đầu mỗi trang, giúp người dùng dễ dàng di chuyển giữa các trang trong cửa hàng. Để sử dụng đường liên kết nhanh, trước tiên, hãy lấy pageId
cho trang (do insert
trả về) và thêm đường liên kết vào trang đó. Ví dụ: nếu tạo 3 trang có pageId
là p1
, p2
, p3
, bạn có thể thêm đường liên kết nhanh từ trang đầu tiên đến 2 trang còn lại như sau:
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();
Ví dụ:
Dưới đây là một ví dụ hoàn chỉnh về cách tạo một cửa hàng cơ bản bao gồm 3 trang được liên kết với nhau. Mỗi trang sẽ có các ứng dụng tương tự nhau. Mỗi trang được tạo bằng cách chỉ định enterpriseId
của khách hàng và chỉ đặt trang name
để lấy pageId
mà sau đó được dùng để tạo đường liên kết nhanh đến trang.
// 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");
}