Esta guía ayuda a los proveedores de administración de movilidad empresarial (EMM) a integrar la inscripción automática en su consola. Continúa leyendo para obtener más información sobre la inscripción y ver consejos de prácticas recomendadas para ayudar a que tu DPC (controlador de política de dispositivo) aprovisione los dispositivos. Si tienes un DPC, conocerás prácticas recomendadas para aprovisionar dispositivos y recibirás consejos con el desarrollo y las pruebas.
Funciones para administradores de TI
Usa la API del cliente para ayudar a los administradores de TI a configurar la inscripción automática directamente desde tu consola. Estas son algunas de las tareas que un administrador de TI podría realizar en la consola:
- Crear, editar y borrar configuraciones de inscripción automática según tu políticas para dispositivos móviles.
- Establece una configuración predeterminada para que tu DPC aprovisione los dispositivos futuros compras de organizaciones.
- Aplicar parámetros de configuración individuales a los dispositivos o quitar dispositivos de la inscripción automática
Para obtener más información sobre la inscripción automática, lee el descripción general.
Requisitos previos
Antes de agregar la inscripción automática a tu consola de EMM, confirma que tu solución admite lo siguiente:
- Tu solución de EMM debe aprovisionar un dispositivo Android 8.0 (o una versión posterior) propiedad de la empresa (Pixel 7.1 o una versión posterior). dispositivo en modo completamente administrado. Los dispositivos empresariales con Android 10 o versiones posteriores aprovisionados como completamente administrado o con un perfil de trabajo
- Como la inscripción automática descarga e instala automáticamente un DPC, tu El DPC debe estar disponible en Google Play. Mantenemos una lista de DPC compatibles que los administradores de TI pueden configurar con la API del cliente o el portal. Enviar un solicitud de modificación de producto a través de la comunidad de proveedores de EMM para agregar tu DPC a la lista.
- Tus clientes necesitan una cuenta de inscripción automática para llamar a la API del cliente. Un revendedor asociado configura la cuenta de la organización de un administrador de TI cuando esta compra sus dispositivos.
- El dispositivo debe ser compatible con los Servicios de Google para dispositivos móviles (GMS). y los Servicios de Google Play deben estar habilitados en todo momento para la inscripción automática funcionen correctamente.
Llama a la API
Los usuarios de tu consola (con sus Cuentas de Google) autorizan tus solicitudes a la API para la API del cliente. Este flujo es diferente de la autorización que realizas para otras APIs de EMM. Lee Autorización para obtener información sobre cómo hacer esto en tu app.
Controla las Condiciones del Servicio
Tus usuarios deben aceptar las Condiciones del Servicio más recientes antes del
llamando a la API. Si la llamada a la API muestra un código de estado HTTP 403 Forbidden
y
El cuerpo de la respuesta contiene un TosError
, se le solicita al usuario que acepte
deben acceder al portal de inscripción automática. El siguiente ejemplo
muestra una de las maneras de hacerlo:
Java
// Authorize this method call as a user that hasn't yet accepted the ToS. final String googleApiFormatHttpHeader = "X-GOOG-API-FORMAT-VERSION"; final String googleApiFormatVersion = "2"; final String tosErrorType = "type.googleapis.com/google.android.device.provisioning.v1.TosError"; try { // Send an API request to list all the DPCs available including the HTTP header // X-GOOG-API-FORMAT-VERSION with the value 2. Import the exception: // from googleapiclient.errors import HttpError AndroidProvisioningPartner.Customers.Dpcs.List request = service.customers().dpcs().list(customerAccount); request.getRequestHeaders().put(googleApiFormatHttpHeader, googleApiFormatVersion); CustomerListDpcsResponse response = request.execute(); return response.getDpcs(); } catch (GoogleJsonResponseException e) { // Get the error details. In your app, check details exists first. ArrayList<Map> details = (ArrayList<Map>) e.getDetails().get("details"); for (Map detail : details) { if (detail.get("@type").equals(tosErrorType) && (boolean) detail.get("latestTosAccepted") != true) { // Ask the user to accept the ToS. If they agree, open the portal in a browser. // ... } } return null; }
.NET
// Authorize this method call as a user that hasn't yet accepted the ToS. try { var request = service.Customers.Dpcs.List(customerAccount); CustomerListDpcsResponse response = request.Execute(); return response.Dpcs; } catch (GoogleApiException e) { foreach (SingleError error in e.Error?.Errors) { if (error.Message.StartsWith("The user must agree the terms of service")) { // Ask the user to accept the ToS. If they agree, open the portal in a browser. // ... } } }
Python
# Authorize this method call as a user that hasn't yet accepted the ToS. tos_error_type = ('type.googleapis.com/' 'google.android.device.provisioning.v1.TosError') portal_url = 'https://partner.android.com/zerotouch' # Send an API request to list all the DPCs available including the HTTP # header X-GOOG-API-FORMAT-VERSION with the value 2. Import the exception: # from googleapiclient.errors import HttpError try: request = service.customers().dpcs().list(parent=customer_account) request.headers['X-GOOG-API-FORMAT-VERSION'] = '2' response = request.execute() return response['dpcs'] except HttpError as err: # Parse the JSON content of the error. In your app, check ToS exists first. error = json.loads(err.content) tos_error = error['error']['details'][0] # Ask the user to accept the ToS (not shown here). If they agree, then open # the portal in a browser. if (tos_error['@type'] == tos_error_type and tos_error['latestTosAccepted'] is not True): if raw_input('Accept the ToS in the zero-touch portal? y|n ') == 'y': webbrowser.open(portal_url)
Si tu cliente de la API de Google admite errores detallados (Java, Python o HTTP)
solicitudes), incluye el encabezado HTTP X-GOOG-API-FORMAT-VERSION
con el valor
2
en tus solicitudes. Si el cliente no admite errores detallados (.NET y
otros), coinciden con el mensaje de error.
Cuando actualicemos las Condiciones del Servicio en el futuro, si sigues este enfoque, tu app Le indica al usuario que vuelva a aceptar las nuevas Condiciones del Servicio.
Vínculo al portal
Los administradores de TI usan el portal de inscripción automática para administrar los usuarios de sus no puede ofrecerlo a través de la API del cliente. Los administradores de TI también pueden administrar dispositivos y configuraciones con el portal. Si necesitas vincular el desde tu consola o en tu documentación, usa esta URL:
https://partner.android.com/zerotouch
Tal vez quieras informarles a los administradores de TI que deben acceder con su Cuenta de Google.
Inscripción del dispositivo
La inscripción automática es un mecanismo para inscribir dispositivos y es similar a NFC. o a través de un código QR. Tu consola debe ser compatible con dispositivos administrados y tu DPC debe ejecutarse en un modo de dispositivo completamente administrado.
La inscripción automática está disponible en dispositivos compatibles con Android 8.0 o
más adelante. Los administradores de TI deben comprar los dispositivos compatibles a un socio
revendedor. Tu consola puede rastrear
cuáles de los dispositivos del administrador de TI están disponibles para la inscripción automática
llamando a customers.devices.list
.
A continuación, se incluye un esquema de cómo funciona la inscripción:
- Un dispositivo se registra con un servidor de Google en el primer inicio (o después de un proceso restablecer) para la inscripción automática.
- Si el administrador de TI aplicó una configuración al dispositivo, la inscripción automática de registro ejecuta el asistente de configuración de Android del dispositivo completamente administrado y personaliza la pantallas con metadatos de la configuración.
- La inscripción automática descarga e instala tu DPC de Google Play.
- Tu DPC recibe el
el intent
ACTION_PROVISION_MANAGED_DEVICE
y aprovisiona el dispositivo.
Si no hay conexión a Internet, la verificación se realiza cuando una se vuelve disponibles. Para obtener más información sobre el aprovisionamiento de dispositivos con inscripción automática, consulta Aprovisionamiento a continuación.
Configuración predeterminada.
La inscripción automática es más útil para los administradores de TI cuando establecen una configuración predeterminada.
que se aplique a los dispositivos nuevos que compre su organización. Promociona la configuración predeterminada desde la consola si no se configuró una. Puedes consultar
valor de customers.configurations.isDefault
a
averiguar si una organización estableció una configuración predeterminada.
En el siguiente ejemplo, se muestra cómo puedes hacer que una configuración existente Predeterminado:
Java
// Send minimal data with the request. Just the 2 required fields. // targetConfiguration is an existing configuration that we want to make the default. Configuration configuration = new Configuration(); configuration.setIsDefault(true); configuration.setConfigurationId(targetConfiguration.getConfigurationId()); // Call the API, including the FieldMask to avoid setting other fields to null. AndroidProvisioningPartner.Customers.Configurations.Patch request = service .customers() .configurations() .patch(targetConfiguration.getName(), configuration); request.setUpdateMask("isDefault"); Configuration results = request.execute();
.NET
// Send minimal data with the request. Just the 2 required fields. // targetConfiguration is an existing configuration that we want to make the default. Configuration configuration = new Configuration { IsDefault = true, ConfigurationId = targetConfiguration.ConfigurationId, }; // Call the API, including the FieldMask to avoid setting other fields to null. var request = service.Customers.Configurations.Patch(configuration, targetConfiguration.Name); request.UpdateMask = "IsDefault"; Configuration results = request.Execute();
Python
# Send minimal data with the request. Just the 2 required fields. # target_configuration is an existing configuration we'll make the default. configuration = { 'isDefault': True, 'configurationId': target_configuration['configurationId']} # Call the API, including the FieldMask to avoid setting other fields to null. response = service.customers().configurations().patch( name=target_configuration['name'], body=configuration, updateMask='isDefault').execute()
Cómo hacer referencia al DPC
Recomendamos usar el nombre de recurso de la API customers.dpcs.name
para identificar tu DPC y usarlo en las configuraciones. El nombre del recurso contiene un
es un identificador único e inmutable para el DPC. Llamada
customers.dpcs.list
para obtener la lista de todos los
DPC Debido a que el nombre del recurso también incluye el ID de cliente, filtra la lista
utilizando el último componente de ruta de acceso para encontrar una instancia Dpc
coincidente. El ejemplo
a continuación, se muestra cómo hacer coincidir tu DPC y conservarlo más adelante en un
actual:
Java
// Return a customer Dpc instance for the specified DPC ID. String myDpcIdentifier = "AH6Gbe4aiS459wlz58L30cqbbXbUa_JR9...xMSWCiYiuHRWeBbu86Yjq"; final int dpcIdIndex = 3; final String dpcComponentSeparator = "/"; // ... for (Dpc dpcApp : dpcs) { // Because the DPC name is in the format customers/{CUST_ID}/dpcs/{DPC_ID}, check the // fourth component matches the DPC ID. String dpcId = dpcApp.getName().split(dpcComponentSeparator)[dpcIdIndex]; if (dpcId.equals(myDpcIdentifier)) { System.out.format("My DPC is: %s\n", dpcApp.getDpcName()); return dpcApp; } } // Handle the case when the DPC isn't found...
.NET
// Return a customer Dpc instance for the specified DPC ID. var myDpcIdentifer = "AH6Gbe4aiS459wlz58L30cqbbXbUa_JR9...fE9WdHcxMSWCiYiuHRWeBbu86Yjq"; const int dpcIdIndex = 3; const String dpcComponentSeparator = "/"; // ... foreach (Dpc dpcApp in dpcs) { // Because the DPC name is in the format customers/{CUST_ID}/dpcs/{DPC_ID}, check the // fourth component matches the DPC ID. String dpcId = dpcApp.Name.Split(dpcComponentSeparator)[dpcIdIndex]; if (dpcId.Equals(myDpcIdentifer)) { Console.WriteLine("Matched DPC is: {0}", dpcApp.DpcName); return dpcApp; } } // Handle the case when the DPC isn't found...
Python
# Return a customer Dpc instance for the specified DPC ID. my_dpc_id = 'AH6Gbe4aiS459wlz58L30cqb...fE9WdHcxMSWCiYiuHRWeBbu86Yjq' # ... for dpc_app in dpcs: # Because the DPC name is in the format customers/{CUST_ID}/dpcs/{DPC_ID}, # check the fourth component matches the DPC ID. dpc_id = dpc_app['name'].split('/')[3] if dpc_id == my_dpc_id: return dpc_app # Handle the case when the DPC isn't found...
Si necesitas mostrar el nombre de un DPC en la interfaz de usuario de tu consola, muestra
el valor que muestra customers.dpcs.dpcName
Aprovisionamiento
Aprovecha la oportunidad de proporcionar una excelente experiencia del usuario para la provisión de dispositivos.
Solo se necesita un nombre de usuario y una contraseña para aprovisionar el dispositivo.
Recuerda que los revendedores pueden enviar los dispositivos directamente a los usuarios remotos. Incluir
todos los demás parámetros de configuración, como el servidor de EMM o la unidad organizativa, en
customers.configuration.dpcExtras
El siguiente fragmento de JSON muestra parte de una configuración de ejemplo:
{
"android.app.extra.PROVISIONING_LOCALE": "en_GB",
"android.app.extra.PROVISIONING_TIME_ZONE": "Europe/London",
"android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED": true,
"android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE": {
"workflow_type": 3,
"default_password_quality": 327680,
"default_min_password_length": 6,
"company_name": "XYZ Corp",
"organizational_unit": "sales-uk",
"management_server": "emm.example.com",
"detail_tos_url": "https://www.example.com/policies/terms/",
"allowed_user_domains": "[\"example.com\", \"example.org\", \"example.net\"]"
}
}
La inscripción automática instala e inicia tu DPC con un intent de Android.
El sistema envía los valores del
Propiedad JSON android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE
a tu DPC
como extras en el intent. Tu DPC puede leer la configuración de aprovisionamiento de PersistableBundle
con las mismas claves.
Recomendado: Usa los siguientes extras de intent para configurar tu DPC:
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
EXTRA_PROVISIONING_LOCALE
EXTRA_PROVISIONING_TIME_ZONE
EXTRA_PROVISIONING_LOCAL_TIME
EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED
EXTRA_PROVISIONING_MAIN_COLOR
EXTRA_PROVISIONING_DISCLAIMERS
No se recomienda; no incluyas los siguientes elementos adicionales que podrías usar en otros métodos de inscripción:
EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION
EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM
Para obtener información sobre cómo extraer y usar esta configuración en tu DPC, consulta Aprovisiona dispositivos de clientes.
Desarrollo y pruebas
Para desarrollar y probar las funciones de inscripción automática de tu consola, necesitarás lo siguiente: lo siguiente:
- un dispositivo compatible
- una cuenta de inscripción automática para clientes
Desarrollar y realizar pruebas con dispositivos que admitan la inscripción automática inscritas en la aplicación, como Google Pixel. No es necesario comprar tus dispositivos de desarrollo a un socio revendedor.
Comunícate con nosotros para obtener una cuenta de cliente de prueba y acceso al portal de inscripción automática. Envíanos un correo electrónico desde tu dirección de correo electrónico empresarial (es decir, asociado a una cuenta de Google Cuenta. Cuéntanos cuál es el fabricante. y el número IMEI de uno o dos dispositivos, y los agregaremos a tu cuenta de de servicio predeterminada.
Recuerda que la inscripción automática descarga e instala automáticamente un DPC, tu DPC debe estar disponible en Google Play antes de que puedas realizar la prueba de servicios. No puedes realizar pruebas con una versión de desarrollo de tu DPC.
Asistencia para administradores de TI
Si necesitas ayudar a los administradores de TI en la interfaz de tu consola o en tu documentación Consulta el artículo sobre inscripción automática para administradores de TI si necesitas orientación. Tú también puede dirigir a los usuarios de tu consola a ese artículo del Centro de ayuda.
Lecturas adicionales
Lee estos documentos para ayudarte a integrar la inscripción automática en tu consola:
- Inscripción automática para administradores de TI en Android Enterprise Ayuda.
- Aprovisionar los dispositivos de los clientes desde la EMM de Android sitio para desarrolladores.