משימות ניהול אופייניות

ספקי EMM יכולים להטמיע מגוון משימות ניהול טיפוסיות בפתרונות שלהם לארגונים ל-Android, כמו המשימות שמופיעות במדריך הזה. הקוד לדוגמה משתמש בספריית הלקוח של ממשק ה-API של Google Play EMM עבור Java®.

חיפוש משתמשים וקבלת פרטי משתמשים

ברבים מממשקי ה-API של Google Play EMM יש צורך ב-userId (בנוסף ל-enterpriseId) כדי לבצע משימות מסוימות שמשויכות למשתמשים, כמו התקנה של אפליקציה, השגת הרשאות ורישוי. בחלק מהקריאות יש צורך באובייקט משתמש.

אם בארגון משתמשים בחשבונות Google Play מנוהלים, יש לשמור על מיפוי בין כתובות האימייל של המשתמשים לבין מזהי המשתמשים בחשבונות האלה. בחשבונות Google אפשר להשתמש ב-UsersListResponse.

חיפוש משתמשים

בקוד לדוגמה הזה מוצגים מזהי משתמשים שמשויכים לחשבונות Google. היא לא חלה על ארגונים שמשתמשים בחשבונות Google Play מנוהלים.

הדוגמה הזו מבוססת על ההנחה שייבאת את המודלים User ו-UsersListResponse לקוד שלך. כדי לקבל חשבון משתמש ספציפי, קבל את הuserId שלו על ידי העברת הenterpriseId והאימייל אל UsersListResponse.

public UsersListResponse list(String enterpriseId, String email) throws
   IOException {
    return androidEnterprise
        .users()
        .list(enterpriseId, email)
        .execute();
}

קבלת פרטי משתמשים

אחרי שמקבלים את userId, אפשר לאחזר פרטים אחרים. למידע נוסף: Users.Get.

public User get(String enterpriseId, String userId) throws IOException {
    return androidEnterprise
        .users()
        .get(enterpriseId, userId)
        .execute();
}

איך מעניקים למשתמש גישה לאפליקציות

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

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

לתת למשתמש גישה רק לאפליקציות ספציפיות

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

  • איסוף רשימה של productIds (אפליקציות) שאושרו עבור המשתמש (productSet).
  • כדי לציין שהמשתמש יכול לגשת רק לאפליקציות שברשימה הנתונה, יש להגדיר את הערך של המחרוזת productSetBehavior ל-"whitelist".
  • החלת הרשימה של productIds ואת הגדרת ההתנהגות על קבוצת המוצרים הזמינה למשתמש באמצעות setAvailableProductSet.
public ProductSet setProductSet(String enterpriseId, String userId,
    List<String> productIds) throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductId(productIds);
  productSet.setProductSetBehavior("whitelist");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

הענקת גישה למשתמש לכל האפליקציות שאושרו

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

  • צריך לציין שהמשתמש יכול לגשת לכל האפליקציות שאושרו לארגון על ידי הגדרת הערך של המחרוזת productSetBehavior ל-"allApproved".
  • החלת ההגדרה הזו על המשתמש באמצעות setAvailableProductSet.
public ProductSet setUserIncludeApprovedApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("allApproved");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

הערה: כשהערך של productSetBehavior הוא "allApproved", אין צורך לציין productIds ל-productSet.

הענקת גישה לכל האפליקציות למשתמש

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

משתמשים מהימנים מסוימים, כמו אדמינים ב-IT, עשויים לדרוש את רמת הגישה הגבוהה הזו כדי לבדוק ולהעריך אפליקציות לפני שיאשרו אותן לארגון. התהליך של הענקת גישה לכל האפליקציות למשתמש כולל את השלבים הבאים:

  • צריך לציין שהמשתמש יכול לגשת לכל האפליקציות בחנות Google Play על ידי הגדרת הערך של המחרוזת productSetBehavior ל-"includeAll".
  • החלת ההגדרה הזו על המשתמש באמצעות setAvailableProductSet.
public ProductSet setUserIncludeAllApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("includeAll");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

הערה: כשהערך של productSetBehavior הוא "includeAll", אין צורך לציין productIds ל-productSet.

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

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

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

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

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

מומלץ להטמיע את ההרשאות של iframe במסוף ה-EMM. המשמעות היא שהמשתמש לא צריך לנווט בנפרד ל-Google Play Console המנוהל. שימוש ב-Products.getApprovalUrl לקבלת כתובת ה-URL של ה-iframe.

