Android 12 bietet Unterstützung für ein einzelnes Registrierungsmodell zur Bereitstellung von MMTEL- und RCS-Funktionen. Mit diesem Modell können alle IMS-Funktionen auf Geräten über eine einzige IMS-Registrierung verwaltet werden, die vom ImsService des Geräts bereitgestellt wird. Außerdem können die Anforderungen einiger Mobilfunkanbieter erfüllt werden. Im Vergleich zu einem Modell mit doppelter Registrierung, bei dem mehrere IMS-Registrierungen auf einem Gerät verwaltet werden, wird bei der Einzelregistrierung der Traffic im Netzwerk des Mobilfunkanbieters reduziert und die Zuverlässigkeit erhöht.
Android 12 unterstützt dieses Modell mit einer einzigen Registrierung über eine Architektur mit einer Reihe von APIs, mit denen der AOSP-Telefonie-Stack sowohl die von ImsService bereitgestellten MMTEL-Funktionen als auch die von der vom Nutzer ausgewählten RCS-Messaging-App bereitgestellten RCS-Funktionen verwalten kann. Um die IMS-Einzelregistrierung zu unterstützen, 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-Einzelregistrierungsmodells. Alle IMS-Apps verwenden den standardmäßigen ImsService des Geräts für MMTEL- und RCS-Funktionen über eine einzelne IMS-Registrierung. Dazu gehören die Bereitstellung, die Weiterleitung von SIP-Nachrichten und der Austausch von RCS-Nutzerfunktionen.
Abbildung 1. Modellarchitektur mit einmaliger Registrierung
Android 11 und niedriger unterstützen nur ein Modell mit doppelter Registrierung für die Bereitstellung von MMTEL- und RCS-Funktionen. Dabei wird MMTEL vom ImsService des Geräts bereitgestellt und RCS-Funktionen werden darüber implementiert und verwalten ihren eigenen IMS-Stack und ihre eigene Verbindung zum Netzwerk des Mobilfunkanbieters unabhängig.
Abbildung 2 veranschaulicht die Architektur für das Modell mit doppelter Registrierung. In diesem Modell ist jede App für die Verbindung mit dem 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 Mobilfunknetz und funktioniert unabhängig von anderen RCS-Apps.
Abbildung 2: Architektur des dualen Registrierungsmodells
IMS-APIs für die Einzelregistrierung
Geräte, die von Mobilfunkanbietern angeboten werden, die eine einzelne IMS-Registrierung erfordern, müssen die APIs für die einzelne IMS-Registrierung unterstützen und das Android-Feature PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION definieren.
In Abbildung 3 sind die APIs dargestellt, 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-App-APIs | IMS-APIs für Anbieter | 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 zur Berechtigungsprüfung verwendet. Der ImsService muss auch 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 einer RCS-App, zuerst bestimmte RCS-Funktions-Tags mit dem Gerät ImsService zu verknüpfen und dann SIP-Nachrichten und IMS-Registrierungsupdates zu senden und zu empfangen, die mit diesen RCS-Funktions-Tags verknüpft sind. |
| Benachrichtigungen zu dedizierten Bearern | ConnectivityManager | DataCallResponse | Ermöglicht einer App, QoS-Benachrichtigungen auf einem Socket zu empfangen, der einem bestimmten lokalen Port zugeordnet ist. |
| GBA-Authentifizierung | bootstrapAuthenticationRequest | GbaService | Ermöglicht einer RCS-App, sich beim Netzwerk zu authentifizieren und auf Schlüssel zuzugreifen, die für RCS-Funktionen wie die Dateiübertragung verwendet werden. |
| RCS-Funktionsaustausch | ImsRcsManager | RcsCapabilityExchangeImplBase | Ermöglicht AOSP, seine MMTEL- und RCS-Funktionen an den ImsService des Anbieters zu senden, damit sie unter einer Einheit im Netzwerk für den Austausch von RCS-Nutzerfunktionen veröffentlicht werden können. Ermöglicht es auch anderen Apps, die sich für die RCS-Funktionen eines oder mehrerer Kontakte interessieren, das Netzwerk nach den RCS-Funktionen der Kontakte zu fragen. |
Sicherheit und Berechtigungen
In Android 12 werden die folgenden Berechtigungen eingeführt, um einen sicheren Zugriff auf das Netzwerk des Mobilfunkanbieters und die Daten des Nutzers zu gewährleisten:
android.permission.PERFORM_IMS_SINGLE_REGISTRATIONandroid.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 die folgenden Voraussetzungen erfüllt sein:
- Die App muss als privilegierte App installiert werden. Das bedeutet, dass sie auf dem Gerät vorinstalliert ist und auf privilegierte Berechtigungen zugreifen darf.
- Die App muss mit
RoleManagerals Standard-SMS-Rolle des Nutzers festgelegt werden.
Wenn nicht beide Bedingungen 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 sie eine Zertifizierung des Mobilfunkanbieters auf dem Gerät erfordern.
Wenn die Berechtigung android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE einer App erteilt wird, die auch die Berechtigung „Kontakte“ hat, kann die App die RCS-Funktionen von Telefonnummern mit RcsUceAdapter anfordern.
Damit diese Berechtigung gewährt werden kann, muss Folgendes zutreffen:
- 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 als eine der folgenden
RoleManager-Rollen definiert werden:- Standard-Messaging-App: Vom Nutzer festgelegt.
- Standard-Telefon-App: Vom Nutzer festgelegt.
- Standard-Kontakte-App: Eine in Android 12 eingeführte Rolle, mit der der OEM einen Paketnamen über den Geräte-Overlay-Wert
config_systemContactsdefinieren 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 möchten, 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 im 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 und erhält die erforderlichen Berechtigungen für den Zugriff auf die IMS-APIs für die einmalige Registrierung.
Android bietet auch eine Beispielimplementierung von ImsService für RCS. Der Quellcode befindet sich unter /testapps/ImsTestService.
Implementierung
Weitere Implementierungsdetails finden Sie im Dokument IMS Single Registration in Android.
Validierung
So validieren Sie Ihre Implementierung der einmaligen Registrierung für IMS:
- Achten Sie darauf, dass die CTS-Testsuite CtsTelephonyTestCases bestanden wird.
- Installieren und führen Sie TestRcsApp aus, um während der Integration grundlegende Testläufe für die Einzelregistrierung durchzuführen.
- Bestehen der Betreiberzertifizierung für IMS-Testfälle für die Einzelregistrierung.