יצירת פריסות מותאמות אישית לחנות

Google Play לארגונים מאפשר לעצב וליצור פריסות של חנויות עבור הלקוחות הארגוניים. ניתן להתאים אישית את פריסת החנות על ידי קיבוץ אפליקציות לאשכולות, הגדרת דפי חנות והוספת קישורים מהירים שמספקים גישה לדפים מרובים בחנות.

כל האפליקציות שזמינות למשתמש קצה בחנות Google Play לארגונים צריכות לקבל קודם אישור של אדמין ב-IT, אישור של המשתמש והוספה לאשכול. (פרטים נוספים על התהליך הזה מופיעים בקטע הוספת אפליקציות לפריסת חנות).

הרכיבים בפריסת החנות

פריסת החנות בדרך כלל מורכבת מסדרה של דפים שמוצגים למשתמשים ב-Google Play לארגונים. כל דף יכול להכיל קבוצת אפליקציות אחת או יותר, שנקראות אשכולות. כל אשכול מכיל אפליקציה אחת או יותר.

אשכולות מאפשרים לך לקבץ אפליקציות קשורות. לדוגמה, תוכלו ליצור דף לאפליקציות שקשורות לעבודה שמכיל אשכול Essentials ואשכול Receive Things Done. אשכול של Essentials יכול להכיל אפליקציות כמו Notepad+ , Google Slides וכן הלאה. האשכול של Get Things Done יכול לכלול אפליקציות כמו OneNote, Wunderlist, Any.do ואפליקציות אחרות למעקב, ליומן ולתכנון פגישות (ראו איור 1).

כשיוצרים דף, אפשר גם להוסיף עד 10 קישורים מהירים בראש הדף. קישורים מהירים מאפשרים למשתמשים לעבור לדפים אחרים. לדוגמה, באיור 1 מוצגים קישורים מהירים לדפים 'עסק', 'תקשורת' ו'פיננסים'.

באיור 1 מוצגים כמה מהרכיבים העיקריים של פריסת החנות במכשיר:

מסך לדוגמה ממכשיר של משתמש, שמוצגים בו הרכיבים של פריסת
    החנות, כולל קישורים מהירים, דפים ואשכולות של אפליקציות.
איור 1 – מסך לדוגמה ממכשיר של משתמש
  • קישורים מהירים: קישורים אופציונליים שמספקים גישה לדפים אחרים. קישורים מהירים משתמשים בשם הדף שאליו הם מפנים.
  • דף: דף בעל שם שניתן לגלילה אנכית, שמכיל אשכולות של אפליקציות.
  • אשכול (נקרא גם collection): קרוסלה בעלת שם של אפליקציות שניתן לגלול בצורה אופקית. מתרחב לדף מלא אם הדף מכיל אשכול יחיד (או לחץ על 'עוד' על מנת לאפשר גלילה אנכית).

מגבלות של רכיבי פריסת חנות

כשאתם מעצבים ומטמיעים פריסות של חנויות עבור הלקוחות, חשוב לזכור את המגבלות הבאות (רוב המגבלות האלה נובעות מעקרונות של תכנון נכון של ממשק המשתמש):

  • 100 אפליקציות לכל אשכול
  • 30 אשכולות בכל דף
  • 10 קישורים מהירים בכל דף
  • 100 דפים בכל חנות
  • 1,000 מוצרים (אפליקציות שאושרו) לכל ארגון

שמות של דפים ואשכולות מותאמים לשוק המקומי

הפריסה של חנות Google Play לארגונים תומכת בשמות מותאמים לשוק המקומי לדפי חנויות ולאשכולות חנויות. כשיוצרים דף או אשכול, צריך לספק רשימה של לוקאלים נתמכים כתגי שפה של IITF, ואת השמות המשויכים אליהם. אם הלוקאל של המשתמש לא מופיע ברשימת התמיכה, המערכת תבחר את ההתאמה הקרובה ביותר שזמינה. לדוגמה, אם en-GB לא זמין, המערכת תבחר במקום זאת ב-en-US. אם אין התאמה קרובה, המערכת תבחר את השם הפרטי ברשימה.

