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.
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