งานการจัดการทั่วไป

EMM สามารถนำงานด้านการจัดการทั่วไปมากมายไปใช้ในโซลูชันสำหรับองค์กรสำหรับ Android เช่น งานที่แสดงในคู่มือนี้ โค้ดตัวอย่างใช้ไลบรารีของไคลเอ็นต์ Google Play EMM API สำหรับ Java®

ค้นหาผู้ใช้และดูรายละเอียดของผู้ใช้

Google Play EMM API จำนวนมากต้องใช้ userId (นอกเหนือจาก enterpriseId) เพื่อทำงานบางอย่างที่เกี่ยวข้องกับผู้ใช้ เช่น ติดตั้งแอป รับการให้สิทธิ์ และการให้ใบอนุญาต การเรียกบางรายการต้องใช้ออบเจ็กต์ผู้ใช้

หากองค์กรใช้บัญชี Managed Google Play คุณจะยังคงจับคู่ระหว่างอีเมลของผู้ใช้กับรหัสผู้ใช้ของบัญชีเหล่านั้นอยู่ เมื่อใช้บัญชี Google คุณจะใช้ UsersListResponse

ค้นหาผู้ใช้

ตัวอย่างโค้ดนี้จะรับรหัสผู้ใช้ที่เชื่อมโยงกับบัญชี Google แต่จะไม่มีผลกับองค์กรที่ใช้บัญชี Managed 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 เพื่อควบคุมแอปที่ผู้ใช้เข้าถึงได้จาก Managed Google Play Store การเข้าถึงแอปรวมถึงความสามารถในการ ค้นหา ดู ติดตั้ง และอัปเดต มีระดับการเข้าถึง 3 ระดับดังนี้

  • แอปที่อนุญาตเท่านั้น: ผู้ใช้มีสิทธิ์เข้าถึงเฉพาะบางแอปเท่านั้น
  • แอปที่อนุมัติทั้งหมด: ผู้ใช้มีสิทธิ์เข้าถึงแอปทั้งหมดที่ได้รับอนุมัติสำหรับองค์กร
  • แอปทั้งหมด: ผู้ใช้มีสิทธิ์เข้าถึงแอปทั้งหมดที่เผยแพร่แบบสาธารณะใน Google Play Store

ให้สิทธิ์ผู้ใช้เข้าถึงเฉพาะบางแอป

ตัวอย่างด้านล่างแสดงวิธีให้สิทธิ์ผู้ใช้เข้าถึงชุดแอปที่เฉพาะเจาะจงจาก Managed Google Play Store กระบวนการนี้ประกอบด้วยขั้นตอนต่อไปนี้

  • รวบรวมรายการ 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();
}

ให้สิทธิ์ผู้ใช้เข้าถึงแอปที่ได้รับอนุมัติทั้งหมด

ตัวอย่างด้านล่างแสดงวิธีให้สิทธิ์ผู้ใช้เข้าถึงแอปที่ได้รับอนุมัติสำหรับองค์กรจาก Managed Google Play Store กระบวนการนี้ประกอบด้วยขั้นตอนต่อไปนี้

  • ระบุว่าผู้ใช้สามารถเข้าถึงแอปทั้งหมดที่ได้รับอนุมัติสำหรับองค์กรโดยการตั้งค่าสตริง 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

ให้สิทธิ์ผู้ใช้เข้าถึงแอปทั้งหมด

ตัวอย่างด้านล่างแสดงวิธีให้สิทธิ์ผู้ใช้ใน Managed Google Play Store ในการเข้าถึงแอปที่มีให้บริการใน Google Play Store สาธารณะ ผู้ใช้ที่มีสิทธิ์เข้าถึงแอปทั้งหมดจะยังเห็นเลย์เอาต์ของ Store สำหรับองค์กรเมื่อเปิด Managed Google Play แต่จะหาแอปอื่นๆ ได้ผ่านการค้นหา

ผู้ใช้ที่เชื่อถือได้บางราย เช่น ผู้ดูแลระบบไอที อาจต้องมีสิทธิ์เข้าถึงในระดับที่สูงกว่านี้เพื่อทดสอบและประเมินแอปก่อนที่จะอนุมัติแอปสำหรับองค์กร กระบวนการให้สิทธิ์ผู้ใช้เข้าถึงแอปทั้งหมดมีดังนี้

  • ระบุว่าผู้ใช้เข้าถึงแอปทั้งหมดใน Google Play Store ได้โดยการตั้งค่าของสตริง 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

สร้างเลย์เอาต์ร้านค้า

หลังจากให้สิทธิ์ผู้ใช้เข้าถึงแอปแล้ว ให้จัดกลุ่มแอปออกเป็นคลัสเตอร์สำหรับแสดงในหน้าร้าน Managed Google Play Store

