নেটওয়ার্ক স্লাইসিং ব্যবহার করুন, নেটওয়ার্ক স্লাইসিং ব্যবহার করুন

5G নেটওয়ার্ক স্লাইসিং বাহকদের নির্দিষ্ট ব্যবহারের ক্ষেত্রে নেটওয়ার্ক কর্মক্ষমতা বৃদ্ধি করার ক্ষমতা দেয়। এই নির্দেশিকা ব্যাখ্যা করে যে কীভাবে একটি অ্যাপ নেটওয়ার্ক স্লাইসিং বৈশিষ্ট্য ব্যবহার করতে পারে।

অ্যাপটি প্রিমিয়াম সংযোগ অ্যাক্সেস করার আগে একটি ক্রয়ের প্রয়োজন হলে নেটওয়ার্ক স্লাইসিং আপসেল ইউএক্স ফ্লোকে কীভাবে ট্রিগার করতে হয় তাও এই নির্দেশিকাটি কভার করে।

ধাপ 1: প্রিমিয়াম ক্ষমতার অভিপ্রায় ঘোষণা করুন

একটি প্রিমিয়াম স্লাইসিং ক্ষমতার জন্য আপনার অ্যাপের অনুরোধকে সম্মানিত করার জন্য, আপনার অ্যাপটিকে অবশ্যই অ্যাপ ম্যানিফেস্টে সেই ক্ষমতার অনুরোধ করার অভিপ্রায় ঘোষণা করতে হবে। অন্যথায়, নেটওয়ার্ক অনুরোধ একটি SecurityException নিক্ষেপ করতে ব্যর্থ হয়।

এটি করার জন্য, আপনার অ্যাপটিকে অবশ্যই AndroidManifest.xml ফাইলে PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES প্রপার্টি ঘোষণা করতে হবে এবং একটি সংশ্লিষ্ট 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: প্রিমিয়াম ক্ষমতা উপলব্ধ কিনা যাচাই করুন

প্রিমিয়াম ক্ষমতা উপলব্ধ কিনা তা নির্ধারণ করতে 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 অবজেক্ট তৈরি করেন, তখন আপনি যে ক্ষমতা যোগ করেন তা একই ক্ষমতা নয় যা আপনি TelephonyManager API-এ পাস করেন। নিম্নলিখিত টেবিলটি TelephonyManager ক্লাস থেকে NetworkCapabilities ক্যাপাবিলিটিসে সংশ্লিষ্ট ধ্রুবকগুলিকে মানচিত্র করে।

TelephonyManager ধ্রুবক NetworkCapabilities ধ্রুবক
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY NET_CAPABILITY_PRIORITIZE_LATENCY

ধাপ 3: প্রিমিয়াম ক্ষমতা উপলব্ধ না হলে, কেনার জন্য উপলব্ধতা পরীক্ষা করুন

নির্বাচিত প্রিমিয়াম ক্ষমতা উপলব্ধ কিনা তা নির্ধারণ করতে isPremiumCapabilityAvailableForPurchase() API পদ্ধতিতে কল করুন। আপসেল বিজ্ঞপ্তি ওয়ার্কফ্লো ব্যবহার করে ক্যারিয়ারের কাছ থেকে ক্রয়ের জন্য সক্ষমতা উপলব্ধ থাকলে এই পদ্ধতিটি 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: আপসেল বিজ্ঞপ্তি প্রবাহ শুরু করুন

প্রিমিয়াম সক্ষমতা উপলব্ধ রয়েছে তা নিশ্চিত করার পরে, আপসেল বিজ্ঞপ্তি প্রবাহ শুরু করতে আপনার অ্যাপটিকে 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 সফল ফলাফল উপস্থাপন করে যেখানে আপনার অ্যাপ নির্বাচিত প্রিমিয়াম ক্ষমতার অনুরোধ করতে এগিয়ে যেতে পারে।

নিম্নলিখিত তালিকার ফলাফল কোডগুলি ব্যর্থ ক্রয়ের অনুরোধগুলিকে উপস্থাপন করে। তাদের সম্পর্কে আরও জানতে API রেফারেন্স দেখুন।

ক্রয়ের অনুরোধ ব্যর্থ হলে, আপনার অ্যাপ পরিবর্তে ডিফল্ট নেটওয়ার্ক ব্যবহার করতে পারে। কোনো স্বয়ংক্রিয় ফলব্যাক আচরণ নেই যদি প্রিমিয়াম স্লাইস অনুরোধ পূরণ করা না যায়।

আপসেল স্লাইস করার জন্য UX প্রবাহ

UX ফ্লো ব্যবহারকারীকে একটি বিজ্ঞপ্তি দেখায় যা একটি ক্যারিয়ার খুলে দেয়        ওয়েবশীট যেখানে তারা ক্রয় সম্পূর্ণ করতে পারে।