【问题标题】:Xamarin iOS NetworkReachability.SetNotification not firingXamarin iOS NetworkReachability.SetNotification 未触发
【发布时间】:2016-04-13 13:22:22
【问题描述】:

我正在尝试实现一个简单的通知程序,当应用程序中的网络连接发生变化时,它将广播一条消息。

我遇到的问题是,虽然当我的代码要求该类返回正确的连接状态时,当连接状态发生变化时,我的 networkreachability 对象的 .SetNotification 方法不会被触发。

这是我的连接状态检查代码,如果有人能帮助指出我做错了什么,将不胜感激,谢谢。

public event EventHandler ReachabilityChanged;

public NetworkStatus Status ()
{
    if(_defaultRouteReachability == null)
    {
        _defaultRouteReachability = new NetworkReachability(new IPAddress(0));
    }

    _defaultRouteReachability.SetNotification(OnChange);
    _defaultRouteReachability.Schedule(CFRunLoop.Current, CFRunLoop.ModeDefault);
    _defaultRouteReachability.TryGetFlags (out _flags);

    return ParseFlags ();
}

NetworkStatus ParseFlags ()
{
    if (_flags == 0)
        return NetworkStatus.NotReachable;

    if (_flags.HasFlag(NetworkReachabilityFlags.ConnectionRequired)   ||
        _flags.HasFlag(NetworkReachabilityFlags.InterventionRequired) ||
        _flags.HasFlag(NetworkReachabilityFlags.ConnectionOnDemand))
    {
        return NetworkStatus.NotReachable;  
    }

    if (_flags.HasFlag (NetworkReachabilityFlags.TransientConnection) || 
        _flags.HasFlag (NetworkReachabilityFlags.IsWWAN))
    {
        return NetworkStatus.ReachableViaCarrierDataNetwork;
    }

    return NetworkStatus.ReachableViaWiFiNetwork;
}

void OnChange(NetworkReachabilityFlags flags)
{
    var h = ReachabilityChanged;
    if (h != null)
        h(null, EventArgs.Empty);
}

【问题讨论】:

    标签: xamarin xamarin.ios


    【解决方案1】:

    我不能说你的方法有什么问题,但我几天前已经这样做了,所以这是我的工作示例:

    https://thomasbandt.com/how-to-check-network-reachability-with-xamarinios-on-ios-8

    【讨论】:

      【解决方案2】:

      您应该尝试使用 xamarin 中可用的现成 Connectivity Plugin,使用起来非常方便。

      它是一个简单的跨平台插件,用于检查移动设备的连接状态、收集连接类型、带宽等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-08
        • 2023-03-10
        • 2016-03-17
        • 2021-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-30
        相关资源
        最近更新 更多