उपयोगकर्ता को नेटवर्क स्लाइसिंग अपसेल ऑफ़र करें

5G नेटवर्क स्लाइसिंग से कैरियर किसी खास इस्तेमाल के लिए, नेटवर्क की परफ़ॉर्मेंस को बेहतर बनाने की सुविधा देते हों मामले. इस गाइड में यह बताया गया है कि कोई ऐप्लिकेशन, नेटवर्क स्लाइसिंग अपसेल UX को कैसे ट्रिगर कर सकता है फ़्लो और प्रीमियम कनेक्शन का अनुरोध करें.

UX फ़्लो की मदद से, उपयोगकर्ता को मोबाइल और इंटरनेट सेवा देने वाली कंपनी के बारे में एक सूचना दिखती है
       ऐसी वेबसाइट जहां वे खरीदारी पूरी कर सकें.
पहली इमेज. अपसेल 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_SUCCESS या PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED), तो आपके ऐप्लिकेशन को requestNetwork() का अनुरोध किया जा सकता है. ध्यान दें कि जब कोई NetworkRequest ऑब्जेक्ट बनाएं, लेकिन जो क्षमता जोड़ी जा रही है वह समान नहीं है की सुविधा देता है, जिसे पिछले चरणों में TelephonyManager एपीआई को पास किया जाता है. नीचे दी गई टेबल में, TelephonyManager क्लास से लेकर NetworkCapabilities में संगत स्थिरांक.

TelephonyManager कॉन्सटेंट NetworkCapabilities कॉन्सटेंट
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY NET_CAPABILITY_PRIORITIZE_LATENCY

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