Xamarin.Essentials:連線ivity

Connectivity 類別可讓您監視裝置網路狀況的變更、檢查目前的網路存取,以及目前連線方式。

開始使用

若要開始使用此 API,請閱讀 入門指南Xamarin.Essentials,以確保連結庫已正確安裝並設定在您的專案中。

若要存取 Connectivity 功能,需要下列平台特定設定。

需要 AccessNetworkState 權限,而且必須在 Android 專案中設定。 能以下列方式新增:

開啟 [Properties] 資料夾下的 AssemblyInfo.cs 檔案並新增:

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

或更新 Android 資訊清單:

開啟 [Properties] 資料夾下的 AndroidManifest.xml 檔案並在 [manifest] 節點內新增下列內容。

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

禍以滑鼠右鍵按一 Android 專案並開啟專案的屬性。 在 [Android 資訊清單] 下,尋找 [必要權限] 區域並檢查 [存取網路狀態] 權限。 這將會自動更新 AndroidManifest.xml 檔案。

使用 Connectivity

在類別中新增 的 Xamarin.Essentials 參考:

using Xamarin.Essentials;

檢查目前的網路存取:

var current = Connectivity.NetworkAccess;

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

網路存取可分為下列類別:

  • 網際網路 – 本機與網際網路存取。
  • ConstrainedInternet – 受限網際網路存取。 指出 網頁驗證與入口網站連線能力,其中提供對 Web 入口網站的本機存取,但對網際網路的存取要求該特定認證必須透過入口網站提供。
  • 本機 –僅限本機網路存取。
  • – 無連線能力。
  • 未知 – 無法判斷網際網路連線能力。

您可以檢查裝置目前正在使用哪種類型的連線設定檔

var profiles = Connectivity.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
    // Active Wi-Fi connection.
}

每當連線設定檔或網路存取變更時,您都會在觸發時收到事件:

public class ConnectivityTest
{
    public ConnectivityTest()
    {
        // Register for connectivity changes, be sure to unsubscribe when finished
        Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
    }

    void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
    {
        var access = e.NetworkAccess;
        var profiles = e.ConnectionProfiles;
    }
}

限制

請務必注意,NetworkAccess 有可能回報 Internet,但對 Web 的完整存取不可用。 由於連線能力在每個平台上的運作方式,它只能保證連線可用。 例如,裝置可能連線到 Wi-Fi 網路,但路由器與網際網路之間的連線中斷。 在此情況中,可能回報網際網路,但沒有作用中連線可用。

API

Channel 9YouTube 上尋找更多 Xamarin 影片。