به کاربر فروش برش شبکه را پیشنهاد دهید

برش شبکه 5G به اپراتورها این توانایی را می دهد که عملکرد شبکه را برای موارد استفاده خاص افزایش دهند. این راهنما توضیح می‌دهد که چگونه یک برنامه می‌تواند جریان UX برش شبکه را راه‌اندازی کند و اگر کاربر تصمیم به خرید آن داشته باشد، درخواست اتصال ممتاز کند.

جریان UX اعلانی را به کاربر نشان می‌دهد که صفحه وب شرکت مخابراتی را باز می‌کند تا بتواند خرید را تکمیل کند.
شکل 1. نمونه ای از جریان UX upsell.

اهداف قابلیت برتر را اعلام کنید

برای اینکه درخواست برنامه شما برای قابلیت شبکه رعایت شود، برنامه شما باید قصد خود را برای درخواست این قابلیت در مانیفست برنامه اعلام کند. در غیر این صورت، درخواست شبکه با پرتاب یک SecurityException ناموفق است.

برای انجام این کار، برنامه شما باید ویژگی PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES را در فایل AndroidManifest.xml اعلام کند و یک فایل منبع XML مربوطه را شامل شود.

یک اعلان قابلیت در فایل مانیفست به صورت زیر است:

<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>

جریان upsell برش شبکه را فعال کنید

این مثال کد نشان می‌دهد که چگونه می‌توان جریان upsell را راه‌اندازی کرد و قابلیت 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
        }
    });
}

بخش‌های زیر مراحل مربوط به این فرآیند را با جزئیات بیشتری شرح می‌دهند.

مرحله 1: بررسی کنید که آیا قابلیت Premium موجود است یا خیر

متد isPremiumCapabilityAvailableForPurchase() API را فراخوانی کنید تا مشخص شود که آیا قابلیت Premium انتخاب شده در دسترس است یا خیر. اگر قابلیت خرید از اپراتور با استفاده از گردش کار اطلاع رسانی upsell در دسترس باشد، این روش true را برمی گرداند.

مرحله 2: جریان اطلاع رسانی upsell را آغاز کنید

پس از تأیید در دسترس بودن قابلیت Premium، برنامه شما باید با purchasePremiumCapability() تماس بگیرد تا جریان اعلان upsell را آغاز کند. اگر کاربر قبلاً قابلیت مشخص‌شده را خریداری نکرده باشد و همه پیش‌شرط‌ها برآورده شوند، پلتفرم اعلانی را به کاربر نشان می‌دهد تا بداند گزینه‌های افزایش عملکرد ممکن است از اپراتورشان در دسترس باشد. اگر کاربر روی اعلان ضربه بزند، پلتفرم نمای وب اپراتور را باز می کند تا روند خرید ادامه یابد.

parameter فراخوانی ارسال شده به purchasePremiumCapability() یک کد نتیجه را برای درخواست خرید برمی گرداند.

کدهای نتیجه PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS و PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED نشان‌دهنده نتایج موفقیت‌آمیز هستند که در آن برنامه شما می‌تواند به درخواست قابلیت برتر انتخاب‌شده ادامه دهد.

کدهای نتیجه در لیست زیر نشان دهنده درخواست های خرید ناموفق هستند. برای کسب اطلاعات بیشتر در مورد آنها به مرجع API مراجعه کنید.

مرحله 3: اتصال حق بیمه خریداری شده را درخواست کنید

اگر جریان اعلان upsell کد موفقی را برگرداند ( PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS یا PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED )، برنامه شما باید از requestNetwork() برای درخواست شبکه ای استفاده کند که قابلیت درخواستی را برآورده کند. توجه داشته باشید که وقتی یک شی NetworkRequest می‌سازید، قابلیتی که اضافه می‌کنید همان قابلیتی نیست که در مراحل قبلی به APIهای TelephonyManager منتقل می‌کنید. جدول زیر ثابت‌های کلاس TelephonyManager را به ثابت‌های مربوطه در NetworkCapabilities نشان می‌دهد.

TelephonyManager ثابت NetworkCapabilities ثابت
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY NET_CAPABILITY_PRIORITIZE_LATENCY

اگر درخواست خرید ناموفق بود، برنامه شما باید به جای آن از شبکه پیش‌فرض درخواست کرده و از آن استفاده کند. اگر درخواست بخش حق بیمه قابل انجام نباشد، هیچ رفتار بازگشتی خودکار وجود ندارد.