IMS-Einzelregistrierung

Android 12 führt die Unterstützung eines einzigen Registrierungsmodells für die Bereitstellung von MMTEL- und RCS-Funktionen ein. Dieses Modell ermöglicht es Geräten, alle IMS-Funktionen über eine einzige IMS-Registrierung zu verwalten, die vom ImsService des Geräts bereitgestellt wird, und die von einigen Telekommunikationsanbietern eingeführten Anforderungen zu erfüllen. Im Vergleich zu einem Dual-Registrierungsmodell, bei dem mehrere IMS-Registrierungen auf einem Gerät verwaltet werden, reduziert die Einzelregistrierung den Datenverkehr im Netzwerk des Netzbetreibers und erhöht die Zuverlässigkeit.

Android 12 unterstützt dieses Einzelregistrierungsmodell durch eine Architektur mit einer Reihe von APIs, die es dem AOSP-Telefonie-Stack ermöglichen, sowohl MMTEL-Funktionen von ImsService als auch RCS-Funktionen zu verwalten, die von der vom Benutzer ausgewählten RCS-Messaging-App bereitgestellt werden. Um die IMS-Einzelregistrierung zu unterstützen, müssen Gerätehersteller und SoC-Anbieter diese APIs implementieren, um RCS-Funktionen in der vom Benutzer ausgewählten RCS-Messaging-App zu aktivieren.

Abbildung 1 zeigt den IMS-Stack des Geräts bei Verwendung des IMS-Einzelregistrierungsmodells. Alle IMS-Anwendungen nutzen den standardmäßigen ImsService des Geräts für MMTEL- und RCS-Funktionen über eine einzige IMS-Registrierung. Dazu gehören die Bereitstellung, die Weiterleitung von SIP-Nachrichten und der RCS-Benutzerfähigkeitsaustausch.

Architektur im Einzelregistrierungsmodus

Abbildung 1. Architektur des Einzelregistrierungsmodells

Android 11 und niedriger unterstützt nur ein Dual-Registrierungsmodell für die Bereitstellung von MMTEL- und RCS-Funktionen, wobei MMTEL vom ImsService des Geräts bereitgestellt wird und RCS-Funktionen darüber implementiert werden und ihren eigenen IMS-Stack und die Verbindung zum Netz des Netzbetreibers unabhängig verwalten.

Abbildung 2 zeigt die Architektur für das Dual-Registrierungsmodell. In diesem Modell ist jede App dafür verantwortlich, eine Verbindung zum Netzwerk des Netzbetreibers herzustellen und eine IMS-Registrierung für MMTEL- und RCS-Funktionen einzurichten. Der ImsService des Geräts implementiert MMTEL, nutzt die IMS-Datenverbindung des Geräts zum Trägernetzwerk und arbeitet unabhängig von anderen RCS-Apps.

Architektur mit dualem Registrierungsmodus

Abbildung 2. Architektur des Dual-Registrierungsmodells

IMS-Einzelregistrierungs-APIs

Geräte, die von Netzbetreibern betrieben werden, die eine IMS-Einzelregistrierung erfordern, müssen die IMS-Einzelregistrierungs-APIs 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. 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-Anwendungs-APIs IMS-APIs des Anbieters Beschreibung
RCS-Bereitstellung ProvisioningManager ImsConfigImplBase Ermöglicht einem OEM oder Netzbetreiber die Bereitstellung einer App zum Aktualisieren des RCS-Bereitstellungsstatus, wenn der Netzbetreiber einen proprietären Netzbetreiber-Berechtigungsmechanismus verwendet. Der ImsService muss außerdem den Standard-AutoConfigurationServer (ACS) für die Bereitstellung für Netzbetreiber unterstützen, die keinen proprietären Mechanismus verwenden.
Weiterleitung von SIP-Nachrichten SipDelegateManager SipTransportImplBase Ermöglicht einer RCS-Anwendung, zunächst bestimmte RCS-Feature-Tags mit dem Gerät ImsService zu verknüpfen und dann SIP-Nachrichten und IMS-Registrierungsaktualisierungen zu senden und zu empfangen, die diesen RCS-Feature-Tags zugeordnet sind.
Dedizierte Trägerbenachrichtigungen ConnectivityManager DataCallResponse Ermöglicht einer App, QoS-Benachrichtigungen an einem Socket abzuhören, der einem bestimmten lokalen Port zugeordnet ist.
GBA-Authentifizierung BootstrapAuthenticationRequest GbaService Ermöglicht einer RCS-App die Authentifizierung mit dem Netzwerk und den Zugriffsschlüsseln, die für RCS-Funktionen wie die Dateiübertragung verwendet werden.
RCS-Benutzerfähigkeitsaustausch ImsRcsManager RcsCapabilityExchangeImplBase Bietet AOSP die Möglichkeit, seine MMTEL- und RCS-Funktionen an den Anbieter ImsService zu senden, damit sie unter einer Entität im Netzwerk für den Austausch von RCS-Benutzerfunktionen veröffentlicht werden können. Ermöglicht außerdem anderen Apps, die an den RCS-Funktionen eines oder mehrerer Kontakte interessiert sind, das Netzwerk nach den RCS-Funktionen der Kontakte abzufragen.

