Pemotongan jaringan 5G memberi operator kemampuan untuk memberikan peningkatan performa jaringan untuk kasus penggunaan tertentu. Panduan ini menjelaskan cara aplikasi dapat menggunakan fitur pemotongan jaringan.
Panduan ini juga membahas cara memicu alur UX upsell pemotongan jaringan jika pembelian diperlukan sebelum aplikasi dapat mengakses koneksi premium.
Langkah 1: Mendeklarasikan intent kemampuan premium
Agar permintaan aplikasi Anda untuk kemampuan slicing premium dihormati,
aplikasi Anda harus mendeklarasikan intent-nya untuk meminta kemampuan tersebut dalam manifes aplikasi.
Jika tidak, permintaan jaringan akan gagal menampilkan SecurityException
.
Untuk melakukannya, aplikasi Anda harus mendeklarasikan
properti PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES
dalam file AndroidManifest.xml
dan menyertakan file resource
XML yang sesuai.
Deklarasi kemampuan dalam file manifes akan terlihat seperti ini:
<property android:name="android.net.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES"
android:resource="@xml/network_capabilities" />
File resource network_capabilities.xml
yang sesuai akan terlihat seperti ini:
<network-capabilities-declaration> xmlns:android="http://schemas.android.com/apk/res/android">
<uses-network-capability android:name="NET_CAPABILITY_PRIORITIZE_LATENCY"/>
</network-capabilities-declaration>
Langkah 2: Pastikan kemampuan premium tersedia
Panggil metode API
requestNetwork()
untuk menentukan apakah kemampuan premium tersedia.
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;
}
});
}
Saat mem-build objek NetworkRequest
, kemampuan yang Anda tambahkan bukan
kemampuan yang sama dengan yang Anda teruskan ke API TelephonyManager
.
Tabel berikut memetakan konstanta dari class TelephonyManager
ke
konstanta yang sesuai di NetworkCapabilities
.
Konstanta TelephonyManager |
Konstanta NetworkCapabilities |
---|---|
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY |
NET_CAPABILITY_PRIORITIZE_LATENCY |
Langkah 3: Jika kemampuan premium tidak tersedia, periksa ketersediaan untuk membeli
Panggil metode API
isPremiumCapabilityAvailableForPurchase()
untuk menentukan apakah kemampuan premium yang dipilih tersedia.
Metode ini menampilkan true
jika kemampuan tersedia untuk dibeli dari
operator menggunakan alur kerja notifikasi upsell.
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;
}
Langkah 4: Memulai alur notifikasi upsell
Setelah mengonfirmasi bahwa kemampuan premium tersedia, aplikasi Anda harus memanggil
purchasePremiumCapability()
untuk memulai alur notifikasi upsell. Jika pengguna belum membeli
kemampuan yang ditentukan dan semua prasyarat terpenuhi, platform
akan menampilkan notifikasi kepada pengguna untuk memberi tahu mereka bahwa opsi peningkatan performa
mungkin tersedia dari operator mereka. Jika pengguna mengetuk notifikasi, platform akan membuka webview operator sehingga proses pembelian dapat dilanjutkan.
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;
}
});
}
Callback parameter
yang diteruskan ke purchasePremiumCapability()
menampilkan
kode hasil untuk permintaan pembelian.
Kode hasil
PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
dan
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
mewakili hasil yang berhasil, tempat aplikasi Anda dapat melanjutkan untuk meminta
kemampuan premium yang dipilih.
Kode hasil dalam daftar berikut mewakili permintaan pembelian yang gagal. Lihat referensi API untuk mempelajarinya lebih lanjut.
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
Jika permintaan pembelian gagal, aplikasi Anda dapat menggunakan jaringan default. Tidak ada perilaku penggantian otomatis jika permintaan slice premium tidak dapat dipenuhi.
Alur UX untuk memotong upsell
![Alur UX menampilkan notifikasi kepada pengguna yang membuka websheet
maskapai tempat mereka dapat menyelesaikan pembelian.](https://developer.android.com/static/images/develop/connectivity/5g/upsell-ux-flow.png?hl=id)