IMS-Dienstberechtigung

Ab Android 12 unterstützt Android die Konfiguration der Dienstberechtigung TS.43, eine GSMA-Spezifikation, die den Schritt zur Berechtigungsprüfung für die Aktivierung von Diensten definiert, einschließlich Voiceover-WLAN (VoWi-Fi), Voiceover-LTE (VoLTE), SMS über IP (SMSoIP), On-Device-Dienstaktivierung (ODSA) von eSIM-Begleitgeräten (mit dem anfragenden Gerät verknüpft) und Datentarif.

Zur Unterstützung dieser Spezifikation bietet Android eine Berechtigungsfunktion für IMS-Dienste, 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 in der GSMA TS.43-Spezifikation für den IMS-Berechtigungsstatus definierten Mobilfunkanbieter-Berechtigungsserver mithilfe der EAP-AKA-Authentifizierung abfragen, ohne dass Nutzer Anmeldedaten manuell eingeben müssen.

Mobilfunkanbieter mit IMS-Berechtigungsservern können das Berechtigungsfeature des IMS-Dienstes 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.
  • Ermöglicht Geräteherstellern und Mobilfunkanbietern, Code für die Funktion beizusteuern, da es sich um eine Open-Source-Funktion handelt.
  • Bietet die Verwaltung von Notfalladressen für nordamerikanische Mobilfunkanbieter.

Architektur

In der folgenden Abbildung werden die Architektur und das Verhalten des Berechtigungsfeatures des IMS-Dienstes beschrieben.

TS.43-Berechtigungsfunktion

Abbildung 1: Architektur der TS.43-Berechtigungsfunktionen

Wie in Abbildung 1 dargestellt, umfasst die Architektur des IMS-Dienstberechtigungsfeatures 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 für jeden TS.43-Anwendungsfall App-seitige APIs zur Verfügung.
  • ImsServiceEntitlement-Clientanwendung: Diese Anwendung verwendet die TS.43 Service API. Die App implementiert UI-Elemente, einschließlich WebViews, um das Dienstportal des Mobilfunkanbieters zu rendern, damit Nutzer Dienste aktivieren und mit anderen Android-Komponenten interagieren können, um die gesamte Nutzererfahrung zu verwalten.

    Weitere Informationen zum Konfigurieren von Android für den TS.43-basierten Berechtigungsserver eines Mobilfunkanbieters findest du unter ImsServiceEntitlement.

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

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

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

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

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

(5) Der TS.43-Dienst gibt die Dienstberechtigung oder die 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 Aktivierung des Dienstes 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.

Bibliothek „service_entitlement“

Da die Bibliothek service_entitlement statisch mit der ImsServiceEntitlement app verknüpft ist, sind keine zusätzlichen Schritte für die Einbindung der Bibliothek in die ImsServiceEntitlement-Anwendung erforderlich.

Die service_entitlement-Bibliothek kann in Ihre eigenen Anwendungen für TS.43-Anwendungsfälle wie Datentarife und ODSA eingebunden werden. Die Bibliothek kann auch in eine Anwendung für Nicht-TS.43-Berechtigungen auf der Grundlage des EAP-Protokolls integriert werden.

Im Folgenden werden die APIs beschrieben, die in solchen Anwendungsfällen verwendet werden können:

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

ImsServiceEntitlement-App

Standardmäßig nimmt Android die in der Produktpartition installierte ImsServiceEntitlement-App als privilegierte Anwendung auf. Verwenden Sie die folgenden CarrierConfig-Schlüssel, um die App zu konfigurieren:

Schlüssel Antwort
KEY_ENTITLEMENT_SERVER_URL_STRING URL des Berechtigungsservers des Anbieters. 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 nicht vom Mobilfunkanbieter gefordert wird.
KEY_SHOW_VOWIFI_WEBVIEW_BOOL Legen Sie true fest, wenn der Mobilfunkanbieter eine Webportal-UI benötigt, über die sich Nutzer für den VoWLAN-Dienst registrieren können. Zum Beispiel die Zustimmung zu Nutzungsbedingungen oder die Eingabe einer Notfalladresse.

Dies ist in der Regel von Mobilfunkanbietern 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 eine Netzwerkbereitstellung von IMS-Diensten (VoLTE/VoWiFi/SMSoIP) im Hintergrund erfordert.

Diese Vorgabe ist für bestimmte europäische Mobilfunkanbieter erforderlich.
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL Legen Sie true fest, wenn KEY_IMS_PROVISIONING_BOOL gleich true ist.

Der HTTP-Traffic zum Berechtigungsserver und zum Webportal eines Mobilfunkanbieters läuft über das Standardnetzwerk, z. B. mobile Daten 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 im Zusammenhang mit der IMS-Dienstbereitstellung unterstützen können (z. B. wenn eine Benachrichtigung angezeigt wird, wenn VoWLAN bereitgestellt wird).

Die Anwendung ImsServiceEntitlement legt mithilfe der System-API ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value) den VoWLAN-Bereitstellungsstatus 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 dann den Bereitstellungsstatus mit getProvisioningIntValue oder durch Registrieren eines Callbacks lesen, 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-Anwendung vorübergehend zu Testzwecken ändern. Weitere Informationen zum Überschreiben von Mobilfunkanbieterkonfigurationen finden Sie unter Mobilfunkanbieterkonfigurationen überschreiben.

VoWi-Fi-Registrierung überspringen

Wenn Sie die VoWi-Fi-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 ermöglichen möchten, diese Dienste ohne Netzwerkbereitstellung zu aktivieren, überschreiben Sie die Konfiguration des Mobilfunkanbieters KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL und legen Sie den Wert auf false fest.

Berechtigungsserver-URL ä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 Mobilfunkanbieter-Konfiguration integriert und mit Root-Berechtigungen verfügbar.

Der folgende Befehl ist ein Beispiel dafür, wie Sie den Konfigurationsschlüssel für Mobilfunkanbieter carrier_volte_provisioning_required_bool überschreiben und seinen Wert auf false festlegen. 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 abzurufen:

adb shell cmd phone cc