เสนอการขายอัปเซลเครือข่ายให้ผู้ใช้

การแบ่งเครือข่าย 5G มอบ ผู้ให้บริการสามารถเพิ่มประสิทธิภาพเครือข่ายสำหรับการใช้งานที่เฉพาะเจาะจง กรณี คำแนะนำนี้จะอธิบายวิธีที่แอปทริกเกอร์ UX การขายอัปเซลเครือข่าย และขอการเชื่อมต่อแบบพรีเมียมในกรณีที่ผู้ใช้ตัดสินใจซื้อ

วันที่ กระบวนการ UX จะแสดงการแจ้งเตือนที่เปิดผู้ให้บริการแก่ผู้ใช้
       เว็บชีตที่สามารถทำการซื้อให้เสร็จสมบูรณ์ได้
รูปที่ 1 ตัวอย่างขั้นตอน UX ของการขายอัปเซล

ประกาศ Intent ด้านความสามารถระดับพรีเมียม

หากต้องการให้แอปทำตามความสามารถด้านเครือข่ายของแอป แอปของคุณ ต้องประกาศเจตนาขอความสามารถดังกล่าวในไฟล์ Manifest ของแอป มิฉะนั้น คำขอเครือข่ายจะส่ง SecurityException ไม่สำเร็จ

ในการดำเนินการนี้ แอปของคุณต้องประกาศ PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES ในไฟล์ AndroidManifest.xml และรวม XML ที่เกี่ยวข้องไว้ ไฟล์ทรัพยากร

การประกาศความสามารถในไฟล์ Manifest มีลักษณะดังนี้

<property android:name="android.net.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES"
          android:resource="@xml/network_capabilities" />

ไฟล์ทรัพยากร network_capabilities.xml ที่เกี่ยวข้องมีลักษณะดังนี้

<network-capabilities-declaration> xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-network-capability android:name="NET_CAPABILITY_PRIORITIZE_LATENCY"/>
</network-capabilities-declaration>

ทริกเกอร์ขั้นตอนการขายอัปเซลเครือข่าย

โค้ดตัวอย่างนี้จะสาธิตวิธีทริกเกอร์ขั้นตอนการขายอัปเซลและขอ ความสามารถแบบพรีเมียมที่ซื้อมา

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

ส่วนต่อไปนี้จะอธิบายขั้นตอนที่เกี่ยวข้องในกระบวนการนี้ในหัวข้อ รายละเอียด

ขั้นตอนที่ 1: ตรวจสอบว่าความสามารถแบบพรีเมียมพร้อมใช้งาน

เรียกใช้ isPremiumCapabilityAvailableForPurchase() เมธอดของ API ที่จะกําหนด ความสามารถแบบพรีเมียมที่เลือกพร้อมใช้งานหรือไม่ เมธอดนี้แสดงผล true ความสามารถในการซื้อจากผู้ให้บริการโดยใช้การขายอัปเซลหรือไม่ เวิร์กโฟลว์การแจ้งเตือน

ขั้นตอนที่ 2: เริ่มขั้นตอนการแจ้งเตือนการขายอัปเซล

หลังจากยืนยันว่าความสามารถแบบพรีเมียมพร้อมใช้งานแล้ว แอปของคุณควรเรียกใช้ purchasePremiumCapability() เพื่อเริ่มขั้นตอนการแจ้งเตือนการขายอัปเซล หากผู้ใช้ยังไม่ได้ซื้อ ความสามารถที่ระบุและเงื่อนไขเบื้องต้นทั้งหมดเป็นไปตามข้อกำหนด จากนั้นแพลตฟอร์ม แสดงการแจ้งเตือนแก่ผู้ใช้เพื่อแจ้งให้ทราบว่าตัวเลือกการเพิ่มประสิทธิภาพ อาจใช้ได้จากผู้ให้บริการ หากผู้ใช้แตะการแจ้งเตือน แพลตฟอร์มนี้จะเปิด WebView ของผู้ให้บริการเพื่อให้ขั้นตอนการซื้อสามารถดำเนินต่อไปได้

Callback parameter ที่ส่งไปยัง purchasePremiumCapability() แสดงผล รหัสผลลัพธ์สำหรับคำขอซื้อ

รหัสผลลัพธ์ PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS และ PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED แสดงผลลัพธ์ที่สำเร็จ ซึ่งแอปของคุณสามารถส่งคำขอ ความสามารถแบบพรีเมียมที่เลือก

รหัสผลลัพธ์ในรายการต่อไปนี้แสดงคำขอซื้อที่ไม่สำเร็จ โปรดดู การอ้างอิง API เพื่อดูข้อมูลเพิ่มเติม

ขั้นตอนที่ 3: ขอการเชื่อมต่อแบบพรีเมียมที่ซื้อ

หากขั้นตอนการแจ้งเตือนการขายอัปเซลแสดงรหัสที่สำเร็จ (PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS หรือ PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED) แอปของคุณควรใช้ requestNetwork() เพื่อขอเครือข่ายที่สามารถตอบสนองความสามารถที่ขอได้ โปรดทราบว่าเมื่อคุณ สร้างออบเจ็กต์ NetworkRequest ความสามารถที่คุณเพิ่มจะไม่เหมือนกัน ที่คุณส่งไปยัง TelephonyManager API ในขั้นตอนก่อนหน้านี้ได้ ตารางต่อไปนี้จะจับคู่ค่าคงที่จากคลาส TelephonyManager กับฟังก์ชัน ค่าคงที่ที่สอดคล้องใน NetworkCapabilities

ค่าคงที่ TelephonyManager ค่าคงที่ NetworkCapabilities
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY NET_CAPABILITY_PRIORITIZE_LATENCY

หากคำขอซื้อไม่สำเร็จ แอปควรขอและใช้ค่าเริ่มต้น เครือข่ายแทน ไม่มีการทำงานสำรองอัตโนมัติถ้าส่วนแบ่งพรีเมียม ไม่สามารถดำเนินการตามคำขอ