IMS-Dienstberechtigung

Ab Android 12 unterstützt Android die TS.43-Spezifikation zur Konfiguration von Dienstberechtigungen. Diese Spezifikation der GSMA definiert den Schritt zur Überprüfung der Berechtigung für die Aktivierung von Diensten wie Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE), SMS over IP (SMSoIP), On-Device Service Activation (ODSA) von eSIM-Begleitgeräten (die mit dem anfragenden Gerät verknüpft sind) und Informationen zu Datentarifen.

Zur Unterstützung dieser Spezifikation bietet Android eine Funktion für IMS-Dienstberechtigungen, mit der ein Dienstanbieter Mobilgeräte über den Status von IMS-Netzwerkdiensten (IP Multimedia Subsystem) informieren kann. Mit dieser Berechtigungsfunktion kann das Gerät den Berechtigungsserver des Mobilfunkanbieters gemäß der GSMA TS.43-Spezifikation nach dem IMS-Berechtigungsstatus fragen. Dabei wird dieEAP-AKA-Authentifizierung verwendet, 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 Einführung 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 Standard-Android-App.
  • Ermöglicht Geräteherstellern und Mobilfunkanbietern, Code für die Funktion beizutragen, da sie Open Source ist.
  • Bietet eine Notadressenverwaltung 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 : Architektur der TS.43-Berechtigungsfunktion

Wie in Abbildung 1 dargestellt, umfasst die Architektur der Funktion für IMS-Dienstberechtigungen die folgenden Komponenten:

  • service_entitlement Statische Bibliothek der TS.43 Service API: Diese Bibliothek implementiert die TS.43-Spezifikation, interagiert mit dem Berechtigungsserver eines Mobilfunkanbieters und stellt App-orientierte APIs für jeden TS.43-Anwendungsfall bereit.
  • ImsServiceEntitlement Client-App: Diese App verwendet die TS.43 Service API. Die App implementiert UI-Elemente, einschließlich Webviews zum Rendern des Dienstportals des Mobilfunkanbieters, damit Nutzer Dienste aktivieren können. Außerdem interagiert sie mit anderen Android-Komponenten, um die Nutzererfahrung durchgängig zu verwalten.

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

Die nummerierten Linien in Abbildung 1 zeigen, wie die Komponenten der Funktion für IMS-Dienstberechtigungen miteinander kommunizieren. Im Folgenden werden die einzelnen Schritte beschrieben:

(1) Die Client-App ruft die TS.43 Service API auf, um eine Dienst berechtigungsanfrage zu initiieren.

(2) Die TS.43 Service API sendet eine HTTP-Anfrage an den Berechtigungsserver des Mobilfunkanbieters, um eine EAP-AKA-Challenge zu initiieren.

(3) Die TS.43 Service API ruft Telefonie-APIs auf (z. B. getIccAuthentication), um die EAP-AKA-Challenge-Antwort zu vervollständigen.

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

(5) Der TS.43-Dienst gibt die Dienstberechtigungs- oder Konfigurationsdaten an die Client-App zurück.

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

Integration

In diesem Abschnitt wird der Prozess zur Integration der Bibliothek service_entitlement und der App ImsServiceEntitlement beschrieben.

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

Bibliothek „service_entitlement“

Da die Bibliothek service_entitlement statisch mit der App ImsServiceEntitlement verknüpft ist, sind keine zusätzlichen Schritte erforderlich, um die Bibliothek in die App ImsServiceEntitlement zu integrieren.

Die Bibliothek service_entitlement kann in Ihre eigenen Apps für TS.43-Anwendungsfälle wie Datentarife und ODSA integriert werden. Die Bibliothek kann auch in eine App für Berechtigungsanwendungsfälle ohne TS.43-Spezifikation integriert werden, die auf dem EAP-AKA-Protokoll basieren.

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

  • TS.43-App mit dem in der Bibliothek implementierten TS.43 HTTP-Protokoll: Verwenden Sie die APIs in der Klasse ServiceEntitlement.
  • App ohne TS.43-Spezifikation mit dem in der Bibliothek implementierten EAP-AKA-Protokoll: Verwenden Sie die APIs, die in der Klasse EapAkaHelper verfügbar gemacht werden.

ImsServiceEntitlement-App

Standardmäßig ist die ImsServiceEntitlement App in Android als privilegierte App in der Produktpartition installiert. 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-Absender-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-UI benötigt, damit sich Nutzer für den VoWiFi-Dienst registrieren können. Beispielsweise um den Nutzungsbedingungen zuzustimmen oder eine Notadresse einzugeben.

Dies 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 auf true gesetzt ist.
KEY_IMS_PROVISIONING_BOOL Legen Sie true fest, wenn der Mobilfunkanbieter die Netzwerkbereitstellung von IMS-Diensten (VoLTE/VoWiFi/SMSoIP) im Hintergrund erfordert.

Dies ist für bestimmte europäische Mobilfunkanbieter erforderlich.
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL Legen Sie true fest, wenn KEY_IMS_PROVISIONING_BOOL auf true gesetzt ist.

Der HTTP-Traffic zu einem Berechtigungsserver und Webportal eines Mobilfunkanbieters erfolgt über das Standardnetzwerk, z. B. die Standard-Mobilfunkdaten oder WLAN.

GMS-Partner:Die folgenden Mobilfunkanbieter werden von der TS.43-Berechtigungs-App in Android 12 gemäß der TS.43-Spezifikation 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 im Zusammenhang mit der IMS-Dienstbereitstellung unterstützen können (z. B. wenn eine Benachrichtigung angezeigt wird, wenn VoWiFi bereitgestellt wird).

Die ImsServiceEntitlement App legt den VoWiFi-Bereitstellungsstatus mit der 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 lesen oder einen Callback registrieren, um die Änderung des Bereitstellungsstatus über registerProvisioningChangedCallback zu beobachten.

Konfigurationen für Tests überschreiben

Mit den folgenden Schritten können Sie das Verhalten der App ImsServiceEntitlement vorübergehend für Testzwecke ändern. Weitere Informationen zum Überschreiben von Mobilfunkanbieter konfigurationen finden Sie unter Mobilfunkanbieterkonfigurationen überschreiben.

VoWiFi-Registrierung überspringen

Wenn Sie die VoWiFi-Registrierung überspringen möchten, damit VoWiFi direkt aktiviert werden kann, überschreiben Sie die Mobilfunkanbieterkonfiguration KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING und legen Sie den Wert auf einen leeren String fest.

IMS-Bereitstellung überspringen

Wenn Sie die IMS-Bereitstellung überspringen möchten, damit IMS-Dienste verfügbar sind und Nutzer solche Dienste ohne Netzwerkbereitstellung aktivieren können, überschreiben Sie die Mobilfunkanbieterkonfiguration KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL und legen Sie den Wert auf false fest.

URL des Berechtigungsservers ändern

Wenn Sie die URL des Berechtigungsservers ändern möchten, überschreiben Sie die Mobilfunkanbieterkonfiguration KEY_ENTITLEMENT_SERVER_URL_STRING und legen Sie den Wert auf den erwarteten URL String fest. Das Präfix https:// muss enthalten sein.

Mobilfunkanbieterkonfigurationen überschreiben

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

Der folgende Befehl ist ein Beispiel dafür, wie Sie den Konfigurationsschlüssel carrier_volte_provisioning_required_bool des Mobilfunkanbieters überschreiben und den Wert auf false festlegen können. 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