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