از برش شبکه استفاده کنید

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

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

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

برای اینکه درخواست برنامه شما برای قابلیت برش ممتاز مورد توجه قرار گیرد، برنامه شما باید قصد خود را برای درخواست این قابلیت در مانیفست برنامه اعلام کند. در غیر این صورت، درخواست شبکه با پرتاب یک 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>

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

برای تعیین اینکه آیا قابلیت Premium موجود است یا خیر، متد requestNetwork() API را فراخوانی کنید.

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

وقتی یک شی NetworkRequest می سازید، قابلیتی که اضافه می کنید همان قابلیتی نیست که به API های TelephonyManager منتقل می کنید. جدول زیر ثابت‌های کلاس TelephonyManager را به ثابت‌های مربوطه در NetworkCapabilities نشان می‌دهد.

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

مرحله 3: اگر قابلیت Premium در دسترس نیست، در دسترس بودن را برای خرید بررسی کنید

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

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

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

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

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

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

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

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

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

جریان UX برای برش upsell

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