Mit 5G-Netzwerk-Slicing können Mobilfunkanbieter die Netzwerkleistung für bestimmte Anwendungsfälle steigern. In diesem Leitfaden wird erläutert, wie eine App die Funktion „Network Slicing“ verwenden kann.
In diesem Leitfaden erfahren Sie auch, wie Sie den UX-Aufruf für den Upsell von Network Slicing auslösen, wenn ein Kauf erforderlich ist, bevor die App auf die Premium-Verbindung zugreifen kann.
Schritt 1: Intents für Premiumfunktionen deklarieren
Damit die Anfrage Ihrer App für eine Premium-Slicing-Funktion berücksichtigt werden kann, muss Ihre App im App-Manifest angeben, dass sie diese Funktion anfordert.
Andernfalls schlägt die Netzwerkanfrage fehl und es wird eine SecurityException
zurückgegeben.
Dazu muss Ihre App das Attribut PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES
in der AndroidManifest.xml
-Datei deklarieren und eine entsprechende XML-Ressourcendatei enthalten.
Eine Funktionserklärung in der Manifestdatei sieht so aus:
<property android:name="android.net.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES"
android:resource="@xml/network_capabilities" />
Die entsprechende network_capabilities.xml
-Ressourcendatei sieht so aus:
<network-capabilities-declaration> xmlns:android="http://schemas.android.com/apk/res/android">
<uses-network-capability android:name="NET_CAPABILITY_PRIORITIZE_LATENCY"/>
</network-capabilities-declaration>
Schritt 2: Prüfen, ob die Premium-Funktion verfügbar ist
Rufen Sie die API-Methode requestNetwork()
auf, um zu prüfen, ob die Premium-Funktion verfügbar ist.
Context mContext;
Network mNetwork;
public void requestPremiumCapabilityNetwork(@NetCapability int capability) {
ConnectvityManager cm = mContext.getSystemService(ConnectivityManager.class);
NetworkRequest request = NetworkRequest.Builder()
.addCapability(capability)
.build();
cm.requestNetwork(request, new NetworkCallback() {
@Override
public void onAvailable(Network network) {
log("Premium capability %d network is available.", capability);
mNetwork = network;
}
@Override
public void onLost(Network network) {
log("Premium capability %d network is not available.", capability);
mNetwork = null;
}
});
}
Wenn Sie ein NetworkRequest
-Objekt erstellen, ist die hinzugefügte Funktion nicht dieselbe Funktion, die Sie an die TelephonyManager
APIs übergeben.
In der folgenden Tabelle werden die Konstanten aus der Klasse TelephonyManager
den entsprechenden Konstanten in NetworkCapabilities
zugeordnet.
TelephonyManager konstant |
NetworkCapabilities konstant |
---|---|
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY |
NET_CAPABILITY_PRIORITIZE_LATENCY |
Schritt 3: Wenn die Premium-Funktion nicht verfügbar ist, prüfen, ob ein Kauf möglich ist
Rufen Sie die API-Methode isPremiumCapabilityAvailableForPurchase()
auf, um zu prüfen, ob die ausgewählte Premiumfunktion verfügbar ist.
Diese Methode gibt true
zurück, wenn die Funktion über den Upselling-Benachrichtigungsworkflow beim Mobilfunkanbieter gekauft werden kann.
Context mContext;
public boolean isPremiumCapabilityAvailableForPurchase(@PremiumCapability int capability) {
TelephonyManager tm = mContext.getSystemService(TelephonyManager.class);
boolean isAvailable = tm.isPremiumCapabilityAvailableForPurchase(capability);
log("Premium capability %d %s available to purchase.",
capability,
isAvailable ? "is" : "is not");
return isAvailable;
}
Schritt 4: Upselling-Benachrichtigungsablauf starten
Nachdem du bestätigt hast, dass die Premium-Funktion verfügbar ist, sollte deine App purchasePremiumCapability()
aufrufen, um den Upselling-Benachrichtigungsablauf zu starten. Wenn der Nutzer die angegebene Funktion noch nicht gekauft hat und alle Voraussetzungen erfüllt sind, wird ihm auf der Plattform eine Benachrichtigung angezeigt, dass bei seinem Mobilfunkanbieter möglicherweise Optionen zur Leistungssteigerung verfügbar sind. Wenn der Nutzer auf die Benachrichtigung tippt, öffnet die Plattform die Webansicht des Mobilfunkanbieters, damit der Kaufvorgang fortgesetzt werden kann.
Context mContext;
public void purchasePremiumCapability(@PremiumCapability int capability) {
TelephonyManager tm = mContext.getSystemService(TelephonyManager.class);
tm.purchasePremiumCapability(capability, Runnable::run, new Consumer<Integer>() {
@Override
public void accept(Integer result) {
log("Purchase premium capability %d result: %d", capability, result);
int purchaseResult = result;
}
});
}
Der parameter
-Callback, der an purchasePremiumCapability()
übergeben wird, gibt einen Ergebniscode für die Kaufanfrage zurück.
Die Ergebniscodes PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
und PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
stehen für erfolgreiche Ergebnisse, bei denen Ihre App die ausgewählte Premiumfunktion anfordern kann.
Die Ergebniscodes in der folgenden Liste stehen für fehlgeschlagene Kaufanfragen. Weitere Informationen finden Sie in der API-Referenz.
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_ERROR
PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED
PURCHASE_PREMIUM_CAPABILITY_RESULT_FEATURE_NOT_SUPPORTED
PURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_NOT_AVAILABLE
PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_DEFAULT_DATA_SUBSCRIPTION
PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_FOREGROUND
PURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUP
PURCHASE_PREMIUM_CAPABILITY_RESULT_REQUEST_FAILED
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
PURCHASE_PREMIUM_CAPABILITY_RESULT_TIMEOUT
PURCHASE_PREMIUM_CAPABILITY_RESULT_USER_CANCELED
Wenn die Kaufanfrage fehlschlägt, verwendet Ihre App möglicherweise stattdessen das Standardnetzwerk. Wenn die Anfrage für den Premium-Snippet nicht erfüllt werden kann, gibt es kein automatisches Fallback-Verhalten.
UX-Flow für das Aufteilen von Upselling
![Im UX-Flow wird dem Nutzer eine Benachrichtigung angezeigt, über die ein Websheet des Mobilfunkanbieters geöffnet wird, in dem er den Kauf abschließen kann.](https://developer.android.com/static/images/develop/connectivity/5g/upsell-ux-flow.png?hl=de)