EMM 可以為 Android 企業解決方案實作多種常見的管理工作,例如本指南所示的工作。程式碼範例會使用 Java® 專用 Google Play EMM API 用戶端程式庫。
查詢使用者並取得使用者詳細資料
除了 enterpriseId
以外,許多 Google Play EMM API 都需要使用 userId
執行某些與使用者相關的工作,例如安裝應用程式、取得授權和授權。有些呼叫需要使用者物件。
如果機構使用 Google Play 管理版帳戶,使用者電子郵件地址與這些帳戶的使用者 ID 之間會保持對應。透過 Google 帳戶,您可以使用 UsersListResponse
。
查詢使用者
這個程式碼範例會取得與 Google 帳戶相關聯的使用者 ID。不適用於使用 Google Play 管理版帳戶的機構。
本範例假設您已將 User
和 UsersListResponse
模型匯入至程式碼。如要取得特定使用者帳戶,請將 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 管理版商店頁面這個程序包括 步驟如下:
- 收集使用者已核准的
productIds
(應用程式) 清單 (productSet)。 - 將
productSetBehavior
字串的值設為"whitelist"
,指定使用者只能存取指定清單上的應用程式。 - 使用
setAvailableProductSet
將productIds
清單和行為設定套用至使用者可用的產品集。
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(); }
授予使用者所有已核准應用程式的存取權
以下範例說明如何授權使用者存取任何已核准的應用程式 為企業提供更優質的服務這個程序包括 步驟如下:
- 將
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
。
授予使用者所有應用程式的存取權
以下範例說明如何授予使用者在受管理 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"
時,
您不必為產品集指定任何 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 裝置上執行 EMM 政策 。
如果停用 EMM 強制執行功能,系統會忽略裝置狀態,並且 使用者存取 Google 服務。 如果啟用了 EMM 強制執行功能,但裝置狀態未設為,使用者就無法安裝 無法從 Google Play 和 Google Play EMM API 安裝 為使用者在裝置上 建立專屬的應用程式
本例說明如何取得特定裝置的狀態 (透過傳送
enterpriseId
、userId
和 deviceId
)。
getState()
和 setState()
作業適用於 managementType
的裝置
managedDevice
或 managedProfile
(在 Devices
資源上)。搭載
無法透過這些 API 控管 unmanagedProfile
的 managementType
。
public DeviceState getState(String enterpriseId, String userId, String deviceId) throws IOException { return androidEnterprise .devices() .getState(enterpriseId, userId, deviceId) .execute(); }
設定
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 管理版應用程式清單,供使用者使用。如果使用者的裝置為自攜裝置且設有工作資料夾,且使用者的裝置是由機構管理,則一律只能從這份核准清單中下載應用程式。
您可以自訂 EMM 控制台加入搜尋框,讓管理員只能搜尋已核准應用程式清單中的應用程式。搜尋功能可接受與標準 Google Play 管理版搜尋功能相同的參數,但只能搜尋已核准應用程式清單中的應用程式。
舉例來說,如果管理員想將核准的應用程式安裝在核准的應用程式清單中,推送到企業的裝置上,他們便可在 EMM 控制台使用這個搜尋功能來尋找應用程式。
您可以在查詢中指定結果包含的產品數量上限 (例如 setMaxResults(10L)
),也就是足以填滿整個畫面。預設值為 100,也就是一次可傳回的最大值。如果結果包含分頁符記,您可以透過傳遞分頁符記以擷取更多結果。
以下範例說明如何取得效率提升應用程式的前 10 筆搜尋結果。
詳情請參閱《Products.List
》。
public ListsearchProducts(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; }