Menggunakan pemisahan jaringan

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.

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.