A partir de Android 12, Android incluye compatibilidad con la configuración de derecho de servicio de TS.43, una especificación GSMA que define el paso de verificación de derechos para la activación de servicios, que incluye voz por Wi-Fi (VoWiFi), voz por LTE (VoLTE), SMS por IP (SMSoIP), la activación del servicio integrada en el dispositivo (ODSA) de los dispositivos complementarios de eSIM (asociados con el dispositivo solicitante) y la información del plan de datos.
Para admitir esta especificación, Android proporciona una función de derecho de servicio de IMS que permite que un proveedor de servicios informe a los dispositivos móviles sobre el estado de los servicios de red del Subsistema multimedia de IP (IMS). Esta función de derecho permite que el dispositivo consulte el servidor de derechos del operador según lo define la especificación GSMA TS.43 para el estado de derecho de IMS mediante la autenticación EAP-AKA sin requerir que los usuarios ingresen credenciales de forma manual.
Los operadores con servidores de derechos de IMS pueden usar la función de derecho de servicio de IMS para el aprovisionamiento de servicios. La adopción de la función proporciona los siguientes beneficios:
- Reduce los costos de prueba y certificación para los operadores, ya que esta función de derecho se puede usar en varios productos y OEMs.
- Reduce la sobrecarga de desarrollo para los fabricantes de dispositivos a través de una app para Android estándar.
- Permite que los fabricantes de dispositivos y los operadores aporten código para la función, ya que es de código abierto.
- Proporciona administración de direcciones de emergencia para operadores de América del Norte.
Arquitectura
En la siguiente figura, se describe la arquitectura y el comportamiento de la función de derecho de servicio de IMS.
Figura 1: Arquitectura de la función de derecho de TS.43
Como se muestra en la Figura 1, la arquitectura de la función de derecho de servicio de IMS incluye los siguientes componentes:
service_entitlementBiblioteca estática de la API de servicio TS.43: Esta biblioteca implementa la especificación TS.43, interactúa con el servidor de derechos de un operador y expone APIs orientadas a la app para cada caso de uso de TS.43.ImsServiceEntitlementapp cliente: Esta app usa la API de servicio de TS.43. La app implementa elementos de la IU, incluidas vistas web para renderizar el portal de servicios del operador para que los usuarios activen los servicios, y también interactúa con otros componentes de Android para administrar la experiencia del usuario de extremo a extremo.Para obtener más información sobre cómo configurar Android para que funcione con el servidor de derechos basado en TS.43 de un operador, consulta la app de ImsServiceEntitlement.
Las líneas numeradas de la Figura 1 muestran cómo se comunican entre sí los componentes de la función de derecho de servicio de IMS. A continuación, se describe cada uno de los pasos etiquetados:
(1) La app cliente invoca la API de servicio de TS.43 para iniciar una solicitud de derecho de servicio.
(2) La API de servicio de TS.43 envía una solicitud HTTP al servidor de derechos del operador para iniciar un desafío EAP-AKA.
(3) La API de servicio de TS.43 invoca APIs de telefonía (por ejemplo,
getIccAuthentication) para completar la respuesta al desafío EAP-AKA.
(4) El servicio de TS.43 recibe datos de derecho o configuración de servicio del servidor de derechos del operador después de que se verifica la respuesta EAP-AKA.
(5) El servicio de TS.43 muestra los datos de derecho o configuración de servicio a la app cliente.
(6) La app cliente controla los datos y, de manera opcional, renderiza el portal de servicios del operador para que el usuario termine de activar el servicio.
Integración
En esta sección, se describe el proceso para integrar la biblioteca service_entitlement y la app ImsServiceEntitlement.
Como no hay dependencia de la API de Android 12, la biblioteca service_entitlement y la app ImsServiceEntitlement se pueden transferir a plataformas de Android inferiores.
Biblioteca service_entitlement
Como la biblioteca service_entitlement está vinculada de forma estática a la app ImsServiceEntitlement, no se requieren pasos adicionales para integrar la biblioteca en la app ImsServiceEntitlement.
La biblioteca service_entitlement se puede integrar con tus propias apps para casos de uso de TS.43, como el plan de datos y ODSA. La biblioteca también se puede integrar en una app para casos de uso de derechos que no sean de TS.43 basados en el protocolo EAP-AKA.
A continuación, se describen las APIs que se usarán para esos casos de uso:
- App de TS.43 que usa el protocolo HTTP de TS.43 implementado en la biblioteca: Usa las APIs de la clase
ServiceEntitlement. - App que no es de TS.43 que usa el protocolo EAP-AKA implementado en la biblioteca: Usa las APIs expuestas en la clase
EapAkaHelper.
App de ImsServiceEntitlement
De forma predeterminada, Android incluye la ImsServiceEntitlement app instalada en
la partición del producto como una app con privilegios. Para configurar la app, usa las
siguientes claves de CarrierConfig:
| Clave | Valor |
|---|---|
KEY_ENTITLEMENT_SERVER_URL_STRING |
URL del servidor de derechos del operador. Se debe incluir el prefijo https://. |
KEY_FCM_SENDER_ID_STRING |
ID de remitente de FCM del operador. No establezcas este valor si el operador no requiere FCM. |
KEY_SHOW_VOWIFI_WEBVIEW_BOOL |
Establece true si el operador requiere una IU del portal web para que los usuarios se registren en el servicio de VoWiFi. Por ejemplo, aceptar los Términos y Condiciones o ingresar una dirección de emergencia.Por lo general, los operadores de América del Norte lo requieren. |
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING |
Establece com.android.imsserviceentitlement/.WfcActivationActivity si KEY_SHOW_VOWIFI_WEBVIEW_BOOL es true. |
KEY_IMS_PROVISIONING_BOOL |
Establece true si el operador requiere el aprovisionamiento de red de los servicios de IMS (VoLTE/VoWiFi/SMSoIP) en segundo plano.Esto es obligatorio para ciertos operadores europeos. |
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL |
Establece true si KEY_IMS_PROVISIONING_BOOL es true. |
El tráfico HTTP a un servidor de derechos y un portal web de un operador pasa por la red predeterminada, por ejemplo, datos móviles o Wi-Fi predeterminados.
Socios de GMS: Los siguientes operadores son compatibles con la app de derechos de TS.43 en Android 12, según la especificación TS.43 v5.0:
- EE.UU.: CSpire, US Cellular, Cellcom
- Francia: Orange
IU adicional del sistema para el aprovisionamiento de IMS
En esta sección, se describe cómo los OEMs pueden admitir elementos adicionales de la IU del sistema relacionados con el aprovisionamiento de servicios de IMS (por ejemplo, cuando se muestra una notificación cuando se aprovisiona VoWiFi).
La app ImsServiceEntitlement establece el estado de aprovisionamiento de VoWiFi en la
plataforma con la
ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value)
API del sistema. Esta API también se usa para VoLTE (con KEY_VOLTE_PROVISIONING_STATUS) y SMSoIP (con KEY_SMS_OVER_IP_ENABLED).
Luego, la IU del sistema puede leer el estado de aprovisionamiento con
getProvisioningIntValue o registrar una devolución de llamada para supervisar el
cambio de estado de aprovisionamiento a través de registerProvisioningChangedCallback.
Anula las configuraciones para realizar pruebas
Usa los siguientes procedimientos para alterar temporalmente el comportamiento de la app ImsServiceEntitlement con fines de prueba. Para obtener detalles sobre cómo anular las configuraciones del operador, consulta Cómo anular las configuraciones del operador.
Omitir el proceso de registro de VoWiFi
Para omitir el proceso de registro de VoWiFi, lo que permite que se active directamente,
anula la configuración del operador
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING y establece su valor en una
cadena vacía.
Omitir el aprovisionamiento de IMS
Para omitir el aprovisionamiento de IMS, hacer que los servicios de IMS estén disponibles y permitir que los usuarios
activen esos servicios sin aprovisionamiento de red, anula la configuración del operador
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL y establece su valor en
false.
Cambiar la URL del servidor de derechos
Para cambiar la URL del servidor de derechos, anula la configuración del operador
KEY_ENTITLEMENT_SERVER_URL_STRING y establece su valor en la cadena de URL
esperada. Debes incluir el prefijo https://.
Cómo anular las configuraciones del operador
A partir de Android 11, los comandos de anulación de configuración del operador están integrados y disponibles con privilegios de administrador.
El siguiente comando es un ejemplo de cómo anular la clave de configuración del operador carrier_volte_provisioning_required_bool y establecer su valor en false. Puedes ejecutar el comando varias veces para anular varias configuraciones.
adb rootadb shell cmd phone cc set-value -p carrier_volte_provisioning_required_bool false
Para borrar todas las anulaciones, usa el siguiente comando:
adb shell cmd phone cc clear-valuesPara obtener más información, ejecuta el siguiente comando:
adb shell cmd phone cc