Android 12 introduce il supporto di un singolo modello di registrazione per fornire le funzionalità MMTEL e RCS. Questo modello consente ai dispositivi di gestire tutte le funzionalità IMS tramite un'unica registrazione IMS fornita dall'IMS del dispositivo e di rispettare i requisiti introdotti da alcuni operatori di telecomunicazioni. Rispetto a un modello di registrazione doppia, in cui vengono gestite più registrazioni IMS su un dispositivo, la registrazione singola riduce il traffico sulla rete dell'operatore e aumenta l'affidabilità.
Android 12 supporta questo modello di registrazione singola
tramite un'architettura con un
insieme di API che consentono allo stack di telefonia AOSP di gestire sia le funzionalità MMTEL
fornite da
ImsService
sia le funzionalità RCS fornite dall'app di messaggistica RCS selezionata dall'utente. Per supportare la registrazione singola IMS, i produttori di dispositivi e i fornitori di SoC devono implementare queste
API per attivare le funzionalità RCS nell'app di messaggistica RCS selezionata dall'utente.
La Figura 1 illustra lo stack IMS del dispositivo quando viene utilizzato il modello di registrazione singola IMS. Tutte le app IMS utilizzano ImsService predefinito del dispositivo per le funzionalità MMTEL e RCS tramite una singola registrazione IMS. Sono inclusi il provisioning, l'inoltro dei messaggi SIP e lo scambio delle funzionalità utente RCS.
Figura 1. Architettura del modello di registrazione singola
Android 11 e versioni precedenti supportano solo un modello di registrazione doppia per fornire funzionalità MMTEL e RCS, dove MMTEL è fornito dal servizio Ims del dispositivo e le funzionalità RCS sono implementate sopra e gestiscono autonomamente il proprio protocollo IMS e la connessione alla rete dell'operatore.
La figura 2 illustra l'architettura del modello di registrazione doppia. In questo modello, ogni app è responsabile della connessione alla rete dell'operatore e della creazione di una registrazione IMS per le funzionalità MMTEL e RCS. ImsService del dispositivo implementa MMTEL, utilizza la connessione dati IMS del dispositivo alla rete dell'operatore e opera indipendentemente da altre app RCS.
Figura 2. Architettura del modello di registrazione doppia
API di registrazione singola IMS
I dispositivi che operano con operatori che richiedono la registrazione singola IMS devono supportare
le API di registrazione singola IMS e definire la funzionalità Android
PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION
.
La Figura 3 mostra le API che supportano la registrazione singola IMS.
Figura 3. Piattaforme API di alto livello che supportano la registrazione singola IMS
I dispositivi Android che supportano la registrazione singola IMS come parte dello stack di telefonia AOSP devono supportare tutte le API AOSP descritte nella tabella seguente.
Area della superficie dell'API | API per app RCS | API IMS del fornitore | Descrizione |
---|---|---|---|
Provisioning RCS | ProvisioningManager | ImsConfigImplBase | Consente a un OEM o a un operatore di fornire un'app per aggiornare lo stato del provisioning RCS se l'operatore utilizza un meccanismo di diritti dell'operatore proprietario. ImsService deve supportare anche l'AutoConfigurationServer (ACS) standard per il provisioning degli operatori che non utilizzano un meccanismo proprietario. |
Inoltro dei messaggi SIP | SipDelegateManager | SipTransportImplBase | Consente a un'app RCS di associare innanzitutto tag di funzionalità RCS specifici al dispositivo ImsService , quindi di inviare e ricevere messaggi SIP e aggiornamenti della registrazione IMS associati a questi tag di funzionalità RCS. |
Notifiche per i token bearer dedicati | ConnectivityManager | DataCallResponse | Consente a un'app di ascoltare le notifiche QoS su una presa associata a una porta locale specifica. |
Autenticazione GBA | bootstrapAuthenticationRequest | GbaService | Consente a un'app RCS di autenticarsi con la rete e di accedere alle chiavi utilizzate per le funzionalità RCS come il trasferimento di file. |
Scambio di funzionalità utente RCS | ImsRcsManager | RcsCapabilityExchangeImplBase | Fornisce ad AOSP la possibilità di inviare le proprie funzionalità MMTEL e RCS al servizio ImsService del fornitore in modo che possano essere pubblicate in una sola entità sulla rete per lo scambio delle funzionalità utente RCS. Consente inoltre ad altre app interessate alle funzionalità RCS di uno o più contatti di eseguire query sulla rete per le funzionalità RCS dei contatti. |
Sicurezza e autorizzazioni
Android 12 introduce le seguenti autorizzazioni per garantire l'accesso sicuro alla rete dell'operatore e ai dati dell'utente:
android.permission.PERFORM_IMS_SINGLE_REGISTRATION
android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
L'autorizzazione
android.permission.PERFORM_IMS_SINGLE_REGISTRATION
deve essere definita dall'app di messaggistica con le funzionalità RCS. Affinché questa
autorizzazione venga concessa, devono verificarsi le seguenti condizioni:
- L'app deve essere installata come app privilegiata, il che significa che è preinstallata sul dispositivo ed è autorizzata ad accedere alle autorizzazioni privilegiate
- L'app deve essere impostata come ruolo SMS predefinito dell'utente utilizzando
RoleManager
Se entrambe queste condizioni non sono soddisfatte, all'app viene negato l'accesso all'autorizzazione android.permission.PERFORM_IMS_SINGLE_REGISTRATION
. Ciò significa che le app di terze parti non sono autorizzate ad accedere alle API di registrazione singola RCS perché richiedono la certificazione dell'operatore sul dispositivo.
L'autorizzazione
android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
se concessa a un'app che dispone anche dell'autorizzazione READ_CONTACTS
consente all'app di richiedere le funzionalità RCS dei numeri di telefono utilizzando
RcsUceAdapter
.
Affinché questa autorizzazione venga concessa, devono verificarsi le seguenti condizioni:
- L'app deve essere installata come app privilegiata, il che significa che è preinstallata sul dispositivo ed è autorizzata ad accedere alle autorizzazioni privilegiate.
L'app deve essere definita come uno dei seguenti ruoli
RoleManager
:- App di messaggistica predefinita: impostata dall'utente.
- App Telefono predefinita: impostata dall'utente.
- App Contatti predefinita: un ruolo introdotto in Android 12 che consente all'OEM di definire un nome pacchetto tramite il valore dell'overlay del dispositivo
config_systemContacts
, che deve corrispondere all'app Contatti del dispositivo. A questa app viene quindi assegnato il ruolo Contatti.
Per accedere all'APN IMS utilizzando ConnectivityManager
per configurare e gestire il traffico di dati, le app devono anche richiedere l'autorizzazione android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS
.
Esempi e fonte
Android fornisce in AOSP un'app che implementa un'app di messaggistica di prova con supporto di base della messaggistica RCS a scopo di test e sviluppo. Puoi trovare l'app
su
testapps/TestRcsApp
.
Una volta installata su un dispositivo, l'app può essere impostata come app di messaggistica predefinita dell'utente e avrà le autorizzazioni necessarie per accedere alle API di registrazione singola IMS.
Android fornisce anche un'implementazione di esempio di ImsService per RCS. Il codice
sorgente si trova su
/testapps/ImsTestService
.
Implementazione
Per ulteriori dettagli sull'implementazione, scarica IMS Single Registration in Android.
Convalida
Per convalidare l'implementazione della registrazione singola IMS:
- Assicurati che la suite di test CTS CtsTelephonyTestCases superi i test.
- Installa ed esegui TestRcsApp per eseguire scenari di test di registrazione singola di base durante l'integrazione.
- Supera la certificazione dell'operatore per i casi di test di registrazione singola IMS.