Aracılığıyla paylaş


Connectivity

Örneğe göz atın. Örneğe göz atın

Bu makalede, cihazın ağ erişilebilirliğini incelemek için .NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) IConnectivity arabirimini nasıl kullanabileceğiniz açıklanmaktadır. Ağ bağlantısının İnternet'e erişimi olabilir. Cihazlar bluetooth, hücresel veya WiFi gibi farklı türlerde ağ bağlantıları da içerir. Arabirim, IConnectivity cihazların bağlantı durumundaki değişiklikleri izlemek için bir olaya sahiptir.

Arabirimin IConnectivity varsayılan uygulaması özelliği aracılığıyla Connectivity.Current kullanılabilir. IConnectivity Hem arabirim hem Connectivity de sınıf ad alanında Microsoft.Maui.Networking yer alır.

Kullanmaya başlayın

İşlevlere Connectivity erişmek için aşağıdaki platforma özgü kurulum gereklidir.

İzin AccessNetworkState gereklidir ve Android projesinde yapılandırılmalıdır. Bu, aşağıdaki yollarla eklenebilir:

  • Derleme tabanlı izni ekleyin:

    Platforms/Android/MainApplication.cs dosyasını açın ve yönergelerin ardından using aşağıdaki derleme özniteliklerini ekleyin:

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

    - veya -

  • Android Bildirimini güncelleştirin:

    Platformlar/Android/AndroidManifest.xml dosyasını açın ve düğüme manifest aşağıdakileri ekleyin:

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

    - veya -

  • Bildirim düzenleyicisinde Android Bildirimi'ni güncelleştirin:

    Visual Studio'da Platformlar/Android/AndroidManifest.xml dosyasına çift tıklayarak Android bildirim düzenleyicisini açın. Ardından, Gerekli izinler'in altında ACCESS_NETWORK_STATE iznini denetleyin. Bu, AndroidManifest.xml dosyasını otomatik olarak güncelleştirir.

Connectivity kullanma

Özelliğini denetleyerek NetworkAccess geçerli ağın kapsamını belirleyebilirsiniz.

NetworkAccess accessType = Connectivity.Current.NetworkAccess;

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

Ağ erişimi aşağıdaki kategorilere ayrılır:

  • Internet — Yerel ve İnternet erişimi.
  • ConstrainedInternet — Sınırlı internet erişimi. Bu değer, bir web portalına yerel erişimin sağlandığı bir tutsak portal olduğu anlamına gelir. Kimlik doğrulaması kimlik bilgilerini sağlamak için portal kullanıldıktan sonra İnternet erişimi verilir.
  • Local — Yalnızca yerel ağ erişimi.
  • None — Bağlantı yok.
  • Unknown — İnternet bağlantısı belirlenemiyor.

Cihazın etkin olarak kullandığı bağlantı profilinin türünü de kontrol edebilirsiniz:

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

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

Bağlantı profili veya ağ erişimi her değiştiğinde ConnectivityChanged , olay tetikler:

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();
    }
}

Sınırlamalar

Tarafından bildirildiğinin Internet ancak web'e tam erişimin NetworkAccess kullanılamadığını bilmeniz önemlidir. Her platformda bağlantının nasıl çalıştığı nedeniyle, yalnızca bir bağlantının kullanılabilir olduğunu garanti edebilir. Örneğin, cihaz bir Wi-Fi ağına bağlı olabilir, ancak yönlendiricinin İnternet bağlantısı kesilir. Bu örnekte Internet raporlanabilir, ancak etkin bir bağlantı kullanılamaz.