คุณสามารถสร้างเลย์เอาต์ของร้านค้าที่ปรับแต่งไม่ซ้ำกันสำหรับลูกค้าแต่ละรายได้โดยใช้ API ของ Storelayoutpages และ Storelayoutclusters เลย์เอาต์ทั่วไปประกอบด้วยชุดหน้าเว็บ และแต่ละหน้าสามารถมีกลุ่มแอปได้ คุณนำแอปที่เกี่ยวข้องไปไว้ในคลัสเตอร์เดียวกันได้ ดูรายละเอียดและโค้ดตัวอย่างที่สร้างเลย์เอาต์ร้านค้าที่กำหนดเอง

รับสิทธิ์ของแอป

หากต้องการเพิ่มแอปในเลย์เอาต์ของ Store ที่กำหนดเอง (หรือติดตั้งแอปในอุปกรณ์ของผู้ใช้แบบเงียบ) และแสดงแอปเพื่อให้ผู้ใช้เลือกได้ ผู้ดูแลระบบต้องยอมรับสิทธิ์ของแอปนั้นสำหรับทั้งองค์กร ผู้ดูแลระบบสามารถยอมรับสิทธิ์ของแอปและทำเครื่องหมายว่าอนุมัติให้จัดจำหน่ายใน Managed Google Play Console ได้ (ดูภาพรวมของ Managed Google Play)

แนวทางปฏิบัติแนะนำคือให้ฝัง iframe สิทธิ์ลงในคอนโซล EMM ซึ่งหมายความว่าผู้ใช้ไม่จำเป็นต้องแยกไปยัง Managed 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();
}

หากผู้ใช้ยอมรับข้อกำหนดในการให้บริการที่แสดงเมื่อพยายามเข้าถึง Managed Google Play เป็นครั้งแรก การตอบกลับจะรวมอุปกรณ์ที่ไม่มีการจัดการ (อุปกรณ์ที่มีประเภทการจัดการ unmanagedProfile)

รับและตั้งค่าสถานะของอุปกรณ์

งานด้านการจัดการนี้ใช้กับองค์กรที่ใช้บัญชี Google เท่านั้น แต่จะไม่มีผลกับองค์กรที่ใช้บัญชี Managed Google Play

เมื่อเปิดใช้งานบัญชี Google ที่มีการจัดการของผู้ใช้ในอุปกรณ์ที่มีการจัดการ จะมีการเปิดใช้ (หรือปิดใช้) การเข้าถึงบริการของ Google โดยอิงตามปัจจัยต่อไปนี้

หากปิดใช้การบังคับใช้ EMM ระบบจะไม่สนใจสถานะของอุปกรณ์ และบัญชีจะได้รับสิทธิ์เข้าถึงบริการของ Google ทุกครั้งที่เปิดใช้งานในอุปกรณ์ Android หากเปิดใช้การบังคับใช้ EMM แต่ไม่ได้ โปรดดูสถานะของอุปกรณ์ ผู้ใช้จะไม่สามารถติดตั้ง แอปพลิเคชันจาก Google Play และ Google Play EMM API จะไม่สามารถติดตั้งแอปสำหรับผู้ใช้รายนั้นในอุปกรณ์โดยไม่แจ้งเตือน

ตัวอย่างนี้แสดงวิธีรับสถานะของอุปกรณ์ที่ระบุ (ระบุโดยการส่ง 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();
}

หากมีแอปอยู่แล้วในอุปกรณ์และสามารถใช้เวอร์ชันอัปเดตได้ แอปจะอัปเดตเป็นเวอร์ชันใหม่

ค้นหาและรับแอปจากรายการแอปพลิเคชันที่อนุมัติ

ผู้ดูแลระบบสร้างและจัดการรายการแอปที่ได้รับอนุมัติซึ่งพร้อมใช้งานสำหรับผู้ใช้ใน Managed Google Play ผู้ใช้ที่ใช้อุปกรณ์เพื่อนำอุปกรณ์มาใช้เองที่มีโปรไฟล์งาน และผู้ใช้อุปกรณ์ที่บริษัทรับผิดที่องค์กรเป็นผู้จัดการอุปกรณ์ทั้งหมด จะดาวน์โหลดแอปได้จากรายการที่อนุมัตินี้เท่านั้น

คุณสามารถปรับแต่งคอนโซล EMM ให้รวมช่องค้นหาเพื่อให้ผู้ดูแลระบบค้นหาเฉพาะแอปในรายการแอปที่ได้รับอนุมัติเท่านั้นได้ ฟังก์ชันการค้นหาจะยอมรับพารามิเตอร์เดียวกันกับฟังก์ชันการค้นหามาตรฐานของ Managed 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;
}