IMS-Dienstberechtigung

Ab Android 12 unterstützt Android die Konfiguration der Dienstberechtigung TS.43, eine GSMA-Spezifikation, die den Schritt der Berechtigungsbestätigung für die Aktivierung von Diensten definiert. Dazu gehören Voice-over-Wi-Fi (VoWi-Fi), Voice-over-LTE (VoLTE), SMS über IP (SMSoIP), On-Device-Dienstaktivierung (ODSA) der eSIM-Begleitgeräte und der Datentarif des anfragenden Geräts.

Zur Unterstützung dieser Spezifikation bietet Android eine IMS-Dienstberechtigungsfunktion, mit der ein Dienstanbieter Mobilgeräte über den Status der IMS-Netzwerkdienste (IP Multimedia Subsystem) informieren kann. Mit dieser Berechtigungsfunktion kann das Gerät den Berechtigungsserver des Mobilfunkanbieters gemäß der GSMA TS.43-Spezifikation für den IMS-Berechtigungsstatus mithilfe der EAP-AKA-Authentifizierung abfragen, ohne dass Nutzer Anmeldedaten manuell eingeben müssen.

Mobilfunkanbieter mit IMS-Berechtigungsservern können die Funktion für IMS-Dienstberechtigungen für die Dienstbereitstellung verwenden. Die Verwendung der Funktion bietet folgende Vorteile:

  • Reduziert die Test- und Zertifizierungskosten für Mobilfunkanbieter, da diese Berechtigungsfunktion für mehrere Produkte und OEMs verwendet werden kann.
  • Reduziert den Entwicklungsaufwand für Gerätehersteller durch eine standardmäßige Android-App.
  • Da es sich um eine Open-Source-Funktion handelt, können Gerätehersteller und Mobilfunkanbieter Code für die Funktion beitragen.
  • Ermöglicht die Verwaltung der Notrufadresse für nordamerikanische Mobilfunkanbieter.

Architektur

Die folgende Abbildung beschreibt die Architektur und das Verhalten der Funktion für IMS-Dienstberechtigungen.

TS.43-Berechtigungsfunktion

Abbildung 1. TS.43-Architektur für Berechtigungsfunktionen

Wie in Abbildung 1 dargestellt, umfasst die Architektur der IMS-Dienstberechtigungsfunktion die folgenden Komponenten:

  • service_entitlement Statische TS.43 Service API-Bibliothek:Diese Bibliothek implementiert die TS.43-Spezifikation, interagiert mit dem Berechtigungsserver eines Mobilfunkanbieters und stellt für jeden TS.43-Anwendungsfall APIs bereit.
  • ImsServiceEntitlement Client-App:Diese App verwendet die TS.43 Service API. Die App implementiert UI-Elemente, einschließlich Webviews zum Rendern des Serviceportals des Mobilfunkanbieters, über das Nutzer Dienste aktivieren können. Außerdem interagiert sie mit anderen Android-Komponenten, um die Nutzerfreundlichkeit von Anfang bis Ende zu verwalten.

    Weitere Informationen zum Konfigurieren von Android für die Verwendung mit dem TS.43-basierten Berechtigungsserver eines Mobilfunkanbieters finden Sie unter ImsServiceEntitlement-App.

Die nummerierten Linien in Abbildung 1 zeigen, wie die Komponenten der Berechtigungsfunktion des IMS-Dienstes miteinander kommunizieren. Im Folgenden werden die einzelnen Schritte beschrieben:

(1) Die Client-App ruft die TS.43-Dienst-API auf, um eine Anfrage für die Berechtigung für einen Dienst zu starten.

(2) Die TS.43-Dienst-API sendet eine HTTP-Anfrage an den Berechtigungsserver des Mobilfunkanbieters, um eine EAP-AKA-Abfrage zu starten.

(3) Die TS.43-Dienst-API ruft Telefonie-APIs (z. B. getIccAuthentication) auf, um die EAP-AKA-Herausforderungsantwort abzuschließen.

(4) Der TS.43-Dienst empfängt vom Berechtigungsserver des Mobilfunkanbieters Dienstberechtigungen oder Konfigurationsdaten, nachdem die EAP-AKA-Antwort überprüft wurde.

(5) Der TS.43-Dienst gibt die Berechtigung für den Dienst oder die Konfigurationsdaten an die Clientanwendung zurück.

(6) Die Client-App verarbeitet die Daten und rendert optional das Serviceportal des Mobilfunkanbieters, damit der Nutzer die Dienstaktivierung abschließen kann.

Integration

In diesem Abschnitt wird die Integration der service_entitlement-Bibliothek und der ImsServiceEntitlement-Anwendung beschrieben.

Da es keine API-Abhängigkeit für Android 12 gibt, können die service_entitlement-Bibliothek und die ImsServiceEntitlement-App auf ältere Android-Plattformen zurückportiert werden.

service_entitlement library

Da die service_entitlement-Bibliothek statisch mit ImsServiceEntitlement app verknüpft ist, sind keine weiteren Schritte erforderlich, um die Bibliothek in die ImsServiceEntitlement-App einzubinden.

Die service_entitlement-Bibliothek kann in Ihre eigenen Apps für TS.43-Anwendungsfälle wie Datentarif und ODSA eingebunden werden. Die Bibliothek kann auch in eine App für Anwendungsfälle für Berechtigungen, die nicht auf TS.43 basieren, und die auf dem EAP-AKA-Protokoll basieren, eingebunden werden.

