5G नेटवर्क स्लाइसिंग से कैरियर किसी खास इस्तेमाल के लिए, नेटवर्क की परफ़ॉर्मेंस को बेहतर बनाने की सुविधा देते हों मामले. इस गाइड में यह बताया गया है कि कोई ऐप्लिकेशन, नेटवर्क स्लाइसिंग अपसेल UX को कैसे ट्रिगर कर सकता है फ़्लो और प्रीमियम कनेक्शन का अनुरोध करें.
प्रीमियम सुविधा के इंटेंट की जानकारी देना
नेटवर्क की क्षमता के लिए आपके ऐप्लिकेशन के अनुरोध को पूरा करने के लिए, आपका ऐप्लिकेशन
ऐप्लिकेशन मेनिफ़ेस्ट में, इस सुविधा का अनुरोध करने के इंटेंट का एलान करना होगा.
ऐसा न करने पर, नेटवर्क अनुरोध SecurityException
को ट्रिगर नहीं कर पाता.
ऐसा करने के लिए, आपके ऐप्लिकेशन को
PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES
प्रॉपर्टी को AndroidManifest.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>
नेटवर्क स्लाइसिंग अपसेल फ़्लो को ट्रिगर करें
कोड के इस उदाहरण में, अपसेल फ़्लो को ट्रिगर करने और खरीदी गई प्रीमियम क्षमता.
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
}
});
}
इन सेक्शन में, इस प्रोसेस में शामिल चरणों के बारे में ज़्यादा जानकारी दी गई है जानकारी.
पहला चरण: पुष्टि करना कि प्रीमियम सुविधा उपलब्ध है या नहीं
कॉल करें
isPremiumCapabilityAvailableForPurchase()
एपीआई मेथड का पता लगाने का तरीका
क्या चुनी गई प्रीमियम सुविधा उपलब्ध है. यह तरीका true
दिखाता है
अगर वह क्षमता, अपसेल का इस्तेमाल करके मोबाइल और इंटरनेट सेवा देने वाली कंपनी से खरीदने के लिए उपलब्ध हो
सूचना का वर्कफ़्लो.
दूसरा चरण: अपसेल की सूचना देने वाला फ़्लो शुरू करना
प्रीमियम सुविधा उपलब्ध होने की पुष्टि करने के बाद, आपके ऐप्लिकेशन को कॉल करना चाहिए
purchasePremiumCapability()
ताकि अपसेल सूचना भेजने की प्रोसेस शुरू की जा सके. अगर उपयोगकर्ता ने पहले से खरीदारी नहीं की है
पहले से तय की गई सभी शर्तों को पूरा करने के बाद ही, प्लैटफ़ॉर्म
उपयोगकर्ता को एक सूचना दिखती है. इससे उन्हें परफ़ॉर्मेंस बूस्ट के विकल्पों के बारे में पता चलता है
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के नेटवर्क पर उपलब्ध हो सकते हैं. अगर उपयोगकर्ता सूचना पर टैप करता है, तो
प्लैटफ़ॉर्म, मोबाइल और इंटरनेट सेवा देने वाली कंपनी का वेबव्यू खोलता है, ताकि खरीदारी की प्रोसेस जारी रहे.
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
तीसरा चरण: खरीदे गए प्रीमियम कनेक्शन का अनुरोध करना
अगर अपसेल सूचना फ़्लो से सही कोड मिलता है
(PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
या
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
), तो आपके ऐप्लिकेशन को
requestNetwork()
का अनुरोध किया जा सकता है. ध्यान दें कि जब
कोई NetworkRequest
ऑब्जेक्ट बनाएं, लेकिन जो क्षमता जोड़ी जा रही है वह समान नहीं है
की सुविधा देता है, जिसे पिछले चरणों में TelephonyManager
एपीआई को पास किया जाता है.
नीचे दी गई टेबल में, TelephonyManager
क्लास से लेकर
NetworkCapabilities
में संगत स्थिरांक.
TelephonyManager कॉन्सटेंट |
NetworkCapabilities कॉन्सटेंट |
---|---|
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY |
NET_CAPABILITY_PRIORITIZE_LATENCY |
अगर खरीदारी का अनुरोध पूरा नहीं होता है, तो आपके ऐप्लिकेशन को डिफ़ॉल्ट वैल्यू का अनुरोध करना चाहिए और उसका इस्तेमाल करना चाहिए नेटवर्क से कनेक्ट करने की ज़रूरत नहीं है. प्रीमियम स्लाइस होने पर, अपने-आप फ़ॉलबैक व्यवहार नहीं होता अनुरोध को पूरा नहीं किया जा सकता.