【问题标题】:How to get notified when network connection changes in Xamarin Forms iOS如何在 Xamarin Forms iOS 中的网络连接更改时收到通知
【发布时间】:2018-04-13 19:11:07
【问题描述】:

我的应用程序中有一个要求,我需要显示图像以指示应用程序是否已连接到网络。我可以使用 James Montemagno 的 Connectivity Plugin 来做到这一点。但我想使用它来实现它可达性类。当我实现可达性类时,OnChange 方法永远不会触发。当我打开或关闭 wifi 时,永远不会调用 OnChange。有人可以指导我如何实现这一点吗?

 public static event EventHandler ReachabilityChanged;
static void OnChange(NetworkReachabilityFlags flags)
        {
            ReachabilityChanged?.Invoke(null, EventArgs.Empty);
        }

【问题讨论】:

  • 如果你成功了,那你为什么要换一种方式呢?

标签: ios xamarin.ios xamarin.forms reachability


【解决方案1】:

将以下代码放入您的 PCL App()

CrossConnectivity.Current.ConnectivityChanged += (object sender, Plugin.Connectivity.Abstractions.ConnectivityChangedEventArgs e) =>
{
    bool IsInternetConnected = e.IsConnected;
}

您可以使用消息中心传递连接状态参考this

【讨论】:

    【解决方案2】:

    好的,让我解释一下如何使用 Rehability.cs 类

    1) 将此文件添加到您的项目中。

    https://github.com/xamarin/ios-samples/blob/master/ReachabilitySample/reachability.cs

    2) 更改项目名称的命名空间。

    3) 在您的 ViewController 中声明此变量,如图像

     NetworkStatus remoteHostStatus, internetStatus, localWifiStatus;
    

    4) 在你的 ViewController 中添加这个方法。行 TableView.ReloadData();将您要更新的表的名称或项目的名称。

    void UpdateStatus (object sender, EventArgs e)
        {
            remoteHostStatus = Reachability.RemoteHostStatus ();
            internetStatus = Reachability.InternetConnectionStatus ();
            localWifiStatus = Reachability.LocalWifiConnectionStatus ();
            TableView.ReloadData ();
        }
    

    5) 在 ViewDidLoad 中添加这两行

            UpdateStatus (null, null);
            Reachability.ReachabilityChanged += UpdateStatus;
    

    如需更深入地了解代码,请下载此示例并在您的 Visual Studio 中运行该应用程序。 https://developer.xamarin.com/samples/monotouch/ReachabilitySample/

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      相关资源
      最近更新 更多