一般管理工作

EMM 可在自家的 Android 企業解決方案中實作多種一般管理工作,例如本指南中顯示的工作。範例程式碼會使用 Java 專用 Google Play EMM API 用戶端程式庫

查詢使用者並取得使用者詳細資料

許多 Google Play EMM API 會要求 userId (除了 enterpriseId 以外) 執行部分使用者相關的工作,例如安裝應用程式、取得授權和授權。有些呼叫需要使用者物件。

如果機構使用 Google Play 管理版帳戶,您必須確保使用者電子郵件地址與使用者 ID 之間的對應關係。透過 Google 帳戶,你使用的是 UsersListResponse

查詢使用者

這個程式碼範例會取得與 Google 帳戶相關聯的使用者 ID。不適用於使用 Google Play 管理版帳戶的機構。

這個範例假設您已將 UserUsersListResponse 模型匯入程式碼。如要取得特定使用者帳戶,請將 enterpriseId 和電子郵件傳遞至 UsersListResponse,以取得 userId

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

將應用程式的存取權授予使用者

您可以使用 Google Play EMM API,控制使用者可從 Google Play 管理版商店存取哪些應用程式。存取應用程式的功能包括搜尋、查看、安裝及更新應用程式。目前提供三種不同的存取層級:

  • 僅限允許的應用程式:使用者只能存取特定應用程式。
  • 所有已核准的應用程式:使用者可以存取所有通過企業核准的應用程式。
  • 所有應用程式:使用者可以存取所有在 Google Play 商店中公開發布的應用程式。

僅將特定應用程式存取權授予使用者

以下範例說明如何向使用者授予 Google Play 管理版商店特定應用程式組合的存取權。這個程序包含下列步驟:

  • 收集已獲得使用者 (productSet) 核准的 productIds (應用程式) 清單。
  • productSetBehavior 字串的值設為 "whitelist",指定使用者只能存取指定清單中的應用程式。
  • 使用 setAvailableProductSetproductIds 清單和行為設定套用至使用者可用的產品組合。
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" 時,您不需要為 productSet 指定任何 productIds

授權使用者存取所有應用程式

以下範例說明如何授權使用者存取 Google Play 管理版商店中的任何應用程式。有權存取所有應用程式的使用者在開啟 Google Play 管理版時,仍會看到企業的商店版面配置,但可以透過搜尋找到其他應用程式。

部分受信任的使用者 (例如 IT 管理員) 可能需要擁有更高層級的權限,才能對應用程式進行測試及評估,才能為企業核准這類應用程式。向使用者授予所有應用程式存取權的程序包含下列步驟:

  • productSetBehavior 字串的值設為 "includeAll",指定使用者可以存取 Google Play 商店中的所有應用程式。
  • 透過 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" 時,您不需要為 productSet 指定任何 productIds

建立商店版面配置

允許使用者存取應用程式後,請將應用程式歸入叢集,以便顯示在 Google Play 管理版商店頁面中。

您可以使用 Storelayoutpages Storelayoutclusters API,為每位客戶建立自訂商店版面配置。一般版面配置由一組網頁組成,每個頁面都可以包含應用程式叢集。您可以將相關應用程式放入同一個叢集。如需詳細資訊和程式碼範例,請參閱「建立自訂商店版面配置」。

取得應用程式的權限

如要將應用程式新增至自訂商店版面配置 (或以無訊息方式安裝應用程式到使用者的裝置),並顯示應用程式以供使用者選取,管理員必須針對整個機構接受該應用程式的權限。管理員可在 Google Play 管理版主控台中接受應用程式權限,並將應用程式標示為已核准進行發布 (請參閱 Google Play 管理版總覽)。

最佳做法是將權限 iframe 嵌入 EMM 控制台。這表示使用者不必另外前往 Google Play 管理版主控台。使用 Products.getApprovalUrl 取得 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();
  }

取得使用者的裝置

如要執行特定裝置動作,您必須識別與使用者相關聯的裝置,此範例會使用 DevicesListResponse 傳回指定 userID 的裝置清單。

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

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

如果使用者嘗試存取 Google Play 管理版時,已同意系統提供的《服務條款》,回應會包含未受管理的裝置 (具有 unmanagedProfile 管理服務類型的裝置)。

取得並設定裝置狀態

這項管理工作僅適用於使用 Google 帳戶的機構。不適用於使用 Google Play 管理版帳戶的機構。

使用者的受管理 Google 帳戶在受管理的裝置上啟用時,系統會根據下列因素啟用或停用 Google 服務的存取權:

如果 EMM 強制執行設定已停用,系統會忽略裝置狀態,而每當 Android 裝置在 Android 裝置上啟動 Google 服務,系統就會將其存取權授予帳戶。如果已啟用 EMM 強制執行功能,但裝置狀態不正確,使用者就無法從 Google Play 安裝應用程式,而 Google Play EMM API 也無法在裝置中為該使用者安裝應用程式。

以下範例說明如何取得特定裝置的狀態 (透過傳遞 enterpriseIduserIddeviceId 指定)。

getState()setState() 作業僅適用於 managementTypemanagedDevicemanagedProfile (在 Devices 資源上) 的裝置。如果裝置的 managementTypeunmanagedProfile,就無法透過這些 API 控管。

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

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

AccountState 字串設為適當的常數,即可在裝置上啟用或停用帳戶的 Google 服務。

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 管理版中供使用者存取的已核准應用程式清單。如果自攜裝置 (自攜裝置) 的裝置為自攜裝置,或是在公司使用的所有裝置上由機構管理的裝置使用者,使用者只能從這份核准清單中下載應用程式。

您可以自訂 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;
}