我需要帮助理解为什么我会看到以下内容。
iOS9.x上的 AFNetworking 3.0.4
如果我使用
获取可访问性管理器AFNetworkReachabilityManager.sharedManager()
然后添加一个setReachabilityStatusChangeBlock然后我得到了我期望的结果。
NotReachable
ReachableViaWWAN
ReachableViaWiFi
所以 - 一般情况都按预期工作。
但我想更准确一点 - 我们知道我们正在谈论什么IP地址,所以我想改用managerForAddress
。这是我从网上发货的代码(大多数示例都是obj-c不是swift) - 在下面 - ip是一个地址字符串(点缀四边形):
let isLittleEndian = Int(OSHostByteOrder()) == OSLittleEndian
let htons = isLittleEndian ? _OSSwapInt16 : { $0 }
var address = sockaddr_in()
address.sin_len = UInt8(sizeofValue(address))
address.sin_family = sa_family_t(AF_INET)
address.sin_port = htons(443);
address.sin_addr.s_addr = inet_addr(ip);
addressReachability = withUnsafePointer(&address) {
AFNetworkReachabilityManager(forAddress: UnsafePointer($0))
}
然后我可以将setReachabilityStatusChangeBlock添加到此管理器并开始监视。
现在 - 我发送的IP并不重要 - 空字符串,443正在侦听的有效IP地址,443未侦听的有效IP地址,无效的IP地址 - 结果与此完全匹配共享管理器 - 如果我在wifi上 - 那么它是ReachableViaWiFi
,如果我只在4G上,那么它是ReachableViaWWAN
,如果我在飞行模式下它是NotReachable
。
所以 - 或者我完全误解了managerForAddress
是如何使用的,或者我有代码错误:)在任何一种情况下,我都喜欢听到我误解/出错的地方。