Sdílet prostřednictvím


Connectivity

Projděte si ukázku. Procházení ukázky

Tento článek popisuje, jak můžete pomocí rozhraní .NET Multi-Platform App UI (.NET MAUI) IConnectivity zkontrolovat přístupnost sítě zařízení. Síťové připojení může mít přístup k internetu. Zařízení také obsahují různé druhy síťových připojení, jako je Bluetooth, mobilní síť nebo WiFi. Rozhraní IConnectivity má událost, která monitoruje změny ve stavu připojení zařízení.

Výchozí implementace IConnectivity rozhraní je k dispozici prostřednictvím Connectivity.Current vlastnosti. Rozhraní IConnectivity i Connectivity třída jsou obsaženy v Microsoft.Maui.Networking oboru názvů.

Začínáme

Pro přístup k funkcím Connectivity se vyžaduje následující nastavení specifické pro platformu.

Oprávnění AccessNetworkState je povinné a musí být nakonfigurováno v projektu Android. Můžete ho přidat následujícími způsoby:

  • Přidejte oprávnění založené na sestavení:

    Otevřete soubor Platforms/Android/MainApplication.cs a za direktivy using přidejte následující atributy sestavení:

    [assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
    

    - nebo -

  • Aktualizace manifestu Androidu:

    Otevřete soubor Platforms/Android/AndroidManifest.xml a do uzlu přidejte následujícímanifest:

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    - nebo -

  • Aktualizace manifestu Androidu v editoru manifestu:

    V sadě Visual Studio poklikejte na soubor Platforms/Android/AndroidManifest.xml a otevřete editor manifestu Androidu. Potom v části Požadovaná oprávnění zkontrolujte oprávnění ACCESS_NETWORK_STATE. Tím se automaticky aktualizuje soubor AndroidManifest.xml .

Používání akce Connectivity

Rozsah aktuální sítě můžete určit kontrolou NetworkAccess vlastnosti.

NetworkAccess accessType = Connectivity.Current.NetworkAccess;

if (accessType == NetworkAccess.Internet)
{
    // Connection to internet is available
}

Přístup k síti spadá do následujících kategorií:

  • Internet — Místní a internetový přístup.
  • ConstrainedInternet — Omezený přístup k internetu. Tato hodnota znamená, že je k dispozici místní přístup k webovému portálu. Jakmile se portál použije k zadání přihlašovacích údajů pro ověřování, udělí se přístup k internetu.
  • Local — Pouze přístup k místní síti.
  • None — Není connectivity k dispozici.
  • Unknown — Nelze určit internet connectivity.

Můžete zkontrolovat, jaký typ profilu připojení zařízení aktivně používá:

IEnumerable<ConnectionProfile> profiles = Connectivity.Current.ConnectionProfiles;

if (profiles.Contains(ConnectionProfile.WiFi))
{
    // Active Wi-Fi connection.
}

Pokaždé, když se profil připojení nebo síťový přístup změní, dojde k ConnectivityChanged vyvolání události:

public class ConnectivityTest
{
    public ConnectivityTest() =>
        Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;

    ~ConnectivityTest() =>
        Connectivity.ConnectivityChanged -= Connectivity_ConnectivityChanged;

    void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
    {
        if (e.NetworkAccess == NetworkAccess.ConstrainedInternet)
            Console.WriteLine("Internet access is available but is limited.");

        else if (e.NetworkAccess != NetworkAccess.Internet)
            Console.WriteLine("Internet access has been lost.");

        // Log each active connection
        Console.Write("Connections active: ");

        foreach (var item in e.ConnectionProfiles)
        {
            switch (item)
            {
                case ConnectionProfile.Bluetooth:
                    Console.Write("Bluetooth");
                    break;
                case ConnectionProfile.Cellular:
                    Console.Write("Cell");
                    break;
                case ConnectionProfile.Ethernet:
                    Console.Write("Ethernet");
                    break;
                case ConnectionProfile.WiFi:
                    Console.Write("WiFi");
                    break;
                default:
                    break;
            }
        }

        Console.WriteLine();
    }
}

Omezení

Je důležité vědět, že je možné, že Internet je nahlášený NetworkAccess , ale úplný přístup k webu není dostupný. Vzhledem k tomu, jak connectivity funguje na jednotlivých platformách, může zaručit, že je připojení k dispozici. Zařízení může být například připojené k síti Wi-Fi, ale směrovač je odpojený od internetu. V tomto případě Internet může být hlášeno, ale aktivní připojení není k dispozici.