Im Folgenden werden die APIs beschrieben, die für solche Anwendungsfälle verwendet werden:

  • TS.43-App, die das in der Bibliothek implementierte TS.43-HTTP-Protokoll verwendet: Verwenden Sie die APIs in der Klasse ServiceEntitlement.
  • Nicht TS.43-Anwendung, die das in der Bibliothek implementierte EAP-AKA-Protokoll verwendet: Verwenden Sie die in der Klasse EapAkaHelper bereitgestellten APIs.

ImsServiceEntitlement-App

Android enthält standardmäßig die ImsServiceEntitlement App, die in der Produktpartition als privilegierte App installiert ist. Verwenden Sie die folgenden CarrierConfig-Schlüssel, um die App zu konfigurieren:

Schlüssel Wert
KEY_ENTITLEMENT_SERVER_URL_STRING URL des Berechtigungsservers des Mobilfunkanbieters. Das Präfix https:// muss enthalten sein.
KEY_FCM_SENDER_ID_STRING FCM-Sender-ID des Mobilfunkanbieters.

Legen Sie diesen Wert nicht fest, wenn FCM vom Mobilfunkanbieter nicht benötigt wird.
KEY_SHOW_VOWIFI_WEBVIEW_BOOL Legen Sie true fest, wenn der Mobilfunkanbieter eine Webportal-Benutzeroberfläche für die Registrierung von Nutzern für den VoWiFi-Dienst benötigt. Dazu gehört beispielsweise die Zustimmung zu den Nutzungsbedingungen oder die Eingabe einer Notfalladresse.

Dieser Schritt ist in der Regel für Mobilfunkanbieter in Nordamerika erforderlich.
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING
Legen Sie com.android.imsserviceentitlement/.WfcActivationActivity fest, wenn KEY_SHOW_VOWIFI_WEBVIEW_BOOL gleich true ist.
KEY_IMS_PROVISIONING_BOOL Legen Sie true fest, wenn der Mobilfunkanbieter die Netzwerkbereitstellung von IMS-Diensten (VoLTE/VoWiFi/SMSoIP) im Hintergrund erfordert.

Dieser Schritt ist für bestimmte europäische Fluggesellschaften erforderlich.
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL Wird auf true gesetzt, wenn KEY_IMS_PROVISIONING_BOOL gleich true ist.

Der HTTP-Traffic zum Berechtigungsserver und zum Webportal eines Mobilfunkanbieters erfolgt über das Standardnetzwerk, z. B. über die Standardmobildatenverbindung oder WLAN.

GMD-Partner:Die folgenden Mobilfunkanbieter werden von der TS.43-Berechtigungs-App unter Android 12 gemäß der Spezifikation für TS.43 v5.0 unterstützt:

  • USA: CSpire, US Cellular, Cellcom
  • Frankreich: Orange

Zusätzliche System-UI für die IMS-Bereitstellung

In diesem Abschnitt wird beschrieben, wie OEMs zusätzliche System-UI-Elemente zur Bereitstellung von IMS-Diensten unterstützen können, z. B. die Anzeige einer Benachrichtigung, wenn VoWiFi bereitgestellt wird.

Die ImsServiceEntitlement App legt den VoWiFi-Bereitstellungsstatus über die ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value)-System-API auf der Plattform fest. Diese API wird auch für VoLTE (mit KEY_VOLTE_PROVISIONING_STATUS) und SMSoIP (mit KEY_SMS_OVER_IP_ENABLED) verwendet.

Die System-UI kann den Bereitstellungsstatus dann mit getProvisioningIntValue oder durch Registrieren eines Rückrufs zum Überwachen der Änderung des Bereitstellungsstatus über registerProvisioningChangedCallback lesen.

Konfigurationen für Tests überschreiben

Mit den folgenden Verfahren können Sie das Verhalten der ImsServiceEntitlement-App zu Testzwecken vorübergehend ändern. Weitere Informationen zum Überschreiben von Mobilfunkanbieterkonfigurationen finden Sie unter Mobilfunkanbieterkonfigurationen überschreiben.

VoWLAN-Registrierung überspringen

Wenn Sie die VoWLAN-Registrierung überspringen und VoWLAN direkt aktivieren möchten, überschreiben Sie die Konfiguration des Mobilfunkanbieters KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING und geben Sie als Wert einen leeren String an.

IMS-Bereitstellung überspringen

Wenn Sie die IMS-Bereitstellung überspringen, IMS-Dienste verfügbar machen und Nutzern erlauben möchten, diese Dienste ohne Netzwerkbereitstellung zu aktivieren, überschreiben Sie die Mobilfunkanbieterkonfiguration KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL und legen Sie den Wert auf false fest.

URL des Berechtigungsservers ändern

Wenn du die Berechtigungsserver-URL ändern möchtest, überschreibe die Mobilfunkanbieterkonfiguration KEY_ENTITLEMENT_SERVER_URL_STRING und lege als Wert den erwarteten URL-String fest. Sie müssen das Präfix https:// angeben.

Mobilfunkanbieterkonfigurationen überschreiben

Ab Android 11 sind Befehle zum Überschreiben der Mobilfunkanbieterkonfiguration integriert und mit Root-Berechtigungen verfügbar.

Im folgenden Befehl wird der Konfigurationsschlüssel carrier_volte_provisioning_required_bool des Mobilfunkanbieters überschrieben und sein Wert auf false festgelegt. Sie können den Befehl mehrmals ausführen, um mehrere Konfigurationen zu überschreiben.

adb root
adb shell cmd phone cc set-value -p carrier_volte_provisioning_required_bool false

Verwenden Sie den folgenden Befehl, um alle Überschreibungen zu löschen:

adb shell cmd phone cc clear-values

Führen Sie den folgenden Befehl aus, um weitere Informationen zu erhalten:

adb shell cmd phone cc