Connectivity Diagnostics API

Connectivity Diagnostics API به برنامه‌هایی که مالک یا مدیر شبکه‌ها هستند، مانند برنامه‌های شرکت مخابراتی، برنامه‌های VPN، و برنامه‌های پیشنهاد Wi-Fi، اجازه می‌دهد اطلاعات عیب‌یابی اتصال شبکه را از چارچوب دریافت کنند. این برنامه‌ها می‌توانند کاربران تماس را ثبت کنند و اعلان‌هایی با اطلاعات اتصال‌پذیری برای شبکه‌هایی که مالک یا مدیر آن‌ها هستند دریافت کنند. برنامه‌ها برای شبکه‌هایی که متعلق به برنامه نیستند یا توسط برنامه مدیریت نمی‌شوند اعلان دریافت نخواهند کرد.

موارد زیر نمونه‌هایی از برنامه‌هایی هستند که شبکه‌ها را مدیریت می‌کنند یا مالک آن‌ها هستند:

  • برنامه‌های شرکت مخابراتی: مدیریت شبکه‌های تلفن همراهی که subId آن‌ها دارای امتیازات شرکت مخابراتی برای
  • برنامه‌های پیشنهاد Wi-Fi: شبکه‌های Wi-Fi خودشان را به سیستم پیشنهاد می‌دهند
  • برنامه‌های وی‌پی‌ان: همه شبکه‌هایی را که وی‌پی‌ان آن‌ها استفاده می‌کند مدیریت می‌کنند، اما فقط زمانی که وی‌پی‌ان فعال باشند

پاسخ تماس در موارد زیر فراخوانده می‌شود:

  • اعتبارسنجی شبکه: سیستم ارزیابی شبکه خاصی را به‌پایان رساند. این 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 به سیستم گزارش کرده است. شبکه و اتصال گزارش‌شده (اینکه برنامه معتقد است شبکه اتصال ارائه می‌دهد یا نه) هم‌رسانی می‌شود.

پیاده‌سازی

برای استفاده از Connectivity Diagnostics API، برنامه باید یک نمونه 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);

اعتبارسنجی

Connectivity Diagnostics API توسط ConnectivityDiagnosticsManagerTest آزمایش CTS شده است.