Auf Geräten mit Android 12 oder höher unterstützt Android 5G-Network Slicing. Dabei wird die Netzwerkvirtualisierung verwendet, um einzelne Netzwerkverbindungen in mehrere separate virtuelle Verbindungen aufzuteilen, die verschiedenen Arten von Traffic unterschiedliche Mengen an Ressourcen zur Verfügung stellen. Mit 5G-Network Slicing können Netzbetreiber einen Teil des Netzwerks für bestimmte Funktionen für ein bestimmtes Kundensegment reservieren. Mit Android 12 werden die folgenden 5G-Funktionen für das Network Slicing für Unternehmen eingeführt, die Netzbetreiber ihren Unternehmenskunden anbieten können:
Aufteilen von Unternehmensgeräten für vollständig verwaltete Geräte
Für Unternehmen, die ihren Mitarbeitern vollständig verwaltete Unternehmensgeräte zur Verfügung stellen, können Netzwerkanbieter ein oder mehrere aktive Unternehmensnetzwerk-Slices bereitstellen, zu denen der Traffic auf den Unternehmensgeräten weitergeleitet wird. Ab Android 12 können Mobilfunkanbieter Unternehmens-Slices über URSP-Regeln bereitstellen, anstatt Slices über APNs einzurichten.
App-Slicing für Unternehmens-Apps auf Geräten mit Arbeitsprofilen
Für Unternehmen, die die Arbeitsprofil-Lösung verwenden, können Geräte unter Android 12 den Traffic aller Apps im Arbeitsprofil an einen Unternehmensnetzwerk-Slice weiterleiten. Unternehmen können diese Funktion über einen Device Policy Controller (DPC) aktivieren.
Die Arbeitsprofillösung bietet eine automatische Authentifizierung und Zugriffssteuerung, die Unternehmen benötigen, um sicherzustellen, dass nur Traffic von Unternehmens-Apps im Arbeitsprofil an den Unternehmensnetzwerk-Slice weitergeleitet wird. Apps im Arbeitsprofil müssen nicht geändert werden, um explizit den Unternehmensnetzwerk-Slice anzufordern.
So funktioniert 5G‑Network Slicing in AOSP
In Android 12 wird die Unterstützung für 5G-Network-Slicing eingeführt. Dazu wurden der Telefonie-Codebase in AOSP und dem Tethering-Modul vorhandene Connectivity-APIs hinzugefügt, die für Network-Slicing erforderlich sind.
Die Android-Telefonieplattform bietet HAL- und Telefonie-APIs zur Unterstützung von Slicing basierend auf Netzwerkanfragen, die vom Core-Networking-Code und den 5G-Slicing-Funktionen im Modem gestellt werden. Abbildung 1 zeigt die Komponenten der 5G-Network-Slicing-Funktion.
Abbildung 1: 5G‑Network Slicing-Architektur in AOSP.
Die Telefonie- und Verbindungsplattform unterstützt:
- Umwandlung von Netzwerkanfragen für Slice-Kategorien in Traffic-Deskriptoren, die dann an das Modem zur URSP-Traffic-Abstimmung und Routenauswahl übergeben werden
- Auf das Standardnetzwerk zurückgreifen, wenn der Unternehmensnetzwerk-Slice nicht verfügbar ist
- Traffic von allen Apps im Arbeitsprofil an die entsprechende Verbindung weiterleiten
Unterstützung von Unternehmenssegmentierung
- Erkennen, ob ein Arbeitsprofil auf dem Gerät vorhanden ist
- Prüfen von Berechtigungen oder Routenbeschreibungen, die vom DPC des IT-Administrators des Unternehmens bereitgestellt werden
Der Hauptnetzwerkdienst umfasst die folgenden Änderungen am Tethering-Modul in Android 12:
- Fügt die meisten öffentlichen oder System-API-Klassen von
android.net.*
dem Tethering-Modul hinzu. Erweitert die Grenzen des Tethering-Moduls um Folgendes:
f/b/core/java/android/net/…
f/b/services/net/…
f/b/services/core/java/com/android/server/connectivity/…
f/b/services/core/java/com/android/server/ConnectivityService.java
f/b/services/core/java/com/android/server/TestNetworkService.java
Verschiebt VPN-Code aus dem Tethering-Modul
In Android 12 wird Code mit den folgenden Funktionen in das Tethering-Modul verschoben:
- Anfragen von Apps für Netzwerkverbindungen empfangen
- Anfragen vom System empfangen (z. B. „Diese Apps in einem Unternehmensprofil platzieren“; eingeführt in Android 12)
- Anfragen vom System an den Telefoniecode senden, der versucht, Netzwerke oder Slices über die HAL-API und das Modem einzurichten
- netd mitteilen, wie Traffic pro App weitergeleitet werden soll (eingeführt in Android 12)
- Apps darüber informieren, was mit ihrem Netzwerk-Traffic passiert, über
ConnectivityManager
-APIs wieNetworkCallback
,getActiveNetwork
undgetNetworkCapabilities
.
Implementierung
Damit ein Gerät 5G-Slicing unterstützt, muss es ein Modem haben, das die IRadio 1.6-HAL mit der setupDataCall_1_6
-API unterstützt. Diese API richtet eine Datenverbindung ein und enthält die folgenden Parameter zur Unterstützung von 5G‑Slicing:
trafficDescriptor
: Gibt den Traffic-Deskriptor an, der an das Modem gesendet wird.sliceInfo
: Gibt Informationen für den Netzwerk-Slice an, der im Falle einer EPDG-zu-5G-Übergabe verwendet werden soll.matchAllRuleAllowed
: Gibt an, ob die Verwendung einer standardmäßigen URSP-Regel für alle Übereinstimmungen zulässig ist. Bei Standardnetzwerken wird dieser Wert von der Telefonie auf „true“ gesetzt, bei Slices jedoch nicht. Die Regel „Mit allen übereinstimmen“ wird auf Standardnetzwerke angewendet. Wenn eine App ein bestimmtes Segment anfordert, das nicht verfügbar ist, wird das Segment als nicht verfügbar gemeldet. Bei Unternehmens-Apps kann das Telephony-Framework auf das Standardnetzwerk zurückgreifen, wenn das Unternehmensnetzwerk nicht verfügbar ist.
Modems müssen auch die getSlicingConfig
API implementieren, sofern sie nicht von der getHalDeviceCapabilities
API als nicht unterstützt gemeldet wird.
Anforderungen für Unternehmen
Im Folgenden werden die Anforderungen für Unternehmen beschrieben, die 5G-Network-Slicing auf Geräten in einer Android Enterprise-Bereitstellung verwenden möchten.
- Achten Sie darauf, dass vollständig verwaltete Geräte oder Mitarbeitergeräte, die mit einem Arbeitsprofil eingerichtet sind, 5G SA-fähig sind und Modems haben, die die
setupDataCall_1_6
-API unterstützen. - Mit dem Mobilfunkanbieter zusammenarbeiten, um Slice-Einrichtung und Leistungs- oder SLA-Merkmale zu optimieren.
5G-Slicing auf Geräten mit Arbeitsprofil aktivieren
Bei Geräten, die mit Arbeitsprofilen eingerichtet sind, ist 5G-Network-Slicing in AOSP standardmäßig deaktiviert. Um Network Slicing zu aktivieren, können IT-Administratoren in Unternehmen die Weiterleitung des Traffics von Arbeitsprofil-Apps an den Unternehmensnetzwerk-Slice für jeden Mitarbeiter über den EMM-DPC aktivieren oder deaktivieren. Dazu wird die Methode setPreferentialNetworkServiceEnabled
in der API DevicePolicyManager
(DPM) verwendet, die in Android 12 eingeführt wurde.
EMM-Anbieter mit benutzerdefinierten DPCs müssen die DevicePolicyManager
API integrieren, um Unternehmenskunden zu unterstützen.
URSP-Regeln
Dieser Abschnitt enthält Informationen für Mobilfunkanbieter zur Konfiguration von URSP-Regeln für verschiedene Slice-Kategorien, darunter Unternehmens-, CBS-, Low-Latency- und High-Bandwidth-Traffic. Bei der Konfiguration von URSP-Regeln für verschiedene Slice-Kategorien müssen Mobilfunkanbieter die folgenden Android-spezifischen Werte verwenden.
ID | Wert | Beschreibung |
---|---|---|
OSId | 97a498e3-fc92-5c94-8986-0333d06e4e47 |
Die OSId für Android ist eine UUID der Version 5, die mit dem Namespace ISO OID und dem Namen „Android“ generiert wird. |
Mobilfunkanbieter müssen URSP-Regeln für jeden Slice-Traffic mit der Traffic-Deskriptorkomponente „OS Id + OS App Id type“ konfigurieren. Für das Segment „ENTERPRISE“ muss beispielsweise der Wert 0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345
festgelegt sein.
Dieser Wert ist eine Verkettung der OSId, der Länge der OSAppId (0x0A
) und der OSAppId.
Weitere Informationen zum Komponententyp des Verkehrsdeskriptors finden Sie in 3GPP TS 24.526, Tabelle 5.2.1.
In der folgenden Tabelle werden die OSAppId-Werte für verschiedene Slice-Kategorien beschrieben.
Segmentkategorie | OSAppId | Beschreibung |
---|---|---|
ENTERPRISE | 0x454E5445525052495345 |
Die OSAppId ist eine Byte-Array-Darstellung des Strings „ENTERPRISE“. |
ENTERPRISE2 | 0x454E544552505249534532 |
Die OSAppId ist eine Byte-Array-Darstellung des Strings „ENTERPRISE2“. |
ENTERPRISE3 | 0x454E544552505249534533 |
Die OSAppId ist eine Byte-Array-Darstellung des Strings „ENTERPRISE3“. |
ENTERPRISE4 | 0x454E544552505249534534 |
Die OSAppId ist eine Byte-Array-Darstellung des Strings „ENTERPRISE4“. |
ENTERPRISE5 | 0x454E544552505249534535 |
Die OSAppId ist eine Byte-Array-Darstellung des Strings „ENTERPRISE5“. |
CBS | 0x434253 |
Die OSAppId ist eine Byte-Array-Darstellung des Strings „CBS“. |
PRIORITIZE_LATENCY | 0x5052494f524954495a455f4c4154454e4359 |
Die OSAppId ist eine Byte-Array-Darstellung des Strings „PRIORITIZE_LATENCY“. |
PRIORITIZE_BANDWIDTH | 0x5052494f524954495a455f42414e445749445448 |
Die OSAppId ist eine Byte-Array-Darstellung des Strings „PRIORITIZE_BANDWIDTH“. |
Beispiel für URSP-Regeln
Die folgenden Tabellen enthalten Beispielregeln für URSP für Unternehmens-, CBS-, Low-Latency-, High-Bandwidth- und Standard-Traffic.
Enterprise 1
Die Unterstützung für Enterprise 1 ist ab Android 12 verfügbar. Hier ist ein Beispiel für eine URSP-Regel für ENTERPRISE1-Traffic:
URSP-Regel 1 (enterprise1) | |
---|---|
Vorrang | 1 (0x01) |
Traffic-Deskriptor 1 | |
Betriebssystem-ID + Betriebssystem-App-ID-Typ | 0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345 |
Deskriptor für die Routenauswahl 1 | |
Vorrang | 1 (0x01) |
Komponente 1: S-NSSAI | SST:XX SD:YYYYYY |
Komponente 2: DNN | Unternehmen |
Deskriptor für die Routenauswahl 2 | |
Vorrang | 2 (0x02) |
Komponente 1: DNN | Unternehmen |
Enterprise 2
Unterstützung für Enterprise 2 ist ab Android 13 verfügbar. Hier ist ein Beispiel für eine URSP-Regel für ENTERPRISE2-Traffic:
URSP-Regel 2 (enterprise2) | |
---|---|
Vorrang | 2 (0x02) |
Traffic-Deskriptor 1 | |
Betriebssystem-ID + Betriebssystem-App-ID-Typ | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534532 |
Deskriptor für die Routenauswahl 1 | |
Vorrang | 1 (0x01) |
Komponente 1: S-NSSAI | SST:XX SD:YYYYYY |
Komponente 2: DNN | enterprise2 |
Deskriptor für die Routenauswahl 2 | |
Vorrang | 2 (0x02) |
Komponente 1: DNN | enterprise2 |
Enterprise 3
Unterstützung für Enterprise 3 ist ab Android 13 verfügbar. Hier ist ein Beispiel für eine URSP-Regel für ENTERPRISE3-Traffic:
URSP-Regel 3 (enterprise3) | |
---|---|
Vorrang | 3 (0x03) |
Traffic-Deskriptor 1 | |
Betriebssystem-ID + Betriebssystem-App-ID-Typ | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534533 |
Deskriptor für die Routenauswahl 1 | |
Vorrang | 1 (0x01) |
Komponente 1: S-NSSAI | SST:XX SD:YYYYYY |
Komponente 2: DNN | enterprise3 |
Deskriptor für die Routenauswahl 2 | |
Vorrang | 2 (0x02) |
Komponente 1: DNN | enterprise3 |
Enterprise 4
Die Unterstützung für Enterprise 4 ist ab Android 13 verfügbar. Hier ist ein Beispiel für eine URSP-Regel für ENTERPRISE4-Traffic:
URSP-Regel 4 (enterprise4) | |
---|---|
Vorrang | 4 (0x04) |
Traffic-Deskriptor 1 | |
Betriebssystem-ID + Betriebssystem-App-ID-Typ | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534534 |
Deskriptor für die Routenauswahl 1 | |
Vorrang | 1 (0x01) |
Komponente 1: S-NSSAI | SST:XX SD:YYYYYY |
Komponente 2: DNN | enterprise4 |
Deskriptor für die Routenauswahl 2 | |
Vorrang | 2 (0x02) |
Komponente 1: DNN | enterprise4 |
Enterprise 5
Unterstützung für Enterprise 5 ist in Android 13 und höher verfügbar. Hier ist ein Beispiel für eine URSP-Regel für ENTERPRISE5-Traffic:
URSP-Regel 5 (enterprise5) | |
---|---|
Vorrang | 5 (0x05) |
Traffic-Deskriptor 1 | |
Betriebssystem-ID + Betriebssystem-App-ID-Typ | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534535 |
Deskriptor für die Routenauswahl 1 | |
Vorrang | 1 (0x01) |
Komponente 1: S-NSSAI | SST:XX SD:YYYYYY |
Komponente 2: DNN | enterprise5 |
Deskriptor für die Routenauswahl 2 | |
Vorrang | 2 (0x02) |
Komponente 1: DNN | enterprise5 |
CBS
Die Unterstützung für CBS ist ab Android 13 verfügbar. Hier ist ein Beispiel für eine URSP-Regel für CBS-Traffic:
URSP-Regel 6 (CBS) | |
---|---|
Vorrang | 6 (0x06) |
Traffic-Deskriptor 1 | |
Betriebssystem-ID + Betriebssystem-App-ID-Typ | 0x97A498E3FC925C9489860333D06E4E4703434253 |
Deskriptor für die Routenauswahl 1 | |
Vorrang | 1 (0x01) |
Komponente 1: S-NSSAI | SST:XX SD:YYYYYY |
Komponente 2: DNN | cbs |
Deskriptor für die Routenauswahl 2 | |
Vorrang | 2 (0x02) |
Komponente 1: DNN | cbs |
Niedrige Latenz
Die Unterstützung für niedrige Latenz ist in Android 13 und höher verfügbar. Hier ist ein Beispiel für eine URSP-Regel für LOW_LATENCY-Traffic:
URSP-Regel 7 (niedrige Latenz) | |
---|---|
Vorrang | 7 (0x07) |
Traffic-Deskriptor 1 | |
Betriebssystem-ID + Betriebssystem-App-ID-Typ | 0x97A498E3FC925C9489860333D06E4E47125052494f524954495a455f4c4154454e4359 |
Deskriptor für die Routenauswahl 1 | |
Vorrang | 1 (0x01) |
Komponente 1: S-NSSAI | SST:XX SD:YYYYYY |
Komponente 2: DNN | Latenz |
Deskriptor für die Routenauswahl 2 | |
Vorrang | 2 (0x02) |
Komponente 1: DNN | Latenz |
Hohe Bandbreite
Die Unterstützung für hohe Bandbreite ist ab Android 13 verfügbar. Hier ist ein Beispiel für eine URSP-Regel für HIGH_BANDWIDTH-Traffic:
URSP-Regel 8 (hohe Bandbreite) | |
---|---|
Vorrang | 8 (0x08) |
Traffic-Deskriptor 1 | |
Betriebssystem-ID + Betriebssystem-App-ID-Typ | 97A498E3FC925C9489860333D06E4E47145052494f524954495a455f42414e445749445448 |
Deskriptor für die Routenauswahl 1 | |
Vorrang | 1 (0x01) |
Komponente 1: S-NSSAI | SST:XX SD:YYYYYY |
Komponente 2: DNN | Bandbreite |
Deskriptor für die Routenauswahl 2 | |
Vorrang | 2 (0x02) |
Komponente 1: DNN | Bandbreite |
Standard
URSP-Regel 9 (Standard) | |
---|---|
Vorrang | 9 (0x09) |
Traffic-Deskriptor 1 | |
match-all | – |
Deskriptor für die Routenauswahl 1 | |
Vorrang | 1 (0x01) |
Komponente 1: S-NSSAI | SST:XX SD:YYYYYY |
Testen
Verwenden Sie den folgenden manuellen Test, um 5G-Network-Slicing zu testen.
So richten Sie ein Gerät für Tests ein:
Die URSP-Richtlinie muss mit einer nicht standardmäßigen Regel konfiguriert sein, die der Unternehmenskategorie entspricht. Der entsprechende Routenauswahldeskriptor muss die Unternehmenskategorie der Unternehmens-Slice zuordnen. Außerdem muss eine Standardregel vorhanden sein, die den Traffic an die Standard-Internet-Slice weiterleitet.
Achten Sie darauf, dass auf dem Gerät ein Arbeitsprofil konfiguriert ist.
Netzwerk-Slicing über den DPC aktivieren
So testen Sie das Verhalten von 5G-Network-Slicing:
- Prüfen Sie, ob eine PDU-Sitzung mit dem Unternehmens-Slice eingerichtet wurde (z. B. über eine bestimmte IP-Adresse) und ob Apps im Arbeitsprofil diese PDU-Sitzung verwenden.
- Prüfen Sie, ob eine separate PDU-Sitzung mit dem Standard-Internetslice eingerichtet wurde und ob Apps im privaten Profil die PDU-Sitzung verwenden.
Upselling von 5G‑Slicing
Mit der Upsell-Funktion für 5G-Slicing, die ab Android 14-QPR1 verfügbar ist, können Mobilfunkanbieter ihren Nutzern über 5G-Network-Slicing verbesserte Netzwerkfunktionen (Latenz und Bandbreite) anbieten.
Die Upsell-Funktion für 5G-Slicing nutzt die TS.43-Antwort des Berechtigungsservers des Mobilfunkanbieters, um den Kaufvorgang zu steuern. Mobilfunkanbieter können mit der Antwort die URL für die Kauf-Webview des Mobilfunkanbieters angeben, zusätzliche Daten an die Webview senden und angeben, ob der Slice im Mobilfunknetz des Mobilfunkanbieters bereitgestellt und verfügbar ist.
Mobilfunkanbieter können das Verhalten der Upsell-Funktion für 5G-Slicing mithilfe von Anbieterkonfigurationen anpassen. Damit wird gesteuert, ob Kaufanfragen gestellt werden können, wann Apps Premium-Funktionen anfordern dürfen und wie lange das Telefonie-Framework auf Antworten vom Nutzer oder vom Netzwerk wartet.
Die Upsell-Funktion für 5G‑Slicing bietet eine Schnittstelle namens DataBoostWebServiceFlow
, über die die Kommunikation zwischen Android und der Webview des Mobilfunkanbieters ermöglicht wird.
Abbildung 2 zeigt den Kaufvorgang für das 5G-Slicing-Upselling:
Abbildung 2: Kaufvorgang für das Upselling von 5G‑Slicing.
TS.43-Berechtigungsprozess
Wenn ein Nutzer eine Anfrage für erweiterte Netzwerkfunktionen stellt, fordert das Telephony-Framework die Konfiguration für die Dienstberechtigung für die angeforderte Premium-Funktion an. Wenn die TS.43-Antwort gültig ist, verwendet das Telephony-Framework die Felder aus der HTTP-Antwort, um die Kaufanfrage zu steuern.
Kauffelder segmentieren
Die TS.43-Berechtigungskonfiguration umfasst die folgenden Felder für den Kauf von Slices:
- Berechtigungsstatus
Taste:
EntitlementStatus
Typ:
int
Unterstützte Werte:
0
(deaktiviert),1
(aktiviert),2
(nicht kompatibel),3
(Bereitstellung),4
(enthalten)- Status der Nutzerverwaltung
Taste:
ProvStatus
Typ:
int
Unterstützte Werte:
0
(nicht bereitgestellt),1
(bereitgestellt),2
(nicht verfügbar),3
(wird ausgeführt)
Das Telefonie-Framework verwendet die Kombination aus Berechtigungsstatus und Bereitstellungsstatus, um den aktuellen Status des Slice-Kaufs zu bestimmen. Das Ergebnis kann einer der folgenden Werte sein:
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS
PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_ERROR
Wenn der Berechtigungsstatus 1
(aktiviert) und der Bereitstellungsstatus 0
(nicht bereitgestellt) ist, wird dem Nutzer im Telefonie-Framework eine Upsell-Benachrichtigung angezeigt, in der er aufgefordert wird, das Boost über die Webview des Mobilfunkanbieters zu kaufen. In der folgenden Tabelle wird das Verhalten des Telephony-Frameworks für verschiedene Kombinationen von Bereitstellungs- und Berechtigungsstatuswerten beschrieben.
Bereitstellungsstatus | |||||
---|---|---|---|---|---|
Nicht bereitgestellt (0 ) |
Bereitgestellt (1 |
Nicht verfügbar (2 ) |
Wird bearbeitet (3 ) |
||
Berechtigungsstatus | Deaktiviert (0 ) |
Fehlgeschlagen | Fehlgeschlagen | Fehlgeschlagen | Fehlgeschlagen |
Aktiviert (1 ) |
WebView anzeigen | Bereits gekauft | Bereits gekauft | In Bearbeitung | |
Nicht kompatibel (2 ) |
Fehlgeschlagen | Fehlgeschlagen | Fehlgeschlagen | Fehlgeschlagen | |
Bereitstellung (3 ) |
Mobilfunkanbieterfehler | Mobilfunkanbieterfehler | In Bearbeitung | In Bearbeitung | |
Enthalten (4 ) |
Mobilfunkanbieterfehler | Bereits gekauft | Bereits gekauft | Mobilfunkanbieterfehler |
Felder für den Serviceablauf
In der TS.43-Antwort werden die URL, die Nutzerdaten und der Inhaltstyp angegeben, um das Verhalten der Webview für den Kauf beim Mobilfunkanbieter anzupassen. Wenn der Inhaltstyp nicht angegeben ist, wird die URL als GET-Anfrage geladen. Wenn die Nutzerdaten vorhanden sind, werden sie als Suchparameter an die URL angehängt (z. B. https://www.android.com?encodedValue=Base64EncodedUserData
). Andernfalls wird die URL unverändert verwendet (z. B. https://www.android.com
).
Wenn der Inhaltstyp im JSON- oder XML-Format angegeben ist, wird die URL als POST-Anfrage geladen und die Nutzerdaten (decodiert, falls sie in Base 64 codiert sind) werden als Daten für die POST-Anfrage gesendet.
- URL
Taste:
ServiceFlow_URL
Typ:
String
Beispiel:
"https://www.android.com"
- Nutzerdaten
Taste:
ServiceFlow_UserData
Typ:
String
Beispiel:
"encodedValue=Base64EncodedUserData"
- Inhaltstyp
Taste:
ServiceFlow_ContentsType
Typ:
String
Unterstützte Werte:
0
(nicht angegeben),1
(JSON),2
(XML)
Konfigurationen des Mobilfunkanbieters
Im Folgenden sind die verfügbaren Mobilfunkanbieterkonfigurationen aufgeführt, mit denen das Verhalten der Upsell-Funktion für 5G‑Slicing angepasst werden kann.
KEY_SUPPORTED_PREMIUM_CAPABILITIES_INT_ARRAY
Eine Liste der unterstützten Premiumfunktionen. Dies ist ein Int-Array von
TelephonyManager.PremiumCapability
. Diese Premiumfunktionen haben denselben Wert wie die entsprechende KlasseNetworkCapabilities.NetCapability
. Wenn eine Premium-Funktion angefordert wird, die nicht in dieser Konfiguration enthalten ist, schlägt die Kaufanfrage mit dem ErgebnisCARRIER_DISABLED
fehl.In Android 14 wird nur
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY
unterstützt.KEY_PREMIUM_CAPABILITY_MAXIMUM_DAILY_NOTIFICATION_COUNT_INT
Die maximale Anzahl der täglichen Anzeigen der Benachrichtigung zum Upselling von Käufen für den Nutzer. Wenn das Tageslimit erreicht ist, wird die Upsell-Benachrichtigung nicht angezeigt und Kaufanfragen (einschließlich Anfragen an den Berechtigungsserver) werden bis Mitternacht des nächsten Tages gedrosselt. Kaufanfragen, die nach Erreichen des Tageslimits gestellt werden, schlagen mit dem Ergebnis
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
fehl.KEY_PREMIUM_CAPABILITY_MAXIMUM_MONTHLY_NOTIFICATION_COUNT_INT
Die monatliche maximale Anzahl der Anzeigen der Benachrichtigung zum Upselling von Käufen für den Nutzer. Wenn das monatliche Maximum erreicht ist, wird die Upsell-Benachrichtigung nicht angezeigt und Kaufanfragen (einschließlich Berechtigungsserveranfragen) werden bis zum ersten Tag des Folgemonats gedrosselt. Kaufanfragen, die nach Erreichen des monatlichen Maximums gestellt werden, schlagen mit dem Ergebnis
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
fehl.KEY_PREMIUM_CAPABILITY_PURCHASE_URL_STRING
Die URL für den Kauf des Reserve-Carriers, die dem Nutzer angezeigt werden soll, wenn er auf die Upsell-Benachrichtigung klickt. Wenn die Kauf-URL nicht in der TS.43-Antwort des Berechtigungsservers gefunden wird, wird stattdessen dieser Wert verwendet. Wenn weder die URL aus der TS.43-Antwort noch die Betreiberkonfiguration gültig ist, schlägt die Kaufanfrage mit dem Ergebnis
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED
fehl.KEY_PREMIUM_CAPABILITY_SUPPORTED_ON_LTE_BOOL
Gibt an, ob Premium-Funktionen gekauft werden dürfen, wenn das Gerät mit Long-Term Evolution (LTE) verbunden ist. Bei
true
können Kaufanfragen sowohl über LTE als auch über New Radio (NR) gestellt werden. Wennfalse
, können Kaufanfragen nur über NR gestellt werden. Anfragen über LTE schlagen mit dem ErgebnisPURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_NOT_AVAILABLE
fehl.KEY_PREMIUM_CAPABILITY_NOTIFICATION_DISPLAY_TIMEOUT_MILLIS_LONG
Die Zeit, die die Benachrichtigung zum Upselling von Käufen dem Nutzer angezeigt wird, bevor sie automatisch abgebrochen wird. Wenn die Benachrichtigung abgebrochen wird, werden nachfolgende Anfragen gedrosselt und schlagen mit dem Ergebnis
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
fehl.KEY_PREMIUM_CAPABILITY_NOTIFICATION_BACKOFF_HYSTERESIS_TIME_MILLIS_LONG
Die Zeitspanne, in der nachfolgende Kaufanfragen nach einem Fehler aufgrund von Zeitüberschreitung oder Nutzerabbruch gedrosselt werden sollten. Wenn der Nutzer nicht innerhalb des durch
KEY_PREMIUM_CAPABILITY_NOTIFICATION_DISPLAY_TIMEOUT_MILLIS_LONG
angegebenen Zeitlimits auf die Benachrichtigung zum Upselling klickt oder die Benachrichtigung abbricht oder schließt, wird dieser Backoff-Timer gestartet. Während dieser Zeit schlagen Kaufanfragen mit dem ErgebnisPURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
fehl.KEY_PREMIUM_CAPABILITY_PURCHASE_CONDITION_BACKOFF_HYSTERESIS_TIME_MILLIS_LONG
Die Zeitspanne, in der nachfolgende Kaufanfragen nach einem Fehler aufgrund des Mobilfunkanbieters oder Netzwerks gedrosselt werden sollen. Wenn die Berechtigungsprüfung fehlschlägt, die URL nicht verfügbar ist oder die URL für den Kauf über den Mobilfunkanbieter einen Fehler anzeigt, wird dieser Backoff-Timer gestartet. Während dieser Timer aktiv ist, schlagen Kaufanfragen mit dem Ergebnis
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
fehl.KEY_PREMIUM_CAPABILITY_NETWORK_SETUP_TIME_MILLIS_LONG
Die Zeit, innerhalb derer das Netzwerk eine Slicing-Konfiguration für die Kaufprämie einrichten muss. Während dieses Zeitraums werden nachfolgende Kaufanfragen blockiert und geben das Ergebnis
PURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUP
zurück. Wenn das Netzwerk die Einrichtung einer Slicing-Konfiguration nicht rechtzeitig durchführt, können Apps noch einmal den Kauf von Premium-Funktionen anfordern. Bei der Telefonie gilt ein Kauf erst dann als abgeschlossen, wenn die entsprechende Slicing-Konfiguration gesendet wurde, unabhängig davon, ob der Nutzer den Mobilfunkanbieter bezahlt hat oder nicht.
JavaScript-Schnittstelle
Wenn der Nutzer auf die Benachrichtigung zum Netzwerk-Boost klickt, wird ihm ein WebView
-Objekt mit der Kauf-URL des Mobilfunkanbieters angezeigt. Mobilfunkanbieter können die APIs, die in der Javascript-Schnittstelle DataBoostWebServiceFlow
bereitgestellt werden, auf ihrer Kaufwebsite verwenden, um mit der App für den Kauf von Slices zu kommunizieren.
Die Website des Mobilfunkanbieters kann die angeforderte Premium-Funktion über die Methode getRequestedCapability()
abrufen.
Wenn der Kauf erfolgreich ist, muss die Website des Mobilfunkanbieters die App für den Kauf von Teilinhalten über notifyPurchaseSuccessful()
oder notifyPurchaseSuccessful(duration)
benachrichtigen. Dabei ist duration
ein optionaler Parameter, der die beabsichtigte Dauer des Teilinhalts angibt.
Wenn der Kauf nicht erfolgreich ist, muss die Website des Mobilfunkanbieters die App für den Kauf von Datenvolumen über die Methode notifyPurchaseFailed(code, reason)
benachrichtigen. Dabei ist code
der Fehlercode, der den Grund für den Fehler angibt, und reason
der für Menschen lesbare Grund für den Fehler, wenn der Fehlercode unbekannt ist.
Wenn keine dieser Antwortmethoden aufgerufen wird, gilt der Kauf nicht als abgeschlossen und die Kaufanfrage läuft schließlich ab.
Die folgenden gültigen Fehlercodes können von der Website des Mobilfunkanbieters bei einem fehlgeschlagenen Kauf zurückgegeben werden:
FAILURE_CODE_UNKNOWN
FAILURE_CODE_CARRIER_URL_UNAVAILABLE
FAILURE_CODE_AUTHENTICATION_FAILED
FAILURE_CODE_PAYMENT_FAILED
FAILURE_CODE_NO_USER_DATA
Nach Abschluss des Kaufs muss der Mobilfunkanbieter die URSP-Regeln mit dem PRIORITIZE_LATENCY
-Slice auf dem Gerät des Nutzers aktualisieren.