A partir de Android 12, Android incluye compatibilidad con la Configuración de derechos de servicio de TS.43, una especificación de GSMA que define el paso de verificación de derechos para la activación de servicios, incluidos el Wi-Fi de voz en off (VoWiFi), la voz en off-LTE (VoLTE), los SMS por IP (SMSoIP), la activación de servicios en el dispositivo (ODSA) de los dispositivos complementarios de eSIM (asociados con el dispositivo solicitante) y los datos.
Para admitir esta especificación, Android proporciona una función de derechos de servicio de IMS que permite a un proveedor de servicios informar a los dispositivos móviles sobre el estado de los servicios de red del subsistema multimedia IP (IMS). Esta función de derechos permite que el dispositivo consulte el servidor de derechos del operador, como se define en la especificación GSMA TS.43 para el estado de derechos de IMS, mediante la autenticación EAP-AKA, sin que los usuarios deban ingresar credenciales de forma manual.
Los operadores con servidores de derechos de IMS pueden usar la función de derechos 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 de los operadores, ya que esta función de derechos se puede usar en varios productos y OEM.
- Reduce la sobrecarga de desarrollo para los fabricantes de dispositivos a través de una app para Android estándar.
- Permite que los fabricantes y proveedores de dispositivos aporten código para la función, ya que es de código abierto.
- Proporciona administración de direcciones de emergencia para operadores de Norteamérica.
Arquitectura
En la siguiente figura, se describe la arquitectura y el comportamiento de la función de derechos de servicio de IMS.
Figura 1: Arquitectura de la función de derechos TS.43
Como se muestra en la Figura 1, la arquitectura de la función de derechos de servicio de IMS incluye los siguientes componentes:
service_entitlement
Biblioteca estática de la API de Service 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.App cliente de
ImsServiceEntitlement
: 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, además, interactúa con otros componentes de Android para administrar la experiencia del usuario de extremo a extremo.Si quieres obtener más información para configurar Android de modo que funcione con el servidor de derechos basado en TS.43 de un proveedor, 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 derechos del servicio IMS. A continuación, se describe cada uno de los pasos según la etiqueta:
(1) La app cliente invoca a la API de servicio de TS.43 para iniciar una solicitud de derechos de servicio.
(2) La API de servicio de TS.43 envía una solicitud HTTP al servidor de derechos del proveedor para iniciar un desafío EAP-AKA.
(3) La API de servicio de TS.43 invoca las APIs de telefonía (por ejemplo, getIccAuthentication
) para completar la respuesta de desafío EAP-AKA.
(4) El servicio TS.43 recibe datos de configuración o derechos de servicio del servidor de derechos del operador después de que se verifica la respuesta de EAP-AKA.
(5) El servicio TS.43 muestra los derechos del servicio o los datos de configuración a la app cliente.
(6) La app cliente controla los datos y, de manera opcional, renderiza el portal de servicio del operador para que el usuario finalice la activación del servicio.
Integración
En esta sección, se describe el proceso para integrar la biblioteca service_entitlement
y la app ImsServiceEntitlement
.
Como no hay una dependencia de la API de Android 12, la biblioteca de service_entitlement
y la app de ImsServiceEntitlement
pueden tener portabilidad a versiones anteriores de las plataformas de Android.
Biblioteca de service_entitlement
Como la biblioteca service_entitlement
está vinculada de forma estática en ImsServiceEntitlement app
, no se requieren pasos adicionales para integrarla en la app de ImsServiceEntitlement
.
La biblioteca service_entitlement
se puede integrar en tus propias apps para casos de uso de TS.43, como el plan de datos y la ODSA. La biblioteca también se puede integrar en una app para casos de uso de derechos que no sean TS.43 según el protocolo EAP-AKA.
A continuación, se describen las APIs que se deben usar para estos 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
. - Aplicación que no es 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 app de ImsServiceEntitlement
instalada en la partición de producto como una app con privilegios. Para configurar la app, usa las siguientes claves de CarrierConfig:
Clave | Valor |
---|---|
KEY_ENTITLEMENT_SERVER_URL_STRING |
Es la URL del servidor de derechos del operador. Se debe incluir el prefijo https:// . |
KEY_FCM_SENDER_ID_STRING |
Es el ID de remitente de FCM del operador. No establezcas este valor si el operador no requiere FCM. |
KEY_SHOW_VOWIFI_WEBVIEW_BOOL |
Configúralo en true si el operador requiere una IU de portal web para que los usuarios se registren en el servicio de VoWiFi. Por ejemplo, aceptar términos y condiciones
o ingresar una dirección de emergencia.Por lo general, los operadores de Norteamérica lo requieren. |
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING |
Se establece en com.android.imsserviceentitlement/.WfcActivationActivity , si KEY_SHOW_VOWIFI_WEBVIEW_BOOL es true . |
KEY_IMS_PROVISIONING_BOOL |
Establece en true si el operador requiere el aprovisionamiento de red de los servicios de IMS (VoLTE/VoWiFi/SMSoIP) en segundo plano.Ciertos operadores europeos lo requieren. |
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL |
Se establece en true si KEY_IMS_PROVISIONING_BOOL es true . |
El tráfico HTTP al servidor de derechos y al portal web de un operador pasa por la red predeterminada, por ejemplo, los datos móviles o Wi-Fi predeterminados.
Socios de GMS: Los siguientes proveedores son compatibles con la app de derechos de TS.43 en Android 12, según la especificación de TS.43 v5.0:
- EE.UU.: CSpire, US Cellular, Cellcom
- Francia: naranja
IU del sistema adicional 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 de ImsServiceEntitlement
establece el estado de aprovisionamiento de VoWiFi en la plataforma a través de la API del sistema ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE,
value)
. 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
.
Anular la configuración para las pruebas
Usa los siguientes procedimientos para alterar temporalmente el comportamiento de la app de ImsServiceEntitlement
con fines de prueba. Para obtener detalles sobre cómo anular las configuraciones del operador, consulta Cómo anular las configuraciones del operador.
Cómo 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 los activen sin el aprovisionamiento de red, anula la configuración del operador KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL
y establece su valor en false
.
Cambia 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://
.
Anula las configuraciones del operador
A partir de Android 11, los comandos de anulación de la configuración del proveedor 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 varios parámetros de configuración.
adb root
adb 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-values
Para obtener más información, ejecuta el siguiente comando:
adb shell cmd phone cc