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.
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
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.](https://developer.android.com/static/images/develop/connectivity/5g/upsell-ux-flow.png?hl=pl)