Tawarkan upsell slicing jaringan kepada pengguna

Slicing jaringan 5G memberi operator kemampuan untuk memberikan peningkatan kinerja jaringan untuk penggunaan tertentu penggunaan. Panduan ini menjelaskan cara aplikasi dapat memicu UX upsell slicing jaringan dan meminta koneksi premium jika pengguna memutuskan untuk membelinya.

Alur UX menunjukkan kepada pengguna notifikasi yang membuka operator
       websheet tempat mereka dapat menyelesaikan pembelian.
Gambar 1. Contoh alur UX upsell.

Mendeklarasikan intent kemampuan premium

Agar permintaan aplikasi Anda agar kemampuan jaringan 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 PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES dalam file AndroidManifest.xml dan menyertakan XML yang sesuai file resource.

Deklarasi kemampuan dalam file manifes 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>

Memicu alur upsell slicing jaringan

Contoh kode ini menunjukkan cara memicu alur upsell dan meminta membeli kemampuan 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
        }
    });
}

Bagian berikut ini menjelaskan langkah-langkah yang terlibat dalam proses ini secara lebih spesifikasi pendukung.

Langkah 1: Verifikasi apakah kemampuan premium tersedia

Panggil isPremiumCapabilityAvailableForPurchase() Metode API untuk menentukan apakah kemampuan premium yang dipilih tersedia. Metode ini akan menampilkan true jika kemampuan tersebut tersedia untuk dibeli dari operator menggunakan upsell alur kerja notifikasi.

Langkah 2: Mulai alur notifikasi upsell

Setelah mengonfirmasi bahwa kemampuan premium tersedia, aplikasi Anda akan memanggil purchasePremiumCapability() untuk memulai alur notifikasi upsell. Jika pengguna belum melakukan pembelian kemampuan yang ditentukan dan semua prasyarat terpenuhi, maka platform menampilkan notifikasi kepada pengguna untuk memberitahukan bahwa opsi peningkatan performa mungkin tersedia dari operator mereka. Jika pengguna mengetuk notifikasi, membuka webview operator sehingga proses pembelian dapat dilanjutkan.

Callback parameter yang diteruskan ke purchasePremiumCapability() akan menampilkan kode hasil untuk permintaan pembelian.

Kode hasil PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS dan PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED menunjukkan hasil yang berhasil, sehingga aplikasi Anda dapat melanjutkan untuk meminta kapabilitas premium yang dipilih.

Kode hasil dalam daftar berikut mewakili permintaan pembelian yang gagal. Lihat referensi API untuk mempelajarinya lebih lanjut.

Langkah 3: Minta koneksi premium yang dibeli

Jika alur notifikasi upsell menampilkan kode yang berhasil (PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS atau PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED), aplikasi Anda harus menggunakan requestNetwork() meminta jaringan yang memenuhi kemampuan yang diminta. Perhatikan bahwa ketika Anda membuat objek NetworkRequest, kemampuan yang Anda tambahkan tidak sama yang Anda teruskan ke TelephonyManager API pada langkah sebelumnya. Tabel berikut memetakan konstanta dari class TelephonyManager ke konstanta yang sesuai dalam NetworkCapabilities.

Konstanta TelephonyManager Konstanta NetworkCapabilities
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY NET_CAPABILITY_PRIORITIZE_LATENCY

Jika permintaan pembelian gagal, aplikasi Anda harus meminta dan menggunakan default jaringan. Tidak ada perilaku penggantian otomatis jika bagian premium permintaan ini tidak dapat dipenuhi.