【发布时间】: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