Derecho de servicio de IMS

A partir de Android 12, Android incluye compatibilidad con la configuración de derechos de servicio TS.43, una especificación de la GSMA que define el paso de verificación de derechos para la activación de servicios, incluidos Voz por Wi-Fi (VoWiFi), Voz por LTE (VoLTE), SMS por IP (SMSoIP), activación de servicios en el dispositivo (ODSA) de dispositivos complementarios con 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 derechos 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 derechos permite que el dispositivo consulte el servidor de derechos del operador como se define en la especificación TS.43 de GSMA para el estado de derechos de IMS con 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 derechos de servicio de IMS para el aprovisionamiento de servicios. Adoptar la función proporciona los siguientes beneficios:

  • Reduce los costos de prueba y certificación para los operadores, ya que esta función de derechos se puede usar en varios productos y OEM.
  • Reduce los gastos generales de desarrollo para los fabricantes de dispositivos a través de una app para Android estándar.
  • Permite que los fabricantes de dispositivos y las empresas de telefonía celular aporten código para la función, ya que esta 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 describen la arquitectura y el comportamiento de la función de derechos del servicio de IMS.

Función de derecho TS.43

Figura 1: Arquitectura de la función de derechos de 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 TS.43 Service API static library: 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.
  • ImsServiceEntitlement app cliente: Esta app usa la API de Service TS.43. La app implementa elementos de IU, incluidas WebView para renderizar el portal de servicios del operador para que los usuarios activen servicios, y se comunica 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 un 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 derechos del servicio de IMS. A continuación, se describe cada uno de los pasos etiquetados:

(1) La app cliente invoca la API de servicio TS.43 para iniciar una solicitud de derecho de servicio.

(2) La API del servicio TS.43 envía una solicitud HTTP al servidor de derechos del operador para iniciar un desafío de EAP-AKA.

(3) La API de servicio TS.43 invoca APIs de telefonía (por ejemplo, getIccAuthentication) para completar el desafío-respuesta de 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 devuelve los datos de configuración o el derecho 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 finalice la activación del servicio.

Integración

En esta sección, se describe el proceso para integrar la biblioteca de service_entitlement y la app de ImsServiceEntitlement.

Como no hay dependencia de la API de Android 12, la biblioteca service_entitlement y la app ImsServiceEntitlement se pueden adaptar para versiones anteriores de la plataforma de Android.

Biblioteca de service_entitlement

Como la biblioteca service_entitlement se vincula de forma estática en ImsServiceEntitlement app, no se requieren pasos adicionales para integrar la biblioteca en la app de ImsServiceEntitlement.

La biblioteca de service_entitlement se puede integrar en tus propias apps para casos de uso de TS.43, como planes 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 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.
  • App que no es de TS.43 y 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 ImsServiceEntitlement instalada en la partición del producto como una app privilegiada. 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 Se establece 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 los Términos y Condiciones o ingresar una dirección de emergencia.

Por lo general, los operadores de América del Norte lo exigen.
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 Se establece en true si el operador requiere el aprovisionamiento de red de los servicios de IMS (VoLTE/VoWiFi/SMSoIP) en segundo plano.

Algunos 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 hacia el servidor de derechos y el portal web de un operador se realiza a través de la red predeterminada, por ejemplo, los datos móviles o la conexión Wi-Fi predeterminados.

Socios de GMS: La app de derechos de TS.43 en Android 12 admite los siguientes operadores, de acuerdo con la especificación TS.43 v5.0:

  • EE.UU.: CSpire, US Cellular y Cellcom
  • Francia: Orange

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 con 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 la configuración 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 la configuración de la empresa de telefonía, consulta Cómo anular la configuración de la empresa de telefonía.

Cómo omitir 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.

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.

Cómo 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://.

Anula la configuración del operador

A partir de Android 11, los comandos de anulación de la 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 varios parámetros de configuración.

adb root
adb shell cmd phone cc set-value -p carrier_volte_provisioning_required_bool false

Para borrar todos los reemplazos, 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