Ab Android 12 enthält Android Unterstützung für TS.43 Service Entitlement Configuration , eine GSMA-Spezifikation, die den Berechtigungsüberprüfungsschritt für die Aktivierung von Diensten definiert, einschließlich Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE) , SMS over IP (SMSoIP), On-Device Service Activation (ODSA) von eSIM-Begleitgeräten (die dem anfragenden Gerät zugeordnet sind) und Datenplaninformationen.
Um diese Spezifikation zu unterstützen, stellt Android eine IMS-Dienstberechtigungsfunktion bereit, die es einem Dienstanbieter ermöglicht, Mobilgeräte über den Status von IP Multimedia Subsystem (IMS)-Netzwerkdiensten zu informieren. Diese Berechtigungsfunktion ermöglicht es dem Gerät, den Berechtigungsserver des Netzbetreibers gemäß Definition in der Spezifikation GSMA TS.43 nach dem IMS-Berechtigungsstatus unter Verwendung der EAP-AKA-Authentifizierung abzufragen, ohne dass Benutzer manuell irgendwelche Anmeldeinformationen eingeben müssen.
Netzbetreiber mit IMS-Berechtigungsservern können die IMS-Dienstberechtigungsfunktion für die Dienstbereitstellung verwenden. Die Übernahme der Funktion bietet die folgenden Vorteile:
- Reduziert die Test- und Zertifizierungskosten für Spediteure, 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 Netzbetreibern, Code für die Funktion beizusteuern, da die Funktion Open Source ist.
- Bietet Notfall-Adressverwaltung für nordamerikanische Spediteure.
Die Architektur
Die folgende Abbildung beschreibt die Architektur und das Verhalten der IMS-Dienstberechtigungsfunktion.
Abbildung 1. Architektur der TS.43-Berechtigungsfunktion
Wie in Abbildung 1 gezeigt, umfasst die Architektur der IMS-Dienstberechtigungsfunktion die folgenden Komponenten:
-
service_entitlement
Statische Bibliothek der TS.43-Service-API : Diese Bibliothek implementiert die TS.43-Spezifikation, interagiert mit dem Berechtigungsserver eines Netzbetreibers und stellt App-orientierte APIs für jeden TS.43-Anwendungsfall bereit. ImsServiceEntitlement
Client-App: Diese App verwendet die TS.43-Dienst-API. Die App implementiert UI-Elemente einschließlich Webansichten zum Rendern des Serviceportals des Netzbetreibers, damit Benutzer Dienste aktivieren können, und interagiert mit anderen Android-Komponenten, um die Benutzererfahrung von Anfang bis Ende zu verwalten.Weitere Informationen zum Konfigurieren von Android für die Zusammenarbeit mit dem TS.43-basierten Berechtigungsserver eines Netzbetreibers finden Sie unter ImsServiceEntitlement-App .
Die nummerierten Zeilen in Abbildung 1 zeigen, wie die Komponenten der IMS-Dienstberechtigungsfunktion miteinander kommunizieren. Im Folgenden wird jeder der Schritte wie gekennzeichnet beschrieben:
(1) Die Client-App ruft die TS.43-Dienst-API auf, um eine Dienstberechtigungsanforderung zu initiieren.
(2) Die TS.43-Dienst-API sendet eine HTTP-Anforderung an den Berechtigungsserver des Netzbetreibers, um eine EAP-AKA-Abfrage zu initiieren.
(3) Die TS.43-Dienst-API ruft Telefonie-APIs (z. B. getIccAuthentication
) auf, um die EAP-AKA-Challenge-Response abzuschließen.
(4) Der TS.43-Dienst empfängt Dienstberechtigungs- oder Konfigurationsdaten vom Berechtigungsserver des Netzbetreibers, nachdem die EAP-AKA-Antwort verifiziert wurde.
(5) Der TS.43-Dienst gibt die Dienstberechtigungs- oder Konfigurationsdaten an die Client-App zurück.
(6) Die Client-App handhabt die Daten und stellt optional das Dienstportal des Netzbetreibers bereit, damit der Benutzer die Dienstaktivierung abschließen kann.
Integration
In diesem Abschnitt wird der Prozess zum Integrieren der service_entitlement
Bibliothek und der ImsServiceEntitlement
App beschrieben.
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 mit der ImsServiceEntitlement app
verknüpft ist, sind keine zusätzlichen Schritte zum Integrieren der Bibliothek in die ImsServiceEntitlement
App erforderlich.
Die service_entitlement
Bibliothek kann in Ihre eigenen Apps für TS.43-Anwendungsfälle wie Datenplan und ODSA integriert werden. Die Bibliothek kann auch in eine App für Nicht-TS.43-Berechtigungsanwendungsfälle basierend auf dem EAP-AKA-Protokoll integriert werden.
Im Folgenden werden die für solche Anwendungsfälle zu verwendenden APIs beschrieben:
- TS.43-App, die das in der Bibliothek implementierte TS.43-HTTP-Protokoll verwendet: Verwenden Sie die APIs in der
ServiceEntitlement
-Klasse - Nicht-TS.43-App, die das in der Bibliothek implementierte EAP-AKA-Protokoll verwendet: Verwenden Sie die in der
EapAkaHelper
-Klasse bereitgestellten APIs
ImsServiceEntitlement-App
Standardmäßig enthält Android die App ImsServiceEntitlement
, die in der Produktpartition als privilegierte App installiert ist. Um die App zu konfigurieren, verwenden Sie die folgenden CarrierConfig-Schlüssel:
Taste | Wert |
---|---|
KEY_ENTITLEMENT_SERVER_URL_STRING | URL des Berechtigungsservers des Netzbetreibers. Das Präfix https:// muss enthalten sein. |
KEY_FCM_SENDER_ID_STRING | FCM-Absender-ID des Spediteurs. Legen Sie diesen Wert nicht fest, wenn FCM vom Netzbetreiber nicht verlangt wird. |
KEY_SHOW_VOWIFI_WEBVIEW_BOOL | Auf „ true “ setzen, wenn der Netzbetreiber eine Webportal-Benutzeroberfläche benötigt, damit Benutzer sich für den VoWiFi-Dienst anmelden können. Zum Beispiel die Zustimmung zu den Allgemeinen Geschäftsbedingungen oder die Eingabe einer Notfalladresse.Dies wird in der Regel von Spediteuren in Nordamerika verlangt. |
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING | Auf com.android.imsserviceentitlement/.WfcActivationActivity , wenn KEY_SHOW_VOWIFI_WEBVIEW_BOOL true ist. |
KEY_IMS_PROVISIONING_BOOL | Auf „ true “ setzen, wenn der Netzbetreiber die Netzwerkbereitstellung von IMS-Diensten (VoLTE/VoWiFi/SMSoIP) im Hintergrund erfordert.Dies wird von bestimmten europäischen Transportunternehmen verlangt. |
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL | Auf true gesetzt, wenn KEY_IMS_PROVISIONING_BOOL true ist. |
Der HTTP-Datenverkehr zum Berechtigungsserver und Webportal eines Netzbetreibers erfolgt über das Standardnetzwerk, z. B. standardmäßige mobile Daten oder Wi-Fi.
GMS-Partner: Die folgenden Netzbetreiber werden von der TS.43-Berechtigungs-App in Android 12 gemäß der TS.43 v5.0-Spezifikation unterstützt:
- USA: CSpire, US-Mobilfunk, 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 Bereitstellung von IMS-Diensten 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)
in 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 Benutzeroberfläche des Systems kann dann den Bereitstellungsstatus lesen, indem sie getProvisioningIntValue
verwendet oder einen Rückruf registriert, um die Änderung des Bereitstellungsstatus über registerProvisioningChangedCallback
zu überwachen.
Überschreiben von Konfigurationen zum Testen
Verwenden Sie die folgenden Verfahren, um das Verhalten der ImsServiceEntitlement
App zu Testzwecken vorübergehend zu ändern. Einzelheiten zum Überschreiben von Trägerkonfigurationen finden Sie unter Überschreiben von Trägerkonfigurationen .
Überspringen des VoWiFi-Anmeldevorgangs
Um den VoWiFi-Anmeldeprozess zu überspringen und VoWiFi direkt einzuschalten, überschreiben Sie die KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING
und setzen ihren Wert auf eine leere Zeichenfolge.
Überspringen der IMS-Bereitstellung
Um die IMS-Bereitstellung zu überspringen, IMS-Dienste verfügbar zu machen und es Benutzern zu ermöglichen, solche Dienste ohne Netzwerkbereitstellung zu aktivieren, überschreiben Sie die Betreiberkonfiguration KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL
und setzen Sie ihren Wert auf false
.
Ändern der URL des Berechtigungsservers
Um die URL des Berechtigungsservers zu ändern, überschreiben Sie die Betreiberkonfiguration KEY_ENTITLEMENT_SERVER_URL_STRING
und setzen Sie ihren Wert auf die erwartete URL-Zeichenfolge. Sie müssen das Präfix https://
einfügen.
Überschreiben von Trägerkonfigurationen
Ab Android 11 sind Befehle zum Überschreiben der Netzbetreiberkonfiguration integriert und mit Root-Rechten verfügbar.
Der folgende Befehl ist ein Beispiel dafür, wie der Carrier-Konfigurationsschlüssel carrier_volte_provisioning_required_bool
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 Außerkraftsetzungen zu löschen:
adb shell cmd phone cc clear-values
Um weitere Informationen zu erhalten, führen Sie den folgenden Befehl aus:
adb shell cmd phone cc