IMS-Einzelregistrierung

Android 12 führt die Unterstützung für ein einzelnes Registrierungsmodell zur 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. Verglichen mit einem dualen 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 einzelne Registrierungsmodell durch eine Architektur mit einer Reihe von APIs, die es dem AOSP-Telefonie-Stack ermöglichen, sowohl MMTEL-Funktionen, die von ImsService bereitgestellt werden, 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 verwenden den standardmäßigen ImsService des Geräts für MMTEL- und RCS-Funktionen über eine einzige IMS-Registrierung. Dies umfasst die Bereitstellung, die Weiterleitung von SIP-Nachrichten und den Austausch von RCS-Benutzerfähigkeiten.

Architektur mit Einzelregistrierungsmodus

Abbildung 1. Architektur des Einzelregistrierungsmodells

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

Abbildung 2 veranschaulicht die Architektur für das duale Registrierungsmodell. Bei diesem Modell ist jede App dafür verantwortlich, sich mit dem Netzwerk des Netzbetreibers zu verbinden 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ägernetz und arbeitet unabhängig von anderen RCS-Apps.

Architektur mit dualem Registrierungsmodus

Abbildung 2. Architektur des dualen Registrierungsmodells

IMS-Einzelregistrierungs-APIs

Geräte, die bei 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 . 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-Telefoniestapels 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 Bereitstellungsmanager ImsConfigImplBase Ermöglicht einem OEM oder Netzbetreiber, eine App bereitzustellen, um den RCS-Bereitstellungsstatus zu aktualisieren, wenn der Netzbetreiber einen proprietären Netzbetreiber-Berechtigungsmechanismus verwendet. Der ImsService muss auch den standardmäßigen AutoConfigurationServer (ACS) für die Bereitstellung für Netzbetreiber unterstützen, die keinen proprietären Mechanismus verwenden.
SIP-Nachrichtenweiterleitung SIPDelegateManager SIPTransportImplBase Ermöglicht einer RCS-Anwendung, zunächst 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 diesen RCS-Funktions-Tags zugeordnet sind.
Dedizierte Trägerbenachrichtigungen ConnectivityManager DataCallResponse Ermöglicht einer App, QoS-Benachrichtigungen auf einem Socket abzuhören, der einem bestimmten lokalen Port zugeordnet ist.
GBA-Authentifizierung bootstrapAuthenticationRequest GbaService Ermöglicht einer RCS-App, sich mit dem Netzwerk zu authentifizieren und auf Schlüssel zuzugreifen, die für RCS-Funktionen wie Dateiübertragung verwendet werden.
Austausch von RCS-Benutzerfähigkeiten ImsRcsManager RcsCapabilityExchangeImplBase Bietet AOSP die Möglichkeit, seine MMTEL- und RCS-Fähigkeiten an den Anbieter ImsService zu senden, damit sie unter einer Einheit im Netzwerk für den Austausch von RCS-Benutzerfähigkeiten veröffentlicht werden können. Ermöglicht auch anderen Apps, die an den RCS-Funktionen eines oder mehrerer Kontakte interessiert sind, das Netzwerk nach den RCS-Funktionen des Kontakts 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 android.permission.PERFORM_IMS_SINGLE_REGISTRATION muss von der Messaging-App mit den RCS-Funktionen definiert werden. Damit diese Erlaubnis erteilt wird, muss Folgendes zutreffen:

  • Die App muss als privilegierte Anwendung installiert werden, was bedeutet, dass sie auf dem Gerät vorinstalliert ist und auf privilegierte Berechtigungen zugreifen darf
  • 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 android.permission.PERFORM_IMS_SINGLE_REGISTRATION verweigert. Dies bedeutet, dass Apps von Drittanbietern nicht auf RCS-Einzelregistrierungs-APIs zugreifen dürfen, da sie eine Betreiberzertifizierung auf dem Gerät erfordern.

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

  • Die App muss als privilegierte Anwendung installiert werden, was 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 werden:

    • Standard-Messaging-App: Vom Benutzer festgelegt.
    • Standard-Dialer-App: Vom Benutzer festgelegt.
    • Standardkontakt-App: Eine in Android 12 eingeführte Rolle, die es dem OEM ermöglicht, einen Paketnamen über den config_systemContacts zu definieren, der der Kontakt-App des Geräts entsprechen muss. Diese App erhält dann die Kontakte-Rolle.

Um mit ConnectivityManager auf den IMS APN zuzugreifen, um den Datenverkehr einzurichten und zu verwalten, müssen Apps auch die android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS .

Beispiele und Quelle

Android stellt eine App in AOSP 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 Berechtigungen, die für den Zugriff auf die IMS-Einzelregistrierungs-APIs erforderlich sind.

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

Implementierung

Laden Sie für weitere Implementierungsdetails die IMS-Einzelregistrierung 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 bestanden wird.
  • Installieren Sie die TestRcsApp und führen Sie sie aus, um während der Integration einfache Einzelregistrierungs-Testfälle auszuführen.
  • Führen Sie die Carrier-Zertifizierung für IMS-Einzelregistrierungs-Testfälle durch.