הוספת אפליקציות לפריסת חנות

כל האפליקציות ב-policy.productPolicy מתווספות אוטומטית אם הארגון משתמש בפריסת חנות בסיסית. אם בארגון משתמשים בפריסת חנויות מותאמת אישית, האפליקציות שקיימות רק בפריסה המותאמת אישית וברשימה של productPolicy יוצגו במכשיר. ניתן לחפש את כל הפריטים שנמצאים ב-policy.productPolicy בחנות Play.

כדי שמשתמש קצה יתקין אפליקציה מחנות Google Play לארגונים, האפליקציה צריכה להיות תואמת למכשיר של המשתמש ולעמוד בתנאי הבא:

  • נוספה לרשימת ההרשאות של המשתמש (באמצעות policy.productPolicy במשאב המכשיר) וגם policy.productAvailabilityPolicy מוגדרת כ-WHITELIST, או policy.productAvailabilityPolicy מוגדרת ל-ALL (מאפשרת חיפוש והתקנה של כל אפליקציה).

המשתמש יכול להשתמש בתכונת החיפוש שמובנית ב-Google Play לארגונים כדי למצוא ולהתקין אפליקציה שעומדת בתנאים האלה. עם זאת, האפליקציה תהיה גלויה רק בפריסה בסיסית של החנות או אם הוספתם אותה לאוסף/אשכול.

אפליקציות שהאישור שלהן בוטל

אדמינים יכולים לבטל את האישור של האפליקציה (לבטל את האישור שלה) בכל שלב. עדיין ניתן יהיה להוסיף אפליקציות שהאישור שלהן בוטל לאשכולות ולרשימות ההרשאות של המשתמשים, אבל המשתמשים לא יראו אותן ולא יוכלו להתקין אותן מחנות Google Play לארגונים. אם אפליקציה שהאישור שלה בוטל תאושר מחדש, היא תהיה זמינה שוב למשתמשים בחנות Google Play לארגונים.

פריסת חנות בסיסית

כברירת מחדל, מופעלת פריסה בסיסית של החנות לכל אחד מהלקוחות שלכם. הפריסה הבסיסית כוללת דף אחד ואשכול אחד, שמוצגים בו 1,000 אפליקציות לכל היותר. האפליקציות בדף ממוינות לפי סדר הערך product ID שלהן. אם יוצרים פריסת חנות מותאמת אישית (באמצעות ההגדרה storeLayoutType ="custom"), פריסת החנות הבסיסית מושבתת.

יצירת פריסות מותאמות אישית של החנות

ספקי EMM יכולים ליצור פריסות מותאמות אישית של החנויות לכל אחד מהלקוחות הארגוניים שלהם. פריסות מותאמות אישית של החנות מאפשרות להגדיר אשכולות של אפליקציות, להוסיף אשכולות ספציפיים לדפים ולציין קישורים מהירים. מכיוון שאתם מגדירים את האפליקציות שמהן מורכב כל אשכול, תוכלו להשתמש באשכולות כדי לקבץ אפליקציות קשורות (לדוגמה, "Essentials" ו-" Get Things Done"). המשתמשים רואים רק את האפליקציות שמנהל ה-IT אישר את ההרשאות שלהן.

חומרי העזר של Google Play EMM API כוללים מידע על המשאבים והשיטות המשויכות שבהם אתם משתמשים כדי ליצור פריסת חנות מותאמת אישית, ובמיוחד Storelayoutpages ו-Storelayoutclusters. השלבים המפורטים בקטעים הבאים מפרטים דוגמה בסיסית.

משימות תכנות

כדי ליצור פריסה מותאמת אישית של חנות ב-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)
  • שם ידידותי למשתמש לאשכול, כגון {7}יצירת דברים שבוצעו
  • השדה 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) ולהוסיף את הקישור לדף. לדוגמה, אם יוצרים שלושה דפים שהpageId שלהם הם p1, p2, p3, אפשר להוסיף קישורים מהירים מהדף הראשון לשני הדפים האחרים, באמצעות הפרטים הבאים:

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