5G नेटवर्क स्लाइसिंग की मदद से, मोबाइल और इंटरनेट सेवा देने वाली कंपनियां, नेटवर्क की परफ़ॉर्मेंस को बेहतर बना सकती हैं. इस गाइड में बताया गया है कि कोई ऐप्लिकेशन, नेटवर्क स्लाइसिंग की सुविधा का इस्तेमाल कैसे कर सकता है.
इस गाइड में, नेटवर्क स्लाइसिंग अपसेल यूज़र इंटरफ़ेस (यूएक्स) फ़्लो को ट्रिगर करने का तरीका भी बताया गया है. ऐसा उन मामलों में किया जाता है जहां ऐप्लिकेशन को प्रीमियम कनेक्शन ऐक्सेस करने से पहले, खरीदारी करना ज़रूरी होता है.
पहला चरण: प्रीमियम सुविधाओं के इंटेंट का एलान करना
आपके ऐप्लिकेशन के लिए, प्रीमियम स्लाइसिंग की सुविधा का अनुरोध स्वीकार किया जा सके, इसके लिए ज़रूरी है कि आपके ऐप्लिकेशन के मेनिफ़ेस्ट में, इस सुविधा का अनुरोध करने का आपका मकसद बताया गया हो.
ऐसा न करने पर, नेटवर्क का अनुरोध पूरा नहीं हो पाता और SecurityException
दिखता है.
ऐसा करने के लिए, आपके ऐप्लिकेशन को AndroidManifest.xml
फ़ाइल में PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES
प्रॉपर्टी का एलान करना होगा. साथ ही, उससे जुड़ी एक्सएमएल रिसॉर्स फ़ाइल को शामिल करना होगा.
मेनिफ़ेस्ट फ़ाइल में, सुविधाओं का एलान इस तरह दिखता है:
<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>
दूसरा चरण: पुष्टि करना कि प्रीमियम वर्शन की सुविधा उपलब्ध है या नहीं
प्रीमियम सुविधा उपलब्ध है या नहीं, यह पता लगाने के लिए requestNetwork()
एपीआई का तरीका इस्तेमाल करें.
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
ऑब्जेक्ट बनाते समय, जो क्षमता जोड़ी जाती है वह TelephonyManager
एपीआई को पास की जाने वाली क्षमता नहीं होती.
नीचे दी गई टेबल में, TelephonyManager
क्लास के कॉन्स्टेंट को NetworkCapabilities
में मौजूद उन कॉन्स्टेंट से मैप किया गया है जो उनसे मेल खाते हैं.
TelephonyManager लगातार |
NetworkCapabilities लगातार |
---|---|
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY |
NET_CAPABILITY_PRIORITIZE_LATENCY |
तीसरा चरण: अगर प्रीमियम सुविधा उपलब्ध नहीं है, तो खरीदारी के लिए उपलब्धता देखें
isPremiumCapabilityAvailableForPurchase()
एपीआई के तरीके को कॉल करके यह पता लगाएं कि चुनी गई प्रीमियम सुविधा उपलब्ध है या नहीं.
अगर अपसेल सूचना वर्कफ़्लो का इस्तेमाल करके, कैरियर से खरीदारी के लिए यह सुविधा उपलब्ध है, तो यह तरीका 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;
}
चौथा चरण: अपसेल की सूचना देने वाला फ़्लो शुरू करना
प्रीमियम सुविधा उपलब्ध होने की पुष्टि करने के बाद, आपके ऐप्लिकेशन को अपसेल की सूचना देने वाले फ़्लो को शुरू करने के लिए, purchasePremiumCapability()
को कॉल करना चाहिए. अगर उपयोगकर्ता ने पहले से ही बताई गई सुविधा नहीं खरीदी है और सभी ज़रूरी शर्तें पूरी की हैं, तो प्लैटफ़ॉर्म उपयोगकर्ता को एक सूचना दिखाता है. इससे उन्हें पता चलता है कि उनके कैरियर से परफ़ॉर्मेंस बेहतर करने के विकल्प उपलब्ध हो सकते हैं. अगर उपयोगकर्ता सूचना पर टैप करता है, तो प्लैटफ़ॉर्म, कैरियर का वेबव्यू खोलता है, ताकि खरीदारी की प्रोसेस जारी रखी जा सके.
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;
}
});
}
purchasePremiumCapability()
को पास किया गया parameter
कॉलबैक, खरीदारी के अनुरोध के लिए नतीजा कोड दिखाता है.
नतीजे के कोड PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
और PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
, उन नतीजों को दिखाते हैं जिनमें आपका ऐप्लिकेशन, चुनी गई प्रीमियम सुविधा के लिए अनुरोध कर सकता है.
नीचे दी गई सूची में मौजूद नतीजे के कोड, खरीदारी के अस्वीकार किए गए अनुरोधों को दिखाते हैं. इनके बारे में ज़्यादा जानने के लिए, एपीआई का रेफ़रंस देखें.
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) फ़्लो
![यूज़र एक्सपीरियंस फ़्लो में, उपयोगकर्ता को एक सूचना दिखती है. इस सूचना पर क्लिक करने से, कैरियर की एक वेबशीट खुलती है. इस वेबशीट पर जाकर, उपयोगकर्ता खरीदारी कर सकता है.](https://developer.android.com/static/images/develop/connectivity/5g/upsell-ux-flow.png?hl=hi)