Android 12 introduce compatibilidad con un solo modelo de registro para proporcionar las funciones de MMTEL y RCS. Este modelo permite que en los dispositivos se administren todas las funciones de IMS a través de un único registro de IMS que proporciona el ImsService del dispositivo y que se cumplan los requisitos que introdujeron algunos operadores de telecomunicaciones. En comparación con un modelo de registro dual, en el que se administran varios registros de IMS en un solo dispositivo, el registro único reduce el tráfico en la red del operador y aumenta la confiabilidad.
Android 12 admite este modelo de registro único a través de una arquitectura con un conjunto de APIs que permiten que la pila de telefonía del AOSP administre las funciones de MMTEL proporcionadas por ImsService
y las funciones de RCS proporcionadas por la app de mensajería RCS seleccionada por el usuario. Para admitir el registro único de IMS, los fabricantes de dispositivos y los proveedores de SoC deben implementar estas APIs para habilitar las funciones de RCS en la app de mensajería RCS seleccionada por el usuario.
En la figura 1, se ilustra la pila de IMS del dispositivo cuando se usa el modelo de registro único de IMS. Todas las apps de IMS usan el ImsService predeterminado del dispositivo para las funciones de MMTEL y RCS a través de un solo registro de IMS. Esto incluye el aprovisionamiento, el reenvío de mensajes SIP y el intercambio de capacidades de usuario de RCS.
Figura 1: Arquitectura del modelo de registro único
Android 11 y versiones anteriores solo admiten un modelo de registro dual para proporcionar funciones de MMTEL y RCS, en el que el ImsService del dispositivo proporciona MMTEL y las funciones de RCS se implementan de forma independiente y administran su propia pila de IMS y conexión a la red del operador.
En la figura 2, se ilustra la arquitectura del modelo de registro doble. En este modelo, cada app es responsable de conectarse a la red del operador y establecer un registro de IMS para las funciones de MMTEL y RCS. El ImsService del dispositivo implementa MMTEL, usa la conexión de datos IMS del dispositivo a la red del operador y funciona de forma independiente de otras apps de RCS.
Figura 2: Arquitectura del modelo de registro doble
APIs de registro único de IMS
Los dispositivos que se conectan a operadores que requieren el registro único de IMS deben admitir las APIs de registro único de IMS y definir la función de Android PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION
.
En la figura 3, se muestran las APIs que admiten el registro único de IMS.
Figura 3: Plataformas de API de alto nivel que admiten el registro único de IMS
Los dispositivos Android que admiten el registro único de IMS como parte de la pila de telefonía del AOSP deben admitir todas las APIs del AOSP que se describen en la siguiente tabla.
Superficie de la API | APIs de la app de RCS | APIs de IMS de proveedores | Descripción |
---|---|---|---|
Aprovisionamiento de RCS | ProvisioningManager | ImsConfigImplBase | Permite que un OEM o un operador proporcionen una app para actualizar el estado de aprovisionamiento de RCS si el operador usa un mecanismo de derechos de operador propietario. El ImsService también debe admitir el AutoConfigurationServer (ACS) estándar para el aprovisionamiento de operadores que no usan un mecanismo propietario. |
Reenvío de mensajes SIP | SipDelegateManager | SipTransportImplBase | Permite que una app de RCS primero asocie etiquetas de funciones de RCS específicas con el dispositivo ImsService y, luego, envíe y reciba mensajes SIP y actualizaciones de registro de IMS asociados con esas etiquetas de funciones de RCS. |
Notificaciones de portador dedicado | ConnectivityManager | DataCallResponse | Permite que una app escuche las notificaciones de QoS en un socket asociado a un puerto local específico. |
Autenticación de GBA | bootstrapAuthenticationRequest | GbaService | Permite que una app de RCS se autentique en la red y acceda a las claves que se usan para las funciones de RCS, como la transferencia de archivos. |
Intercambio de capacidades del usuario de RCS | ImsRcsManager | RcsCapabilityExchangeImplBase | Proporciona al AOSP la capacidad de enviar sus funciones de MMTEL y RCS al ImsService del proveedor para que se puedan publicar bajo una sola entidad en la red para el intercambio de funciones del usuario de RCS. También permite que otras apps interesadas en las capacidades de RCS de uno o más contactos consulten la red para conocer las capacidades de RCS de los contactos. |
Seguridad y permisos
Android 12 introduce los siguientes permisos para garantizar el acceso seguro a la red del operador y a los datos del usuario:
android.permission.PERFORM_IMS_SINGLE_REGISTRATION
android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
La app de mensajería con funciones de RCS debe definir el permiso android.permission.PERFORM_IMS_SINGLE_REGISTRATION
. Para que se otorgue este permiso, se deben cumplir los siguientes requisitos:
- La app debe instalarse como una app con privilegios, lo que significa que está preinstalada en el dispositivo y tiene permiso para acceder a permisos con privilegios.
- La app debe establecerse como el rol de SMS predeterminado del usuario con
RoleManager
.
Si no se cumplen ambas condiciones, se le negará el acceso a la app al permiso de android.permission.PERFORM_IMS_SINGLE_REGISTRATION
. Esto significa que las apps de terceros no pueden acceder a las APIs de registro único de RCS, ya que requieren la certificación del operador en el dispositivo.
El permiso android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
, cuando se otorga a una app que también tiene el permiso READ_CONTACTS, permite que la app solicite las capacidades de RCS de los números de teléfono con RcsUceAdapter
.
Para que se otorgue este permiso, se deben cumplir las siguientes condiciones:
- La app debe instalarse como una app con privilegios, lo que significa que está preinstalada en el dispositivo y tiene permiso para acceder a permisos con privilegios.
La app debe definirse como uno de los siguientes roles de
RoleManager
:- App de mensajería predeterminada: La establece el usuario.
- App de teléfono predeterminada: La establece el usuario.
- App de contactos predeterminada: Es un rol que se introdujo en Android 12 y que permite que el OEM defina un nombre de paquete a través del valor de la superposición del dispositivo
config_systemContacts
, que debe corresponder a la app de contactos del dispositivo. Luego, se le otorga a esa app el rol de contactos.
Para acceder al APN de IMS con ConnectivityManager
para configurar y administrar el tráfico de datos, las apps también deben solicitar el permiso android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS
.
Ejemplos y fuente
Android proporciona una app en AOSP que implementa una app de mensajería de prueba con compatibilidad básica con la mensajería RCS para fines de prueba y desarrollo. Puedes encontrar la app en testapps/TestRcsApp
.
Cuando la app se instala en un dispositivo, se puede establecer como la app de mensajería predeterminada del usuario y tendrá los permisos necesarios para acceder a las APIs de registro único de IMS.
Android también proporciona una implementación de muestra de ImsService para RCS. El código fuente se encuentra en /testapps/ImsTestService
.
Implementación
Para obtener más detalles sobre la implementación, descarga Registro único de IMS en Android.
Validación
Para validar tu implementación del registro único de IMS, haz lo siguiente:
- Asegúrate de que el conjunto de pruebas del CTS CtsTelephonyTestCases se apruebe.
- Instala y ejecuta TestRcsApp para ejecutar casos de prueba básicos de registro único durante la integración.
- Aprobar la certificación del operador para los casos de prueba de registro único de IMS