नेटवर्क स्लाइसिंग का इस्तेमाल करना

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, उन नतीजों को दिखाते हैं जिनमें आपका ऐप्लिकेशन, चुनी गई प्रीमियम सुविधा के लिए अनुरोध कर सकता है.

नीचे दी गई सूची में मौजूद नतीजे के कोड, खरीदारी के अस्वीकार किए गए अनुरोधों को दिखाते हैं. इनके बारे में ज़्यादा जानने के लिए, एपीआई का रेफ़रंस देखें.

अगर खरीदारी का अनुरोध पूरा नहीं हो पाता है, तो आपका ऐप्लिकेशन डिफ़ॉल्ट नेटवर्क का इस्तेमाल कर सकता है. अगर प्रीमियम स्लाइस का अनुरोध पूरा नहीं किया जा सकता, तो अपने-आप फ़ॉलबैक नहीं होता.

अपसेल के लिए स्लाइस करने का यूज़र एक्सपीरियंस (UX) फ़्लो

यूज़र एक्सपीरियंस फ़्लो में, उपयोगकर्ता को एक सूचना दिखती है. इस सूचना पर क्लिक करने से, कैरियर की एक वेबशीट खुलती है. इस वेबशीट पर जाकर, उपयोगकर्ता खरीदारी कर सकता है.