برش شبکه 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 مراجعه کنید.
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_ERROR
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_FEATURE_NOT_SUPPORTED
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_NOT_AVAILABLE
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_DEFAULT_DATA_SUBSCRIPTION
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_FOREGROUND
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUP
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_REQUEST_FAILED
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_TIMEOUT
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_USER_CANCELED
اگر درخواست خرید ناموفق باشد، برنامه شما ممکن است به جای آن از شبکه پیشفرض استفاده کند. اگر درخواست بخش حق بیمه قابل انجام نباشد، هیچ رفتار بازگشتی خودکار وجود ندارد.
جریان UX برای برش upsell
![جریان UX اعلانی را به کاربر نشان می دهد که یک حامل را باز می کند صفحه وب که در آن می توانند خرید را تکمیل کنند.](https://developer.android.google.cn/static/images/develop/connectivity/5g/upsell-ux-flow.png?hl=fa)