Network Slicing verwenden

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.

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.