IMS-Einzelregistrierung

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.

Architektur des Einzelregistrierungsmodus

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.

Architektur des Dual-Registrierungsmodus

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.

API-Oberflächen, 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:

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.