Android 12 unterstützt ein einziges Registrierungsmodell für MMTEL- und RCS-Funktionen. Bei diesem Modell können alle IMS-Funktionen von Geräten über eine einzige IMS-Registrierung verwaltet werden, die vom ImsService des Geräts bereitgestellt wird. Außerdem werden die Anforderungen einiger Mobilfunkanbieter erfüllt. Im Vergleich zu einem Modell mit doppelter Registrierung, bei dem mehrere IMS-Registrierungen auf einem Gerät verwaltet werden, reduziert die einzelne Registrierung den Traffic im Netzwerk des Mobilfunkanbieters und erhöht die Zuverlässigkeit.
Android 12 unterstützt dieses Modell der einmaligen Registrierung über eine Architektur mit einer Reihe von APIs, mit denen der AOSP-Telefoniestack sowohl MMTEL-Funktionen von ImsService
als auch RCS-Funktionen der vom Nutzer ausgewählten RCS-Messaging-App verwalten kann. Zur Unterstützung der einmaligen IMS-Registrierung müssen Gerätehersteller und SoC-Anbieter diese APIs implementieren, um RCS-Funktionen in der vom Nutzer ausgewählten RCS-Messaging-App zu aktivieren.
Abbildung 1 zeigt den IMS-Stack des Geräts bei Verwendung des IMS-Modells mit einmaliger Registrierung. Alle IMS-Apps verwenden den Standard-ImsService des Geräts für MMTEL- und RCS-Funktionen über eine einzelne IMS-Registrierung. Dazu gehören die Bereitstellung, die SIP-Nachrichtenweiterleitung und der Austausch von RCS-Nutzerfunktionen.
Abbildung 1: Architektur des Modells mit einmaliger Registrierung
Android 11 und niedriger unterstützen nur ein Dual-Registrierungsmodell für die Bereitstellung von MMTEL- und RCS-Funktionen. Dabei wird MMTEL vom ImsService des Geräts bereitgestellt und RCS-Funktionen werden als Over-the-Top-Dienst implementiert und verwalten unabhängig ihren eigenen IMS-Stack und die Verbindung zum Netzwerk des Mobilfunkanbieters.
Abbildung 2 zeigt die Architektur für das Modell mit doppelter Registrierung. In diesem Modell ist jede App für die Verbindung zum Netzwerk des Mobilfunkanbieters und die Einrichtung einer IMS-Registrierung für MMTEL- und RCS-Funktionen verantwortlich. Der ImsService des Geräts implementiert MMTEL, verwendet die IMS-Datenverbindung des Geräts zum Mobilfunkanbieternetzwerk und funktioniert unabhängig von anderen RCS-Apps.
Abbildung 2: Architektur des Modells mit doppelter Registrierung
APIs für die IMS-Einzelregistrierung
Geräte, die bei Mobilfunkanbietern angeboten werden, für die eine IMS-Einzelregistrierung erforderlich ist, müssen die APIs für die IMS-Einzelregistrierung 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: API-Oberflächen der höheren Ebene, die die IMS-Einzelregistrierung unterstützen
Android-Geräte, die die IMS-Einzelregistrierung als Teil des AOSP-Telefonstacks unterstützen, müssen alle in der folgenden Tabelle beschriebenen AOSP-APIs unterstützen.
API-Oberfläche | RCS App APIs | IMS-APIs von Anbietern | Beschreibung |
---|---|---|---|
RCS-Bereitstellung | ProvisioningManager | ImsConfigImplBase | Ermöglicht es einem OEM oder Mobilfunkanbieter, eine App bereitzustellen, um den RCS-Bereitstellungsstatus zu aktualisieren, wenn der Mobilfunkanbieter einen proprietären Berechtigungsmechanismus verwendet. Der ImsService muss außerdem den standardmäßigen AutoConfigurationServer (ACS) für die Bereitstellung für Mobilfunkanbieter unterstützen, die keinen proprietären Mechanismus verwenden. |
SIP-Nachrichtenweiterleitung | SipDelegateManager | SipTransportImplBase | Ermöglicht es einer RCS-App, zuerst bestimmte RCS-Funktions-Tags mit dem Gerät ImsService zu verknüpfen und dann SIP-Nachrichten und IMS-Registrierungsaktualisierungen zu senden und zu empfangen, die mit diesen RCS-Funktions-Tags verknüpft sind. |
Benachrichtigungen zu dedizierter Trägerschicht | ConnectivityManager | DataCallResponse | Ermöglicht es einer App, QoS-Benachrichtigungen an einem Socket zu empfangen, der mit einem bestimmten lokalen Port verknüpft ist. |
GBA-Authentifizierung | bootstrapAuthenticationRequest | GbaService | Ermöglicht es einer RCS-App, sich beim Netzwerk zu authentifizieren und auf Schlüssel zuzugreifen, die für RCS-Funktionen wie die Dateiübertragung verwendet werden. |
Austausch von RCS-Nutzerfunktionen | ImsRcsManager | RcsCapabilityExchangeImplBase | Ermöglicht es AOSP, seine MMTEL- und RCS-Funktionen an den ImsService des Anbieters zu senden, damit sie unter einer Entität im Netzwerk für den Austausch von RCS-Nutzerfunktionen veröffentlicht werden können. Außerdem können andere Apps, die an den RCS-Funktionen eines oder mehrerer Kontakte interessiert sind, das Netzwerk nach den RCS-Funktionen der Kontakte abfragen. |
Sicherheit und Berechtigungen
Mit Android 12 werden die folgenden Berechtigungen eingeführt, um einen sicheren Zugriff auf das Netzwerk des Mobilfunkanbieters und die Daten des Nutzers zu ermöglichen:
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 Berechtigung gewährt werden kann, müssen folgende Voraussetzungen erfüllt sein:
- Die App muss als privilegierte App installiert sein, d. h. sie muss vorinstalliert auf dem Gerät sein und auf privilegierte Berechtigungen zugreifen dürfen.
- Die App muss mit
RoleManager
als Standard-SMS-Rolle des Nutzers festgelegt werden.
Wenn beide Bedingungen nicht erfüllt sind, wird der App der Zugriff auf die Berechtigung android.permission.PERFORM_IMS_SINGLE_REGISTRATION
verweigert. Das bedeutet, dass Drittanbieter-Apps nicht auf RCS-APIs für die Einzelregistrierung zugreifen dürfen, da für diese die Zertifizierung des Mobilfunkanbieters auf dem Gerät erforderlich ist.
Wenn die Berechtigung android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
einer App gewährt wird, die auch die Berechtigung READ_CONTACTS hat, kann die App die RCS-Funktionen von Telefonnummern mit RcsUceAdapter
anfordern.
Damit diese Berechtigung gewährt werden kann, müssen folgende Voraussetzungen erfüllt sein:
- Die App muss als privilegierte App installiert sein, d. h. sie muss vorinstalliert auf dem Gerät sein und auf privilegierte Berechtigungen zugreifen dürfen.
Die App muss eine der folgenden
RoleManager
-Rollen haben:- Standard-Messaging-App: Wird vom Nutzer festgelegt.
- Standard-App fürs Telefonieren: Vom Nutzer festgelegt.
- Standard-Kontakt-App: Eine Rolle, die in Android 12 eingeführt wurde und 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. Diese App erhält dann die Rolle „Kontakte“.
Wenn Apps über ConnectivityManager
auf den IMS-APN zugreifen, um den Datenverkehr einzurichten und zu verwalten, müssen sie auch die Berechtigung android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS
anfordern.
Beispiele und Quelle
Android bietet in AOSP eine App, die eine Test-Messaging-App mit grundlegender Unterstützung für RCS-Messaging zu Test- und Entwicklungszwecken implementiert. Sie finden die App unter testapps/TestRcsApp
.
Wenn die App auf einem Gerät installiert ist, kann sie als Standard-Messaging-App des Nutzers festgelegt werden. Sie hat dann die Berechtigungen, die für den Zugriff auf die IMS-APIs für die Einzelregistrierung erforderlich sind.
Android bietet auch eine Beispielimplementierung von ImsService für RCS. Der Quellcode befindet sich unter /testapps/ImsTestService
.
Implementierung
Weitere Implementierungsdetails findest du unter IMS Single Registration in Android.
Zertifizierungsstufe
So prüfen Sie die Implementierung der IMS-Einzelregistrierung:
- Die CTS-Testsuite CtsTelephonyTestCases muss bestanden werden.
- Installieren und führen Sie die TestRcsApp aus, um während der Integration grundlegende Testfälle für die Einzelregistrierung auszuführen.
- Bestehen Sie die Zertifizierung des Mobilfunkanbieters für Testfälle für die IMS-Einzelregistrierung.