কানেক্টিভিটি ডায়াগনস্টিকস API

কানেক্টিভিটি ডায়াগনস্টিকস এপিআই সেই অ্যাপগুলিকে অনুমতি দেয় যেগুলি নেটওয়ার্কগুলির মালিকানা বা পরিচালনা করে, যেমন ক্যারিয়ার অ্যাপস, ভিপিএন অ্যাপস এবং ওয়াই-ফাই সাজেশন অ্যাপগুলিকে ফ্রেমওয়ার্ক থেকে ডায়াগনস্টিক নেটওয়ার্ক সংযোগের তথ্য পেতে। এই অ্যাপগুলি কলব্যাক নিবন্ধন করতে পারে এবং তাদের মালিকানাধীন বা পরিচালনা করা নেটওয়ার্কগুলির জন্য সংযোগ তথ্য সহ বিজ্ঞপ্তিগুলি গ্রহণ করতে পারে৷ অ্যাপ্লিকেশানগুলি এমন নেটওয়ার্কগুলির জন্য বিজ্ঞপ্তি পাবে না যেগুলি অ্যাপের মালিকানাধীন বা পরিচালিত নয়৷

নিম্নলিখিত অ্যাপগুলির উদাহরণ রয়েছে যা নেটওয়ার্ক পরিচালনা করে বা তার মালিকানা রাখে:

  • ক্যারিয়ার অ্যাপ্লিকেশানগুলি: সেলুলার নেটওয়ার্কগুলি পরিচালনা করুন যার জন্য তাদের subId ক্যারিয়ারের বিশেষাধিকার রয়েছে
  • ওয়াই-ফাই সাজেশন অ্যাপস: নিজস্ব ওয়াই-ফাই নেটওয়ার্ক যা তারা সিস্টেমে সাজেস্ট করে
  • VPN অ্যাপ্লিকেশানগুলি: তাদের VPN ব্যবহার করে এমন সমস্ত নেটওয়ার্ক পরিচালনা করুন, কিন্তু শুধুমাত্র যখন তারা সক্রিয় VPN হয়

নিম্নলিখিত ক্ষেত্রে কলব্যাক আহ্বান করা হয়:

  • নেটওয়ার্ক যাচাইকরণ: সিস্টেমটি একটি নির্দিষ্ট নেটওয়ার্কের মূল্যায়ন শেষ করেছে। ConnectivityReport ক্লাস নেটওয়ার্কের বর্তমান অবস্থা এবং যাচাইকরণের অংশ হিসাবে সম্পাদিত যেকোনো পরীক্ষা বা পদ্ধতির ফলাফলের তথ্য প্রদান করে।

    public class ConnectivityReport {
        Network network;
        long reportTimestamp;
        LinkProperties linkProperties;
        NetworkCapabilities networkCapabilities;
        PersistableBundle additionalInfo;
    }
    
  • ডেটা স্টল সন্দেহজনক: একটি ডেটা স্টল, এমন একটি শর্ত যেখানে IP প্যাকেটগুলি নেটওয়ার্কের মাধ্যমে সঠিকভাবে প্রবাহিত হয় না, সন্দেহ করা হয়। DataStallReport ক্লাস সন্দেহভাজন ডেটা স্টল সম্পর্কে তথ্য প্রদান করে।

    public class DataStallReport {
        Network network;
        long reportTimestamp;
        int detectionMethod;
        LinkProperties linkProperties;
        NetworkCapabilities networkCapabilities;
        PersistableBundle stallDetails;
    }
    
  • কানেক্টিভিটি রিপোর্ট করা হয়েছে: একটি অ্যাপ সিস্টেমে ConnectivityManager#reportNetworkConnectivity এর মাধ্যমে কানেক্টিভিটি রিপোর্ট করেছে। নেটওয়ার্ক এবং রিপোর্ট করা সংযোগ (অ্যাপ বিশ্বাস করে যে নেটওয়ার্ক সংযোগ প্রদান করে বা না করে) শেয়ার করা হয়।

বাস্তবায়ন

কানেক্টিভিটি ডায়াগনস্টিকস এপিআই ব্যবহার করতে, একটি অ্যাপকে প্ল্যাটফর্ম থেকে একটি ConnectivityDiagnosticsManager ইনস্ট্যান্স পেতে হবে। এই দৃষ্টান্তটি ConnectivityDiagnosticsCallback বাস্তবায়ন নিবন্ধন এবং নিবন্ধনমুক্ত করতে ব্যবহার করা উচিত। যে কলব্যাক পদ্ধতিগুলি ওভাররাইড করা হয় না সেগুলি নো-অপস৷

নীচে একটি ConnectivityDiagnosticsCallback বাস্তবায়নের একটি উদাহরণ রয়েছে:

public class ExampleCallback extends ConnectivityDiagnosticsCallback {
    @Override
    public void onConnectivityReportAvailable(@NonNull ConnectivityReport report) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }

    @Override
    public void onDataStallSuspected(@NonNull DataStallReport report) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }

    @Override
    public void onNetworkConnectivityReported(
               @NonNull Network network, boolean hasConnectivity) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }
}

কলব্যাক নিবন্ধন করতে এবং বিজ্ঞপ্তি পেতে, registerConnectivityDiagnosticsCallback কল করুন। কলব্যাকগুলি আনরেজিস্টার করতে এবং বিজ্ঞপ্তিগুলি পাওয়া বন্ধ করতে, unregisterConnectivityDiagnosticsCallback কল করুন৷

ConnectivityDiagnosticsCallback নিবন্ধন এবং আন-রেজিস্টার করার জন্য নীচে একটি উদাহরণ রয়েছে:

NetworkRequest request =
        new NetworkRequest.Builder()
                .addTransportType(TRANSPORT_CELLULAR)
                .build();
// Use an Executor that is appropriate for your use case
Executor executor = Executors.newSingleThreadExecutor();

ConnectivityDiagnosticsManager cdm =
        context.getSystemService(ConnectivityDiagnosticsManager.class);

ExampleCallback callback = new ExampleCallback();
cdm.registerConnectivityDiagnosticsCallback(
        request, executor, callback);

... 
// Collect connectivity information on networks that match with request
... 

cdm.unregisterConnectivityDiagnosticsCallback(callback);

বৈধতা

কানেক্টিভিটি ডায়াগনস্টিকস এপিআই ConnectivityDiagnosticsManagerTest দ্বারা CTS পরীক্ষিত।