public String getApprovalUrl(String enterpriseId, String productId)
    throws IOException {
  return androidEnterprise
      .products()
      .generateApprovalUrl(enterpriseId, productId)
      .execute()
      .getUrl();
}

יש להשתמש ב-Products.approve כדי לאשר את ההרשאות האלה.

public void approveProduct(String enterpriseId,
    String productId,
    String approvalUrl) throws IOException {
  ProductsApproveRequest productsApproveRequest =
      new ProductsApproveRequest()
          .setApprovalUrlInfo(
              new ApprovalUrlInfo().setApprovalUrl(approvalUrl));
  androidEnterprise
      .products()
      .approve(enterpriseId, productId, productsApproveRequest)
      .execute();
  }

איתור המכשירים של המשתמש

כדי לבצע פעולות ספציפיות למכשיר, עליכם לזהות את המכשירים שמשויכים למשתמש. הדוגמה הזו מחזירה את רשימת המכשירים עבור userID באמצעות DevicesListResponse.

public DevicesListResponse list(String enterpriseId, String userId) throws
   IOException {

    return androidEnterprise
        .devices()
        .list(enterpriseId, userId)
        .execute();
}

אם המשתמש הסכים לתנאים ולהגבלות שהוצגו כשהוא ניסה לגשת ל-Google Play המנוהל בפעם הראשונה, התשובה תכלול מכשירים לא מנוהלים (מכשירים מסוג הניהול unmanagedProfile).

קבלה והגדרה של מצב מכשיר

משימת הניהול הזו רלוונטית רק לארגונים שמשתמשים בחשבונות Google. היא לא חלה על ארגונים שמשתמשים בחשבונות Google Play מנוהלים.

כשמפעילים (או משביתים) את הגישה לשירותי Google במכשיר מנוהל של משתמש, על סמך:

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

בדוגמה הזו מוסבר איך להגיע למצב של מכשיר נתון (המצוין באמצעות העברה של enterpriseId, userId ו-deviceId).

הפעולות getState() ו-setState() פועלות רק במכשירים עם managementType של managedDevice או managedProfile (במשאב Devices). לא ניתן לשלוט במכשירים עם managementType מתוך unmanagedProfile באמצעות ממשקי ה-API האלה.

public DeviceState getState(String enterpriseId, String userId, String
   deviceId) throws IOException {

    return androidEnterprise
        .devices()
        .getState(enterpriseId, userId, deviceId)
        .execute();
}

מפעילים או משביתים את שירותי Google לחשבון במכשיר על ידי הגדרת המחרוזת AccountState לערך הקבוע המתאים.

public DeviceState setState(String enterpriseId, String userId, String
   deviceId, String accountState) throws IOException {

    DeviceState deviceState = new DeviceState();
    deviceState.setAccountState(accountState);

    return androidEnterprise
        .devices()
        .setState(enterpriseId, userId, deviceId, deviceState)
        .execute();
}

התקנת אפליקציה במכשיר בדחיפה

מנהלי מערכת יכולים להתקין אפליקציות ברקע. לא נדרשת אינטראקציה מצד המשתמש. בדוגמה הזו נעשה שימוש ב-Installs.Update כדי להתקין אפליקציה ברקע (שזוהה על ידי productId) במכשיר (שזוהה על ידי deviceId).

public Install update(String enterpriseId, String userId, String
   deviceId, String productId) throws IOException {

    return androidEnterprise
        .installs()
        .update(enterpriseId, userId, deviceId, productId,
           new Install())
        .execute();
}

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

חיפוש אפליקציות והורדתן מרשימת האפליקציות שאושרו

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

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

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

בשאילתה אפשר לציין את מספר המוצרים המקסימלי שהתוצאה צריכה להכיל, כמו setMaxResults(10L), שימלאו את המסך. ערך ברירת המחדל הוא 100, שהוא גם הערך המקסימלי שניתן להחזיר בבת אחת. כשהתוצאה מכילה אסימון עימוד, יש תוצאות נוספות שניתן לאחזר על ידי העברת אסימון העימוד.

בדוגמה הזו מוסבר איך לקבל את 10 התוצאות הראשונות של חיפוש אפליקציות פרודוקטיביות. Products.List.

public List searchProducts(String enterpriseId) throws IOException {
  ProductsListResponse executeResult =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setQuery("productivity")
          .execute();
  return executeResult.getProduct();
}

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

public ProductsListResponse continueSearch(
    String enterpriseId, ProductsListResponse previousResponse) throws IOException {
  ProductsListResponse nextResults =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setToken(previousResponse.getTokenPagination().getNextPageToken())
          .setQuery("productivity")
          .execute();
  return nextResults;
}