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. Dies umfasst die Bereitstellung, die SIP-Nachrichtenweiterleitung und den RCS-Nutzerfunktionsaustausch.
Abbildung 1. Architektur des Modells mit einer einzigen Registrierung
Android 11 und niedriger unterstützen nur ein Dual-Registrierungsmodell für die Bereitstellung von MMTEL- und RCS-Funktionen, wobei MMTEL von den ImsService- und RCS-Funktionen des Geräts bereitgestellt wird. Diese werden über dem Gerät implementiert und verwalten ihren eigenen IMS-Stack und die Verbindung zum Netzwerk des Mobilfunkanbieters unabhängig.
Abbildung 2 zeigt die Architektur für das Modell mit doppelter Registrierung. Bei diesem Modell ist jede Anwendung dafür verantwortlich, eine Verbindung zum Netzwerk des Mobilfunkanbieters herzustellen und eine IMS-Registrierung für MMTEL- und RCS-Funktionen einzurichten. 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
IMS-APIs für eine einzelne Registrierung
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 auf hoher Ebene, die die IMS-Einzelregistrierung unterstützen
Android-Geräte, die eine IMS-Einzelregistrierung als Teil des AOSP-Telefoniestacks unterstützen, müssen alle in der folgenden Tabelle beschriebenen AOSP APIs unterstützen.
API-Oberfläche | RCS-Anwendungs-APIs | Anbieter IMS APIs | Beschreibung |
---|---|---|---|
RCS-Bereitstellung | ProvisioningManager | ImsConfigImplBase | Ermöglicht einem OEM oder Mobilfunkanbieter, eine App zum Aktualisieren des RCS-Bereitstellungsstatus bereitzustellen, wenn der Mobilfunkanbieter einen proprietären Mechanismus zum Berechtigungsanspruch des Mobilfunkanbieters 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 dedizierten Inhabern | 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-Nutzerfähigkeiten | 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 ist auf dem Gerät vorinstalliert und darf auf privilegierte Berechtigungen zugreifen
- Die App muss mithilfe von
RoleManager
als Standard-SMS-Rolle des Nutzers 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. 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 werden, d. h., sie ist auf dem Gerät vorinstalliert und darf auf privilegierte Berechtigungen zugreifen.
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-App für Kontakte: Eine in Android 12 eingeführte Rolle, mit der der OEM einen Paketnamen über den Geräte-Overlay-Wert
config_systemContacts
definieren kann, der der Kontakte-App des Geräts entsprechen muss. Dieser App wird dann die Rolle „Kontakte“ zugewiesen.
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 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 Nutzers festgelegt werden. Sie hat dann die Berechtigungen, die für den Zugriff auf die IMS-APIs für die einmalige Registrierung 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.