Sicherheit und Berechtigungen

Android 12 führt die folgenden Berechtigungen ein, um einen sicheren Zugriff auf das Netzwerk des Netzbetreibers und die Benutzerdaten zu gewährleisten:

Die Berechtigung android.permission.PERFORM_IMS_SINGLE_REGISTRATION muss von der Messaging-App mit den RCS-Funktionen definiert werden. Damit diese Erlaubnis erteilt werden kann, muss Folgendes zutreffen:

  • Die App muss als privilegierte Anwendung installiert werden, das heißt, sie ist auf dem Gerät vorinstalliert und darf auf privilegierte Berechtigungen zugreifen
  • Die App muss mithilfe von RoleManager als Standard-SMS-Rolle des Benutzers 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. Dies bedeutet, dass Apps von Drittanbietern nicht auf RCS-Einzelregistrierungs-APIs zugreifen dürfen, da sie eine Netzbetreiberzertifizierung auf dem Gerät erfordern.

Wenn die Berechtigung android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE einer App gewährt wird, die auch über die Berechtigung READ_CONTACTS verfügt, kann die App die RCS-Funktionen von Telefonnummern mithilfe von RcsUceAdapter anfordern. Damit diese Erlaubnis erteilt werden kann, muss Folgendes zutreffen:

  • Die App muss als privilegierte Anwendung installiert werden, das heißt, sie ist auf dem Gerät vorinstalliert und darf auf privilegierte Berechtigungen zugreifen.
  • Die App muss als eine der folgenden RoleManager Rollen definiert sein:

    • Standard-Messaging-App: Vom Benutzer festgelegt.
    • Standard-Dialer-App: Vom Benutzer festgelegt.
    • Standard-Kontakt-App: Eine in Android 12 eingeführte Rolle, die 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. Dieser App wird dann die Kontaktrolle zugewiesen.

Um mithilfe ConnectivityManager auf den IMS-APN zuzugreifen und den Datenverkehr einzurichten und zu verwalten, müssen Apps außerdem die Berechtigung android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS anfordern.

Beispiele und Quelle

Android stellt in AOSP eine App bereit, 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 Benutzers festgelegt werden und verfügt über die erforderlichen Berechtigungen für den Zugriff auf die IMS-Einzelregistrierungs-APIs.

Android bietet außerdem eine Beispielimplementierung von ImsService für RCS. Der Quellcode befindet sich unter /testapps/ImsTestService .

Implementierung

Für weitere Implementierungsdetails laden Sie IMS Single Registration in Android herunter.

Validierung

Gehen Sie wie folgt vor, um Ihre Implementierung der IMS-Einzelregistrierung zu validieren:

  • Stellen Sie sicher, dass die CTS-Testsuite CtsTelephonyTestCases erfolgreich ist.
  • Installieren Sie die TestRcsApp und führen Sie sie aus, um während der Integration grundlegende Einzelregistrierungstestfälle auszuführen.
  • Bestehen Sie die Carrier-Zertifizierung für IMS-Einzelregistrierungstestfälle.