IMS-Dienstberechtigung

Ab Android 12 unterstützt Android die TS.43-Konfiguration für die Berechtigung für Dienste, eine GSMA-Spezifikation, die den Schritt zur Überprüfung der Berechtigung für die Aktivierung von Diensten definiert, darunter 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 zum Datentarif.

Zur Unterstützung dieser Spezifikation bietet Android eine IMS-Dienstberechtigungsfunktion, 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, wie in der GSMA TS.43-Spezifikation definiert, nach dem IMS-Berechtigungsstatus fragen. Dabei wird die EAP-AKA-Authentifizierung verwendet, ohne dass Nutzer Anmeldedaten manuell eingeben müssen.

Mobilfunkanbieter mit IMS-Berechtigungsservern können die IMS-Dienstberechtigungsfunktion 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 standardmäßige Android-App.
  • Da die Funktion Open Source ist, können Gerätehersteller und Mobilfunkanbieter Code für die Funktion beitragen.
  • Bietet die Verwaltung von Notfalladressen für nordamerikanische Mobilfunkanbieter.

Architektur

Die folgende Abbildung zeigt die Architektur und das Verhalten der IMS-Dienstberechtigungsfunktion.

TS.43-Berechtigungsfunktion

Abbildung 1: TS.43 – Architektur des Berechtigungsfeatures

Wie in Abbildung 1 dargestellt, umfasst die Architektur des IMS-Dienstberechtigungs-Features die folgenden Komponenten:

  • service_entitlement TS.43 Service API-Statikbibliothek: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 Serviceportals des Mobilfunkanbieters für Nutzer, um Dienste zu aktivieren, und interagiert mit anderen Android-Komponenten, um die Nutzerfreundlichkeit von Anfang bis Ende 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 IMS-Dienstberechtigungsfunktion 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-Challenge zu starten.

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

4. Der TS.43-Dienst empfängt nach der Bestätigung der EAP-AKA-Antwort Berechtigungs- oder Konfigurationsdaten vom Berechtigungsserver des Mobilfunkanbieters.

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

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

Integration

In diesem Abschnitt wird beschrieben, wie Sie die service_entitlement-Bibliothek und die ImsServiceEntitlement-App einbinden.

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

service_entitlement-Bibliothek

Da die service_entitlement-Bibliothek statisch in die ImsServiceEntitlement app eingebunden ist, sind keine zusätzlichen 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 Berechtigungsanwendungsfälle, die nicht TS.43 entsprechen, auf Grundlage des EAP-AKA-Protokolls eingebunden werden.

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

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

ImsServiceEntitlement-App

Standardmäßig ist die ImsServiceEntitlement App, die in der Produktpartition installiert ist, eine privilegierte App. Verwenden Sie die folgenden CarrierConfig-Schlüssel, um die App zu konfigurieren:

Schlüssel Wert
KEY_ENTITLEMENT_SERVER_URL_STRING URL des Bezugsservers 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 Auf true setzen, wenn der Mobilfunkanbieter eine Webportal-Benutzeroberfläche für Nutzer benötigt, um sich für den WLAN-Anrufdienst zu registrieren. Das kann z. B. die Zustimmung zu Nutzungsbedingungen oder die Eingabe einer Notfalladresse sein.

Dies ist in der Regel bei Mobilfunkanbietern in Nordamerika erforderlich.
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING
Wird auf com.android.imsserviceentitlement/.WfcActivationActivity gesetzt, wenn KEY_SHOW_VOWIFI_WEBVIEW_BOOL gleich true ist.
KEY_IMS_PROVISIONING_BOOL Auf true setzen, wenn der Mobilfunkanbieter die Netzwerkbereitstellung von IMS-Diensten (VoLTE/VoWiFi/SMSoIP) im Hintergrund erfordert.

Dies ist bei bestimmten europäischen Mobilfunkanbietern 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 Webportal eines Mobilfunkanbieters erfolgt über das Standardnetzwerk, z. B. über 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 Elemente der System-UI 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 mithilfe der System-API ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value) 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 überwachen.

Konfigurationen für Tests überschreiben

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

VoWLAN-Registrierung überspringen

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

IMS-Bereitstellung überspringen

Wenn Sie die IMS-Bereitstellung überspringen möchten, um IMS-Dienste verfügbar zu machen und Nutzern zu ermöglichen, solche Dienste ohne Netzwerkbereitstellung zu aktivieren, überschreiben Sie die Carrier-Konfiguration KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL und legen Sie ihren Wert auf false fest.

Berechtigungsserver-URL ändern

Wenn Sie die Berechtigungsserver-URL ändern möchten, überschreiben Sie die Betreiberkonfiguration KEY_ENTITLEMENT_SERVER_URL_STRING und legen Sie ihren Wert auf den erwarteten URL-String fest. Sie müssen das Präfix https:// angeben.

Mobilfunkanbieter-Konfigurationen überschreiben

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

Der folgende Befehl ist ein Beispiel dafür, wie der Schlüssel carrier_volte_provisioning_required_bool der Carrier-Konfiguration überschrieben und sein Wert auf false gesetzt wird. 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