如何解读NetworkReachabilityFlags Xamarin.iOS?(How to i

2019-10-19 19:33发布

我使用NetworkReachability找出我的应用程序的连接状态:

NetworkReachability(this.currentHostUrl);
remoteHostReachability.SetNotification(this.ReachabilityChanged);
remoteHostReachability.Schedule(CFRunLoop.Current, CFRunLoop.ModeDefault);

回调方法如下:

void ReachabilityChanged(NetworkReachabilityFlags flags)
{
    this.reachable = (flags & NetworkReachabilityFlags.Reachable) > 0;
    UIHelpers.GetAppDelegate().UpdateConnectivityToast(this.reachable);
}

现在,如果我切换到飞行模式 ,回调立即调用和标志参数为0。然后,它再次触发后不久的标志

ConnectionRequired|IsWWAN|Reachable|TransientConnection

如果我打开飞行模式的时候 ,我得到另一个0,然后再把

Reachable

如果我打开wifi关闭和3G踢 ,结果是:

IsWWAN|Reachable|TransientConnection

这似乎是检查Reachable是不够的。 但是,这里的逻辑是什么? 什么ConnectionRequiredTransientConnection是什么意思?

Answer 1:

如果存在ConnectionRequired,那么实际上是没有连接,即使可达存在所以它的像

bool connectionAvailable = (flags.HasFlag(Reachable) && !flags.HasFlags(ConnectionRequired))


Answer 2:

引用本细则:

ConnectionRequired :到达的,但是必须先建立连接。

TransientConnection :主机是可到达使用瞬时连接(PPP例如)。

Xamarin API文档和iOS的库文件

但你也许可以做到像下面的示例代码:

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

它主要检查是否Reachable && (!ConnectionRequired || IsWWAN)



文章来源: How to interpret NetworkReachabilityFlags in Xamarin.iOS?