Używanie dzielenia sieci

Szczytowanie sieci 5G umożliwia operatorom zwiększenie wydajności sieci w przypadku określonych zastosowań. Z tego przewodnika dowiesz się, jak aplikacja może korzystać z funkcji dzielenia sieci.

W tym przewodniku znajdziesz też informacje o tym, jak wywołać przepływ interfejsu użytkownika w celu upsellingu w ramach dzielenia sieci w przypadku, gdy aplikacja musi dokonać zakupu, aby uzyskać dostęp do połączenia premium.

Krok 1. Zadeklaruj intencje dotyczące funkcji premium

Aby Twoja aplikacja mogła korzystać z funkcji cięcia premium, musi w pliku manifestu zadeklarować, że chce korzystać z tej funkcji. W przeciwnym razie żądanie sieciowe się nie powiedzie i zostanie zwrócony błąd SecurityException.

Aby to zrobić, aplikacja musi zadeklarować właściwość PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES w pliku AndroidManifest.xml i zawierać odpowiedni plik zasobu 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 zasobu 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>

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

Wywołaj metodę interfejsu API requestNetwork(), aby sprawdzić, czy funkcja premium jest dostępna.

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

Gdy tworzysz obiekt NetworkRequest, dodana przez Ciebie zdolność nie jest tą samą zdolnością, którą przekazujesz do interfejsów API TelephonyManager. W tabeli poniżej statyczne elementy klasy TelephonyManager są powiązane z odpowiadającymi im stałymi elementami klasy NetworkCapabilities.

TelephonyManager stała NetworkCapabilities stała
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY NET_CAPABILITY_PRIORITIZE_LATENCY

Krok 3. Jeśli funkcja premium jest niedostępna, sprawdź, czy możesz ją kupić

Wywołaj metodę interfejsu API isPremiumCapabilityAvailableForPurchase(), aby sprawdzić, czy wybrana funkcja premium jest dostępna. Ta metoda zwraca wartość true, jeśli usługa jest dostępna do kupienia u operatora za pomocą procesu powiadomienia o ulepszeniu.

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

Krok 4. Rozpocznij proces powiadomienia o ulepszeniu

Po potwierdzeniu, że funkcja premium jest dostępna, aplikacja powinna wywołać funkcję purchasePremiumCapability(), aby rozpocząć proces powiadomienia o ulepszeniu. Jeśli użytkownik nie kupił jeszcze określonej funkcji, a wszystkie warunki wstępne są spełnione, platforma wyświetli powiadomienie z informacją, że u operatora mogą być dostępne opcje zwiększenia wydajności. Jeśli użytkownik kliknie powiadomienie, platforma otworzy widok strony internetowej operatora, aby umożliwić kontynuowanie procesu zakupu.

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

Funkcja parameter przekazywana do purchasePremiumCapability() zwraca kod wyniku prośby o zakup.

Kody wyników PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS i PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED oznaczają pomyślne wyniki, w których przypadku aplikacja może przejść do wysłania żądania wybranej funkcji premium.

Kody wyników na tej liście wskazują nieudane prośby o zakup. Więcej informacji znajdziesz w dokumentacji interfejsu API.

Jeśli żądanie zakupu zakończy się niepowodzeniem, aplikacja może użyć sieci domyślnej. Jeśli nie można zrealizować żądania sekcji premium, nie nastąpi automatyczne przełączenie.

Proces UX dotyczący sprzedaży dodatkowej w ramach podziału

Proces UX wyświetla użytkownikowi powiadomienie, które otwiera stronę internetową operatora, na której może on dokonać zakupu.