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 mediante un único registro de IMS que proporciona el ImsService del dispositivo y que se cumplan los requisitos que presentan 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 que proporciona ImsService
y las funciones de RCS que proporciona la app de mensajería RCS que selecciona 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 que selecciona 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 del 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 las funciones de MMTEL y RCS, en el que el ImsService del dispositivo proporciona MMTEL y las funciones de RCS se implementan en la parte superior y administran su propia pila de IMS y la conexión a la red del operador de forma independiente.
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. ImsService del dispositivo implementa MMTEL, usa la conexión de datos IMS del dispositivo a la red del operador y funciona independientemente de otras apps de RCS.
Figura 2: Arquitectura de modelo de registro dual
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 de AOSP deben admitir todas las APIs de AOSP que se describen en la siguiente tabla.
Superficie de la API | APIs de apps RCS | APIs de IMS del proveedor | Descripción |
---|---|---|---|
Aprovisionamiento de RCS | ProvisioningManager | ImsConfigImplBase | Permite que un OEM o operador proporcione una app para actualizar el estado de aprovisionamiento de RCS si el operador usa un mecanismo de derechos de operador propietario. ImsService también debe ser compatible con AutoConfigurationServer (ACS) estándar para el aprovisionamiento de operadores que no usan un mecanismo de propiedad exclusiva. |
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 asociadas con esas etiquetas de funciones de RCS. |
Notificaciones al portador dedicadas | ConnectivityManager | DataCallResponse | Permite que una app escuche las notificaciones de QoS en un socket asociado con un puerto local específico. |
Autenticación de GBA | bootstrapAuthenticationRequest | GbaService | Permite que una app de RCS se autentique con la red y las claves de acceso que se usan para las funciones de RCS, como la transferencia de archivos. |
Intercambio de capacidades del usuario de RCS | ImsRcsManager | RcsCapabilityExchangeImplBase | Le brinda a AOSP la capacidad de enviar sus capacidades de MMTEL y RCS al ImsService del proveedor para que se puedan publicar en una entidad en la red para el intercambio de capacidades de los usuarios de RCS. También permite que otras apps interesadas en las funciones de RCS de uno o más contactos consulten a la red para obtener las funciones de RCS de los contactos. |
Seguridad y permisos
Android 12 presenta los siguientes permisos para garantizar un 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 debe definir el permiso android.permission.PERFORM_IMS_SINGLE_REGISTRATION
con las funciones de RCS. Para que se otorgue este permiso, se deben cumplir los siguientes requisitos:
- La app debe estar instalada como una app con privilegios, lo que significa que está preinstalada en el dispositivo y puede acceder a permisos de este tipo.
- La app se debe configurar como el rol de SMS predeterminado del usuario con
RoleManager
.
Si no se cumplen ambas condiciones, la app no podrá acceder al permiso 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.
Cuando se otorga el permiso android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
a una app que también tiene el permiso READ_CONTACTS, esta puede solicitar las funciones de RCS de los números de teléfono con RcsUceAdapter
.
Para que se otorgue este permiso, se debe cumplir lo siguiente:
- La app debe instalarse como una app con privilegios, lo que significa que debe estar preinstalada en el dispositivo y puede acceder a los permisos con privilegios.
La app debe definirse como uno de los siguientes roles de
RoleManager
:- App de mensajería predeterminada: Es la configuración del usuario.
- App de teléfono predeterminada: Establecida por el usuario.
- App de contactos predeterminada: Es un rol que se introdujo en Android 12 que permite que el OEM defina un nombre de paquete a través del valor de superposición del dispositivo
config_systemContacts
, que debe corresponder a la app de contactos del dispositivo. Luego, a esa app se le asigna el rol de contactos.
Para acceder al APN de IMS con ConnectivityManager
y 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 pruebas 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 está 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 de CTS CtsTelephonyTestCases sea aprobado.
- Instala y ejecuta TestRcsApp para ejecutar casos de prueba básicos de registro único durante la integración.
- Aprobación de la certificación del operador para los casos de prueba de registro único de IMS