Dem Nutzer ein Upselling nach Netzwerksegment anbieten

5G-Netzwerksegmentierung Mobilfunkanbieter können die Netzwerkleistung für bestimmte Anwendungsfälle verbessern. Cases. In diesem Leitfaden wird erläutert, wie eine App das Netzwerk-Slicing der UX-Upselling auslösen kann und fordern Sie eine Premium-Verbindung an, wenn der Nutzer sich für den Kauf einer Premium-Verbindung entscheidet.

<ph type="x-smartling-placeholder">
</ph> Der UX-Ablauf zeigt dem Nutzer eine Benachrichtigung, über die ein Mobilfunkanbieter geöffnet wird
       um den Kauf abzuschließen.
Abbildung 1: Ein Beispiel für den Upselling-UX-Flow.

Premium-Funktions-Intents deklarieren

Damit die von Ihrer App angefragte Netzwerkfunktion berücksichtigt werden kann, muss im App-Manifest die Absicht deklarieren, diese Funktion anzufordern. Andernfalls löst die Netzwerkanfrage keine SecurityException aus.

Dazu muss Ihre App die PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES Eigenschaft in der Datei AndroidManifest.xml und fügen Sie eine entsprechende XML-Datei hinzu Ressourcendatei.

Eine Funktionsdeklaration 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>

Upselling-Vorgang für Netzwerkaufteilung auslösen

Dieses Codebeispiel zeigt, wie Sie den Upselling-Ablauf auslösen und den Premium-Funktionen erworben hat.

Context mContext;
Network mNetwork;

public void purchasePremiumCapability() {
    TelephonyManager tm = mContext.getSystemService(TelephonyManager.class);
    int capability = TelephonyManager.PREMIUM_CAPABILITY_PRIORITIZE_LATENCY;
    if (tm.isPremiumCapabilityAvailableForPurchase(capability)) {
        tm.purchasePremiumCapability(capability, Runnable::run, new Consumer<Integer>() {
            @Override
            public void accept(Integer result) {
                Log.d("Purchase premium capability result: "
                        + TelephonyManager.convertPurchaseResultToString(result));
                switch (result) {
                    case /* success or already purchased */:
                        requestPremiumCapabilityNetwork();
                        break;
                    case /* temporary failure */:
                        // TODO: wait and retry
                        break;
                    case /* hard failure */:
                        // TODO: handle failure
                        break;
                    default:
                        Log.e("Unknown purchase result: " + result);
                }
            }
        });
    } else {
        Log.e("Premium capability is not available for purchase.");
    }
}

public void requestPremiumCapabilityNetwork() {
    ConnectvityManager cm = mContext.getSystemService(ConnectivityManager.class);
    NetworkRequest request = NetworkRequest.Builder()
            .addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)
            .build();
    cm.requestNetwork(request, new NetworkCallback() {
        @Override
        public void onAvailable(Network network) {
            Log.d("Application can now use the network with the premium capability.");
            mNetwork = network;
        }

        @Override
        public void onLost(Network network) {
            Log.d("Premium capability network is no longer available.");
            mNetwork = null;
            // TODO: clean up anything relying on the premium capability network
        }
    });
}

In den folgenden Abschnitten werden die Schritte dieses Prozesses Details.

Schritt 1: Prüfen, ob Premium-Funktionen verfügbar sind

Rufen Sie die Methode isPremiumCapabilityAvailableForPurchase() Zu bestimmende API-Methode ob die ausgewählte Premiumfunktion verfügbar ist. Diese Methode gibt true zurück. Die Funktion kann vom Mobilfunkanbieter per Upselling erworben werden. Workflow für Benachrichtigungen.

Schritt 2: Upselling-Benachrichtigungen initiieren

Nachdem Sie bestätigt haben, dass die Premium-Funktion verfügbar ist, sollte Ihre App purchasePremiumCapability() um den Upselling-Benachrichtigungsvorgang zu starten. Hat der Nutzer noch nichts gekauft die angegebene Funktion und alle Voraussetzungen erfüllt sind, Der Nutzer wird in einer Benachrichtigung über die Optionen zur Leistungsoptimierung informiert. bei ihrem Mobilfunkanbieter erhältlich sind. Wenn der Nutzer auf die Benachrichtigung tippt, öffnet die Plattform die Webansicht des Mobilfunkanbieters, damit der Kaufvorgang fortgesetzt werden kann.

Der parameter-Callback, der an purchasePremiumCapability() übergeben wird, gibt eine Ergebniscode für die Kaufanfrage abrufen.

Ergebniscodes PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS und PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED stellen erfolgreiche Ergebnisse dar, bei denen Ihre App Premium-Funktionen nutzen können.

Die Ergebniscodes in der folgenden Liste stehen für fehlgeschlagene Kaufanfragen. Weitere Informationen finden Sie unter finden Sie in der API-Referenz.

Schritt 3: Gekaufte Premiumverbindung anfordern

Wenn der Upselling-Benachrichtigungsablauf einen erfolgreichen Code zurückgibt (PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS oder PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED) verwenden, sollte deine App requestNetwork() um ein Netzwerk anzufordern, das die gewünschte Funktion erfüllt. Wenn Sie Wenn Sie ein NetworkRequest-Objekt erstellen, sind die Funktionen, die Sie hinzufügen, nicht identisch mit der , die Sie in den vorherigen Schritten an die TelephonyManager APIs übergeben haben. In der folgenden Tabelle werden die Konstanten aus der Klasse TelephonyManager der Klasse der entsprechenden Konstanten in NetworkCapabilities.

TelephonyManager-Konstante NetworkCapabilities-Konstante
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY NET_CAPABILITY_PRIORITIZE_LATENCY

Wenn die Kaufanfrage fehlschlägt, sollte deine App die Standardeinstellung Netzwerk. Es gibt kein automatisches Fallback-Verhalten, wenn das Premium-Segment Anfrage kann nicht ausgeführt werden.