Zaoferuj użytkownikowi sprzedaż dodatkową sieci

Dzielenie sieci 5G zapewnia możliwość zwiększenia wydajności sieci komórkowej w określonych sytuacjach przypadków. Z tego przewodnika dowiesz się, jak aplikacja może wpłynąć na UX i zwiększyć sprzedaż w sieci i żądać połączenia premium, jeśli użytkownik zdecyduje się je kupić.

Proces UX pokazuje użytkownikowi powiadomienie otwierające operatora
       stronę, na której można dokonać zakupu.
Rysunek 1. Przykładowy proces UX.

Deklarowanie intencji zaawansowanych funkcji

Aby aplikacja mogła spełnić prośbę o możliwość korzystania z sieci, musi zadeklarować intencję żądania dostępu do tej funkcji w manifeście aplikacji. W przeciwnym razie żądanie sieciowe nie wysyła żądania SecurityException.

Aby to było możliwe, aplikacja musi zadeklarować parametr PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES w pliku AndroidManifest.xml i dodaj odpowiedni kod XML, .

Deklaracja możliwości w pliku manifestu wygląda tak:

<property android:name="android.net.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES"
          android:resource="@xml/network_capabilities" />

Odpowiedni plik zasobów network_capabilities.xml wygląda tak:

<network-capabilities-declaration> xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-network-capability android:name="NET_CAPABILITY_PRIORITIZE_LATENCY"/>
</network-capabilities-declaration>

Uruchom proces podziału sieci na potrzeby sprzedaży dodatkowej

Ten przykładowy kod pokazuje, jak uruchomić proces sprzedaży dodatkowej i zażądać wykupione funkcje premium.

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
        }
    });
}

W poniższych sekcjach szczegółowo opisano kroki tego procesu szczegóły.

Krok 1. Sprawdź, czy funkcja premium jest dostępna

Wywołaj funkcję isPremiumCapabilityAvailableForPurchase() Metoda interfejsu API do określenia czy wybrana funkcja premium jest dostępna. Ta metoda zwraca true czy funkcja jest dostępna do kupienia u operatora w ramach sprzedaży dodatkowej i powiadomieniach.

Krok 2. Rozpocznij proces powiadomienia o sprzedaży dodatkowej

Po potwierdzeniu, że funkcja premium jest dostępna, aplikacja powinna wywołać purchasePremiumCapability() aby zainicjować przepływ powiadomień o sprzedaży dodatkowej. Jeśli użytkownik jeszcze nie dokonał zakupu jeśli zostały spełnione określone możliwości i wszystkie warunki wstępne, wyświetla użytkownikowi powiadomienie z informacją o opcjach zwiększenia wydajności mogą być dostępne u operatora. Jeśli użytkownik kliknie powiadomienie, platforma otworzy stronę operatora w celu kontynuowania procesu zakupu.

Wywołanie zwrotne parameter przekazane do purchasePremiumCapability() zwraca błąd dla żądania zakupu.

Kody wyników PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS oraz PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED przedstawiają prawidłowe wyniki, przy których aplikacja może przesłać żądanie wybranej funkcji premium.

Kody wyników na liście poniżej oznaczają nieudane żądania zakupu. Zobacz API, gdzie znajdziesz więcej informacji.

Krok 3. Poproś o zakupione połączenie premium

Jeśli proces powiadomienia o sprzedaży dodatkowej zwróci kod (PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS lub PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED), aplikacja powinna używać requestNetwork(). aby zażądać sieci, która spełnia żądaną funkcję. Pamiętaj, że gdy utwórz obiekt NetworkRequest, dodana przez Ciebie możliwość nie jest taka sama które przekazujesz do interfejsów API TelephonyManager w poprzednich krokach. W poniższej tabeli mapowane są stałe z klasy TelephonyManager na odpowiadające sobie stałe w narzędziu NetworkCapabilities.

Stała TelephonyManager Stała NetworkCapabilities
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY NET_CAPABILITY_PRIORITIZE_LATENCY

Jeśli prośba o zakup się nie uda, aplikacja powinna poprosić o dodanie domyślnej wartości i jej użyć Jeśli wycinek premium nie działa automatycznie nie można zrealizować żądania.