Interfejs Google Play EMM API obsługuje te metody dystrybucji aplikacji publicznych i prywatnych:
- Użytkownicy mogą ręcznie instalować aplikacje z zarządzanego Sklepu Google Play.
- Administratorzy IT mogą zdalnie instalować aplikacje na urządzeniach użytkowników.
Ręczne instalowanie aplikacji ze zarządzanego Sklepu Google Play
Aplikacje, które użytkownik może zainstalować, możesz określić w ustawieniach policy
Device
i ustawić je, wywołując funkcję Devices.update
. Podczas konfigurowania nowego urządzenia musisz ustawić zasady przed dodaniem zarządzanego konta Google Play do urządzenia. W przeciwnym razie zasady nie będą stosowane przez krótki czas po dodaniu konta do urządzenia.
Zachowanie zarządzanego Sklepu Play jest określone przez wartość parametru policy.productAvailabilityPolicy
:
all
: dostępne są wszystkie publiczne aplikacje ze Sklepu Play.whitelist
: dostępne są tylko aplikacje wymienione wpolicy.productPolicy
.
W obu przypadkach wszystkie aplikacje w policy.productPolicy
są domyślnie dodawane do układu sklepu firmy. Gdy klikniesz whitelist
, zobaczysz stronę główną zarządzanego Sklepu Play, a gdy klikniesz all
, będziesz mieć dostęp do karty „Aplikacje służbowe”. Możesz umożliwić klientowi dostosowanie układu sklepu firmy przez umieszczenie w nim ramki iframe zarządzanego Sklepu Google Play (patrz Uporządkowanie aplikacji za pomocą ramki iframe zarządzanego Sklepu Google Play).
zdalne instalowanie aplikacji na urządzeniach użytkowników,
Aby zdalnie zainstalować (tzw. za pomocą push) aplikację na urządzeniu użytkownika, ustaw policy.productPolicy.autoInstallPolicy
w ustawieniach policy
Device
. Podczas konfigurowania nowego urządzenia musisz ustawić zasady przed dodaniem zarządzanego konta Google Play do urządzenia. W przeciwnym razie zasady nie będą stosowane przez krótki czas po dodaniu konta do urządzenia.
Ustawienie autoInstallMode
może mieć następujące wartości:
doNotAutoInstall
: aplikacja nie jest instalowana automatycznie.autoInstallOnce
: aplikacja jest instalowana automatycznie raz. Jeśli użytkownik ją odinstaluje, nie zostanie ponownie zainstalowana.forceAutoInstall
: aplikacja jest instalowana automatycznie. Jeśli użytkownik ją odinstaluje, zostanie ponownie zainstalowana. Na urządzeniach zarządzanych DPC powinien blokować odinstalowywanie za pomocąDevicePolicyManager.setUninstallBlocked
.
W przypadku niepowodzenia (utrata połączenia, brak miejsca na dane itp.) instalacje są automatycznie powtarzane, dopóki nie zakończą się sukcesem. W przypadku nieodwracalnych awarii stosuje się strategię ponownego próbowania z wzrastającym czasem oczekiwania, aby uniknąć marnowania baterii i danych.
Priorytet instalacji
Za pomocą ustawienia autoInstallPriority
możesz wybrać kolejność instalacji. Wartość priorytetu musi być liczbą całkowitą bez znaku, a jej domyślna wartość to 0. Aplikacje będą instalowane w zwiększającej się kolejności priorytetów, co oznacza, że najpierw zostaną zainstalowane aplikacje o najniższej wartości priorytetu.
Instalowanie ograniczeń
Możesz ustawić ograniczenia dotyczące instalacji dla każdej aplikacji, określając autoInstallConstraint
, co pozwoli Ci kontrolować wymagany stan urządzenia podczas instalacji:
- czy urządzenie powinno być połączone z siecią Wi-Fi,
- czy urządzenie powinno się ładować,
- oraz czy urządzenie powinno być bezczynne (czy użytkownik nie używa go aktywnie).
Jeśli ograniczenia nie zostaną spełnione natychmiast, instalacje będą oczekiwały w kolejce do momentu spełnienia ograniczeń.
W przypadku autoInstallConstraint
między polami obowiązuje reguła „I”. Na przykład w przypadku tej autoInstallConstraint
aplikacja może zostać zainstalowana tylko wtedy, gdy urządzenie jest ładowane i połączone z siecią bez limitu (np. Wi-Fi):
"autoInstallConstraint": [
"chargingStateConstraint" : "chargingRequired",
"networkTypeConstraint" : "unmeteredNetwork"
]
Automatyczne instalowanie aplikacji na nowo skonfigurowanych urządzeniach
Interfejs EMM API Google Play wysyła powiadomienie NewDeviceEvent
, gdy urządzenie jest po raz pierwszy przygotowywane. Aby automatycznie instalować aplikacje na nowo udostępnionych urządzeniach, czekaj na powiadomienia NewDeviceEvent
. W przypadku każdego NewDeviceEvent
pobierz wartości userId
i deviceId
, a potem wywołaj funkcję Devices.update
, aby skonfigurować zasady dla tego urządzenia.
Aby dowiedzieć się, jak subskrybować powiadomienia EMM, przeczytaj artykuł Konfigurowanie powiadomień EMM.
Opinia na temat błędu podczas automatycznego instalowania aplikacji
Błędy związane z instalacją aplikacji są zgłaszane za pomocą opinii na temat aplikacji, a DPC może sprawdzać EnterprisePolicyStatus
wiadomości wysyłane za pomocą KeyedAppStatesService
.
Aby zdekodować dane zakodowane w formacie Base64, DPC musi wygenerować klasy na podstawie definicji proto EnterprisePolicyStatus
. Instrukcje generowania prototypowych klas znajdziesz w dokumentacji Protocol Buffers.
Dzięki wygenerowanym klasom DPC może dekodować obiekt EnterprisePolicyStatus
:
EnterprisePolicyStatus enterprisePolicyStatus = EnterprisePolicyStatus.parseFrom(
BaseEncoding.base64().decode(base64EncodedString)
);
Zasady dotyczące urządzenia zawierają teraz nowe opcjonalne pole PolicyId
.
Podczas tworzenia lub aktualizowania zasad EMM może ustawić wartość PolicyId
na dowolny ciąg znaków, aby zidentyfikować konkretną wersję Zasad na urządzeniu.
Jeśli jest dostępna, opinia o instalacji aplikacji będzie zawierać informacje o PolicyId
, aby DPC mógł dopasować otrzymane błędy do konkretnych zasad.
EnterprisePolicyStatus
message EnterprisePolicyStatus {
// Individual status for an app in the policy
repeated ApplicationStatus app_status = 1;
// Version of the policy for which this status applies.
PolicyVersion version = 2;
}
ApplicationStatus
// Individual status for an app.
message ApplicationStatus {
// The package name for the app.
string package_name = 1;
// The install status for the app. Only includes status for apps scheduled
// to be auto-installed via the policy resource.
AutoInstallStatus install_status = 2;
}
AutoInstallStatus
// Auto-install status for an app.
message AutoInstallStatus {
// The error causing the install to fail if state is INSTALL_ERROR.
EnterpriseAutoInstallError error = 1;
// The current install state of the app.
EnterpriseAutoInstallState state = 2;
}
PolicyVersion
// The version of the policy which these install states apply to.
message PolicyVersion {
// A policy id which may be optionally set by the EMM.
string policy_id = 1;
}
EnterpriseAutoInstallError
// Install errors resulting in failure to install an app.
enum EnterpriseAutoInstallError {
// Catch-all for unrecognized enum values.
ENTERPRISE_AUTO_INSTALL_ERROR_UNKNOWN = 0;
// The app could not be found.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_FOUND = 1;
// The app is not available in the user's country.
ENTERPRISE_AUTO_INSTALL_ERROR_UNAVAILABLE_COUNTRY = 2;
// The app is not compatible with the device hardware.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE = 3;
// No license remained to grant ownership of the app, and the user did not
// already own the app.
ENTERPRISE_AUTO_INSTALL_ERROR_NO_LICENSES_REMAINING = 4;
// Required permissions for the app have not been accepted.
ENTERPRISE_AUTO_INSTALL_ERROR_MISSING_PERMISSION = 5;
// The app is not available based on the enterprise availability policy.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_APPROVED_OR_UNAVAILABLE = 6;
// The app is not available to the user or device.
ENTERPRISE_AUTO_INSTALL_ERROR_APP_UNAVAILABLE = 7;
// Failed to grant license because the user already has ownership.
ENTERPRISE_AUTO_INSTALL_ERROR_INCOMPATIBLE_OWNERSHIP = 8;
// The admin has not accepted the terms of service.
ENTERPRISE_AUTO_INSTALL_ERROR_TOS_NOT_ACCEPTED = 9;
// The device does not have enough RAM.
ENTERPRISE_AUTO_INSTALL_ERROR_INSUFFICIENT_RAM = 10;
// The app is incompatible with the device carrier.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_CARRIER = 11;
// The app is incompatible with the country or carrier.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_COUNTRY_OR_CARRIER = 12;
// The app is incompatible with the safe search level.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_SAFE_SEARCH_LEVEL = 13;
// The app could not be installed due to an installer error.
ENTERPRISE_AUTO_INSTALL_ERROR_INSTALL_FAILED = 14;
// The app could not be installed due to network errors.
ENTERPRISE_AUTO_INSTALL_ERROR_NETWORK_FAILED = 15;
// The device does not have enough storage.
ENTERPRISE_AUTO_INSTALL_ERROR_INSUFFICIENT_STORAGE = 16;
}
EnterpriseAutoInstallState
// The current install state for an app.
enum EnterpriseAutoInstallState {
// Catch-all for unrecognized enum values.
INSTALL_STATE_UNKNOWN = 0;
// The app has been received by Play but an install attempt has not completed
// yet.
INSTALL_STATE_PENDING = 1;
// The latest install attempt failed and will be retried automatically.
INSTALL_STATE_ERROR = 2;
// The app has been installed.
INSTALL_STATE_INSTALLED = 3;
}
Rozpowszechnianie aplikacji na potrzeby testów zamkniętych
Testy zamknięte umożliwiają deweloperom uzyskanie opinii o wczesnych wersjach aplikacji od zaufanych użytkowników. Deweloperzy mogą konfigurować testy zamknięte w Konsoli Google Play. Za pomocą interfejsu EMM API w Google Play możesz umożliwić administratorom IT dystrybucję zamkniętych wersji (zwanych też ścieżkami) aplikacji określonym użytkownikom. Twoi klienci biznesowi mogą używać tej funkcji nie tylko do testowania aplikacji innych firm, ale też prywatnych aplikacji opracowanych wewnętrznie.
Odpowiednie aplikacje
Zanim deweloper doda firmę do listy testerów zamkniętych aplikacji, aplikacja powinna spełniać te kryteria:
- Wersja produkcyjna aplikacji została opublikowana w Google Play.
- W Konsoli Google Play na stronie Ustawienia zaawansowane w aplikacji włączona jest opcja Zarządzana przez Google Play.
- Wszystkie zamknięte wersje aplikacji spełniają wymagania dotyczące kodu wersji.
Dodawanie organizacji do testów zamkniętych
Deweloperzy aplikacji mogą dodawać przedsiębiorstwa do testów, które korzystają z metod zamkniętego testu alfa lub testu alfa przy użyciu Grup dyskusyjnych Google. Instrukcje znajdziesz w artykule Przygotowywanie testu otwartego, zamkniętego lub wewnętrznego. Deweloper musi podać identyfikator organizacji (nazywany też identyfikatorem przedsiębiorstwa) każdego uczestniczącego przedsiębiorstwa. Administratorzy IT mogą udostępnić identyfikator organizacji zewnętrznym deweloperom aplikacji, wykonując te czynności:
- Zaloguj się w zarządzanym Sklepie Google Play.
- Kliknij Ustawienia administracyjne.
- Z pola Informacje o organizacji skopiuj identyfikator i wyślij go do firmy deweloperskiej.
Dodatkowe wymagania dotyczące aplikacji prywatnych
W przypadku aplikacji prywatnych deweloper musi też dodać identyfikator organizacji każdej firmy uczestniczącej w programie na karcie Zarządzany Sklep Google Play na stronie Ustawienia zaawansowane aplikacji. Instrukcje znajdziesz w artykule Publikowanie aplikacji prywatnej.
Udostępnianie użytkownikom ścieżek zamkniętych
Aby pobrać listę utworów dostępnych dla firmy w przypadku określonej aplikacji, wywołaj funkcję Products.get
. Lista appTracks[]
zawarta w odpowiedzi zawiera ścieżki dostępne dla każdej aplikacji. appTracks[].trackAlias
to czytelna dla użytkownika nazwa ścieżki, którą możesz wyświetlić w konsoli EMM, a appTracks[].trackId
to identyfikator ścieżki czytelny dla maszyn.
Aby umożliwić użytkownikowi wyświetlanie ścieżki zamkniętej aplikacji, ustaw parametr policy.productPolicy[].trackIds[]
w Device
policy
. Jeśli na urządzeniu jest dostępnych kilka ścieżek, zostanie zainstalowana wersja z najwyższym kodem.
W określonych sytuacjach, np.:Products.get
- Wersja aplikacji ścieżki zostaje przeniesiona na inną ścieżkę lub na ścieżkę produkcyjną.
- Wersja produkcyjna jest aktualizowana z wersją wyższą niż ścieżka.
- Deweloper zatrzymuje ścieżkę.
Monitorowanie płatnych licencji na aplikacje
W przypadku płatnych aplikacji obiekt Grouplicenses
śledzi liczbę licencji należących do firmy i używanych licencji. Aby uzyskać szczegóły licencji na aplikację, zadzwoń pod numer Grouplicenses.get
.
Zanim płatna aplikacja zostanie zainstalowana na urządzeniu, firma musi mieć licencję na tę aplikację. Jeśli licencja jest dostępna, aplikacja jest instalowana na urządzeniu, a następnie tworzony jest obiekt Entitlements
. Obiekt Entitlements
łączy licencję z użytkownikiem i obniża liczbę dostępnych licencji na aplikację. Jeśli nie ma dostępnych licencji, instalacja aplikacji się nie powiedzie i nie zostanie utworzony obiekt Entitlements
.
Obiekty Grouplicenses
i Entitlements
nie są używane przez aplikacje rozpowszechniane bezpłatnie.