Android 12 führt die Unterstützung eines einzigen Registrierungsmodells für die Bereitstellung von MMTEL- und RCS-Funktionen ein. Dieses Modell ermöglicht es Geräten, alle IMS-Funktionen über eine einzige IMS-Registrierung zu verwalten, die vom ImsService des Geräts bereitgestellt wird, und die von einigen Telekommunikationsanbietern eingeführten Anforderungen zu erfüllen. Im Vergleich zu einem Dual-Registrierungsmodell, bei dem mehrere IMS-Registrierungen auf einem Gerät verwaltet werden, reduziert die Einzelregistrierung den Datenverkehr im Netzwerk des Netzbetreibers und erhöht die Zuverlässigkeit.
Android 12 unterstützt dieses Einzelregistrierungsmodell durch eine Architektur mit einer Reihe von APIs, die es dem AOSP-Telefonie-Stack ermöglichen, sowohl MMTEL-Funktionen von ImsService
als auch RCS-Funktionen zu verwalten, die von der vom Benutzer ausgewählten RCS-Messaging-App bereitgestellt werden. Um die IMS-Einzelregistrierung zu unterstützen, müssen Gerätehersteller und SoC-Anbieter diese APIs implementieren, um RCS-Funktionen in der vom Benutzer ausgewählten RCS-Messaging-App zu aktivieren.
Abbildung 1 zeigt den IMS-Stack des Geräts bei Verwendung des IMS-Einzelregistrierungsmodells. Alle IMS-Anwendungen nutzen den standardmäßigen ImsService des Geräts für MMTEL- und RCS-Funktionen über eine einzige IMS-Registrierung. Dazu gehören die Bereitstellung, die Weiterleitung von SIP-Nachrichten und der RCS-Benutzerfähigkeitsaustausch.
Abbildung 1. Architektur des Einzelregistrierungsmodells
Android 11 und niedriger unterstützt nur ein Dual-Registrierungsmodell für die Bereitstellung von MMTEL- und RCS-Funktionen, wobei MMTEL vom ImsService des Geräts bereitgestellt wird und RCS-Funktionen darüber implementiert werden und ihren eigenen IMS-Stack und die Verbindung zum Netz des Netzbetreibers unabhängig verwalten.
Abbildung 2 zeigt die Architektur für das Dual-Registrierungsmodell. In diesem Modell ist jede App dafür verantwortlich, eine Verbindung zum Netzwerk des Netzbetreibers herzustellen und eine IMS-Registrierung für MMTEL- und RCS-Funktionen einzurichten. Der ImsService des Geräts implementiert MMTEL, nutzt die IMS-Datenverbindung des Geräts zum Trägernetzwerk und arbeitet unabhängig von anderen RCS-Apps.
Abbildung 2. Architektur des Dual-Registrierungsmodells
IMS-Einzelregistrierungs-APIs
Geräte, die von Netzbetreibern betrieben werden, die eine IMS-Einzelregistrierung erfordern, müssen die IMS-Einzelregistrierungs-APIs unterstützen und die Android-Funktion PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION
definieren. Abbildung 3 zeigt die APIs, die die IMS-Einzelregistrierung unterstützen.
Abbildung 3. High-Level-API-Oberflächen, die die IMS-Einzelregistrierung unterstützen
Android-Geräte, die die IMS-Einzelregistrierung als Teil des AOSP-Telefonie-Stacks unterstützen, müssen alle in der folgenden Tabelle beschriebenen AOSP-APIs unterstützen.
API-Oberfläche | RCS-Anwendungs-APIs | IMS-APIs des Anbieters | Beschreibung |
---|---|---|---|
RCS-Bereitstellung | ProvisioningManager | ImsConfigImplBase | Ermöglicht einem OEM oder Netzbetreiber die Bereitstellung einer App zum Aktualisieren des RCS-Bereitstellungsstatus, wenn der Netzbetreiber einen proprietären Netzbetreiber-Berechtigungsmechanismus verwendet. Der ImsService muss außerdem den Standard-AutoConfigurationServer (ACS) für die Bereitstellung für Netzbetreiber unterstützen, die keinen proprietären Mechanismus verwenden. |
Weiterleitung von SIP-Nachrichten | SipDelegateManager | SipTransportImplBase | Ermöglicht einer RCS-Anwendung, zunächst bestimmte RCS-Feature-Tags mit dem Gerät ImsService zu verknüpfen und dann SIP-Nachrichten und IMS-Registrierungsaktualisierungen zu senden und zu empfangen, die diesen RCS-Feature-Tags zugeordnet sind. |
Dedizierte Trägerbenachrichtigungen | ConnectivityManager | DataCallResponse | Ermöglicht einer App, QoS-Benachrichtigungen an einem Socket abzuhören, der einem bestimmten lokalen Port zugeordnet ist. |
GBA-Authentifizierung | BootstrapAuthenticationRequest | GbaService | Ermöglicht einer RCS-App die Authentifizierung mit dem Netzwerk und den Zugriffsschlüsseln, die für RCS-Funktionen wie die Dateiübertragung verwendet werden. |
RCS-Benutzerfähigkeitsaustausch | ImsRcsManager | RcsCapabilityExchangeImplBase | Bietet AOSP die Möglichkeit, seine MMTEL- und RCS-Funktionen an den Anbieter ImsService zu senden, damit sie unter einer Entität im Netzwerk für den Austausch von RCS-Benutzerfunktionen veröffentlicht werden können. Ermöglicht außerdem anderen Apps, die an den RCS-Funktionen eines oder mehrerer Kontakte interessiert sind, das Netzwerk nach den RCS-Funktionen der Kontakte abzufragen. |
Sicherheit und Berechtigungen
Android 12 führt die folgenden Berechtigungen ein, um einen sicheren Zugriff auf das Netzwerk des Netzbetreibers und die Benutzerdaten zu gewährleisten:
-
android.permission.PERFORM_IMS_SINGLE_REGISTRATION
-
android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
Die Berechtigung android.permission.PERFORM_IMS_SINGLE_REGISTRATION
muss von der Messaging-App mit den RCS-Funktionen definiert werden. Damit diese Erlaubnis erteilt werden kann, muss Folgendes zutreffen:
- Die App muss als privilegierte Anwendung installiert werden, das heißt, sie ist auf dem Gerät vorinstalliert und darf auf privilegierte Berechtigungen zugreifen
- Die App muss mithilfe von
RoleManager
als Standard-SMS-Rolle des Benutzers festgelegt werden
Wenn diese beiden Bedingungen nicht erfüllt sind, wird der App der Zugriff auf die Berechtigung android.permission.PERFORM_IMS_SINGLE_REGISTRATION
verweigert. Dies bedeutet, dass Apps von Drittanbietern nicht auf RCS-Einzelregistrierungs-APIs zugreifen dürfen, da sie eine Netzbetreiberzertifizierung auf dem Gerät erfordern.
Wenn die Berechtigung android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
einer App gewährt wird, die auch über die Berechtigung READ_CONTACTS verfügt, kann die App die RCS-Funktionen von Telefonnummern mithilfe von RcsUceAdapter
anfordern. Damit diese Erlaubnis erteilt werden kann, muss Folgendes zutreffen:
- Die App muss als privilegierte Anwendung installiert werden, das heißt, sie ist auf dem Gerät vorinstalliert und darf auf privilegierte Berechtigungen zugreifen.
Die App muss als eine der folgenden
RoleManager
Rollen definiert sein:- Standard-Messaging-App: Vom Benutzer festgelegt.
- Standard-Dialer-App: Vom Benutzer festgelegt.
- Standard-Kontakt-App: Eine in Android 12 eingeführte Rolle, die es dem OEM ermöglicht, über den Geräte-Overlay-Wert
config_systemContacts
einen Paketnamen zu definieren, der der Kontakt-App des Geräts entsprechen muss. Dieser App wird dann die Kontaktrolle zugewiesen.
Um mithilfe ConnectivityManager
auf den IMS-APN zuzugreifen und den Datenverkehr einzurichten und zu verwalten, müssen Apps außerdem die Berechtigung android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS
anfordern.
Beispiele und Quelle
Android stellt in AOSP eine App bereit, die eine Test-Messaging-App mit grundlegender RCS-Messaging-Unterstützung für Test- und Entwicklungszwecke implementiert. Sie finden die App unter testapps/TestRcsApp
. Wenn die App auf einem Gerät installiert ist, kann sie als Standard-Messaging-App des Benutzers festgelegt werden und verfügt über die erforderlichen Berechtigungen für den Zugriff auf die IMS-Einzelregistrierungs-APIs.
Android bietet außerdem eine Beispielimplementierung von ImsService für RCS. Der Quellcode befindet sich unter /testapps/ImsTestService
.
Implementierung
Für weitere Implementierungsdetails laden Sie IMS Single Registration in Android herunter.
Validierung
Gehen Sie wie folgt vor, um Ihre Implementierung der IMS-Einzelregistrierung zu validieren:
- Stellen Sie sicher, dass die CTS-Testsuite CtsTelephonyTestCases erfolgreich ist.
- Installieren Sie die TestRcsApp und führen Sie sie aus, um während der Integration grundlegende Einzelregistrierungstestfälle auszuführen.
- Bestehen Sie die Carrier-Zertifizierung für IMS-Einzelregistrierungstestfälle.