我試圖實現一個簡單的通知程序,當應用程序中的網絡連接發生變化時將廣播消息。Xamarin iOS NetworkReachability.SetNotification沒有觸發
我遇到的問題是,雖然該類在我的代碼要求時返回正確的連接狀態,但當連接狀態更改時,我的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);
}