Mit Android 12 wird ein einzelnes Registrierungsmodell für die Bereitstellung von MMTEL- und RCS-Funktionen eingeführt. Mit diesem Modell können alle IMS-Funktionen über eine einzelne IMS-Registrierung verwaltet werden, die vom ImsService des Geräts bereitgestellt wird. Außerdem wird so den Anforderungen einiger Telekommunikationsanbieter entsprochen. 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 mit nur einer Registrierung über eine Architektur mit einer Reihe von APIs, mit denen der AOSP-Telefonie-Stack sowohl MMTEL-Funktionen von ImsService als auch RCS-Funktionen der vom Nutzer ausgewählten RCS-Messaging-App 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: Architektur des Modells für die einmalige Registrierung
Android 11 und niedriger unterstützen nur ein Modell mit doppelter Registrierung für die Bereitstellung von MMTEL- und RCS-Funktionen. MMTEL wird vom ImsService des Geräts bereitgestellt und RCS-Funktionen werden darüber implementiert und verwalten ihren eigenen IMS-Stack und die 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 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 die Einzelregistrierung
Geräte, die von Mobilfunkanbietern angeboten werden, für die eine einzelne IMS-Registrierung erforderlich ist, müssen die APIs für die einzelne IMS-Registrierung unterstützen und das Android-Feature 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 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 bereitzustellen, um den RCS-Bereitstellungsstatus zu aktualisieren, wenn der Mobilfunkanbieter einen proprietären Berechtigungsmechanismus verwendet. Der ImsService muss auch den Standard-ACS (AutoConfigurationServer) 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 an einem Socket zu empfangen, der einem bestimmten lokalen Port zugeordnet ist. |
| GBA-Authentifizierung | bootstrapAuthenticationRequest | GbaService | Ermöglicht einer RCS-App, sich im 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 an das Netzwerk für den Austausch von RCS-Nutzerfunktionen gesendet 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 erteilt werden kann, muss Folgendes zutreffen:
- 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-App 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 diese 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 READ_CONTACTS hat, kann die App mit RcsUceAdapter die RCS-Funktionen von Telefonnummern anfordern.
Damit diese Berechtigung erteilt werden kann, muss Folgendes zutreffen:
- 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 als eine der folgenden
RoleManager-Rollen definiert sein:- 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 hat die Berechtigungen, die für den Zugriff auf die IMS-Single-Registration-APIs erforderlich sind.
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.
Zertifizierungsstufe
So prüfen Sie die Implementierung der IMS-Einzelregistrierung:
- Achten Sie darauf, dass die CTS-Testsuite CtsTelephonyTestCases bestanden wird.
- Installieren und führen Sie TestRcsApp aus, um während der Integration grundlegende Testfälle für die Einzelregistrierung auszuführen.
- Bestehen der Betreiberzertifizierung für IMS-Testläufe für die Einzelregistrierung.