Derecho de servicio de IMS

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 el plan de 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 al servidor de derechos del proveedor, según 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 tengan que ingresar ninguna credencial manualmente.

Los proveedores con servidores autorizados 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.
  • Se reduce la sobrecarga de desarrollo para los fabricantes de dispositivos mediante 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.

Función de derechos TS.43

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 TS.43: Esta biblioteca implementa la especificación de TS.43, interactúa con el servidor de derechos de un proveedor y expone las 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 WebView para renderizar el portal de servicios del proveedor para que los usuarios activen servicios e 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 los componentes de la función de derechos del servicio de IMS se comunican entre sí. A continuación, se describe cada uno de los pasos como están etiquetados:

(1) La app cliente invoca a la API del 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 los derechos del servicio o los datos de configuración del servidor de derechos del proveedor después de que se verifica la respuesta 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 servicios del proveedor 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 service_entitlement

Debido a que la biblioteca de service_entitlement está vinculada de forma estática a ImsServiceEntitlement app, no se requieren pasos adicionales para integrarla a la app de 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 el 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 en esos casos de uso:

  • App de TS.43 con el protocolo HTTP TS.43 implementado en la biblioteca: Usa las APIs de la clase ServiceEntitlement
  • Una app que no es TS.43 y 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 ID de remitente de FCM del proveedor.

No establezcas este valor si la empresa de transporte 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.

Esto suele ser un requisito de los operadores de Norteamérica.
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 Configúralo en true si el operador requiere el aprovisionamiento de red de servicios de IMS (VoLTE/VoWiFi/SMSoIP) en segundo plano.

Esto es obligatorio para algunos operadores europeos.
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL Se establece en true si KEY_IMS_PROVISIONING_BOOL es true.

El tráfico HTTP al servidor autorizado y al portal web de un proveedor pasa por la red predeterminada, por ejemplo, Wi-Fi o datos móviles 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 y Cellcom
  • Francia: naranja

IU del sistema adicional para el aprovisionamiento de IMS

En esta sección, se describe cómo los OEM 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 registrando una devolución de llamada para supervisar el cambio de estado de aprovisionamiento a través de registerProvisioningChangedCallback.

Anula configuraciones para pruebas

Usa los siguientes procedimientos para alterar de forma temporal el comportamiento de la app ImsServiceEntitlement con fines de prueba. Si deseas obtener detalles para anular las configuraciones de los proveedores, consulta Cómo anular las configuraciones de los proveedores.

Omite el proceso de registro de VoWiFi

Para omitir el proceso de registro de VoWiFi y permitir 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.

Omite el aprovisionamiento de IMS

Para omitir el aprovisionamiento de IMS, poner los servicios de IMS a disposición y permitir que los usuarios activen esos servicios sin el aprovisionamiento de red, anula la configuración del proveedor 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 proveedor KEY_ENTITLEMENT_SERVER_URL_STRING y establece su valor en la cadena de URL esperada. Debes incluir el prefijo https://.

Anula configuraciones de proveedores

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 proveedor 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