EMM-специалисты могут реализовать ряд типичных задач управления в своих корпоративных решениях для Android, например задачи, показанные в этом руководстве. В примере кода используется клиентская библиотека Google Play EMM API для Java® .
Найдите пользователей и получите подробную информацию о них
Многим API EMM Google Play требуется 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, но могут находить дополнительные приложения с помощью поиска.
Некоторым доверенным пользователям, например ИТ-администраторам, может потребоваться более высокий уровень доступа для тестирования и оценки приложений, прежде чем утверждать их для предприятия. Процесс предоставления пользователю доступа ко всем приложениям включает в себя следующие шаги:
- Укажите, что пользователь может получить доступ ко всем приложениям в магазине 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. Используйте 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 пользователя активируется на управляемом устройстве, доступ к службам Google включается (или отключается) на основании:
- Состояние устройства.
- Применил ли администратор домена политики EMM (настроив «Применять политики EMM» на устройствах Android в консоли администратора Google).
Если принудительное использование EMM отключено, состояние устройства игнорируется, и учетной записи предоставляется доступ к службам Google при каждой ее активации на устройстве Android. Если принудительное применение EMM включено, но состояние устройства отключено, пользователи не смогут устанавливать приложения из Google Play, а API-интерфейсы EMM Google Play не смогут автоматически устанавливать приложения для этого пользователя на устройство.
В этом примере показано, как получить состояние данного устройства (указанного путем передачи 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 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; }