AFNetworking 可达性状态不变
Posted
技术标签:
【中文标题】AFNetworking 可达性状态不变【英文标题】:AFNetworking reachability status not changing 【发布时间】:2016-08-23 10:17:47 【问题描述】:我设置了 AFNetworking 来监控网络可访问性状态,这样当它可用时,我可以立即进行可能会失败的 REST 调用。
但是,我发现它并没有告诉我状态变化。我在我的 Mac 上模拟 100% 的损失,在这些时间里,对 REST API 的调用会失败,但 AFNetworking 的可达性状态为availableViewWWAN
。然后当我关闭 100% loss 时,REST 调用再次工作,但根据 AFNetworking 的状态没有改变。
这是我现在使用的代码:
import AFNetworking
class ConnectionManager
static let sharedManager = ConnectionManager()
init()
AFNetworkReachabilityManager.sharedManager().startMonitoring()
AFNetworkReachabilityManager.sharedManager().setReachabilityStatusChangeBlock()
(status: AFNetworkReachabilityStatus) -> Void in
print("reachability status changed: \(status.rawValue)")
【问题讨论】:
【参考方案1】:这是因为 100% 丢失的情况不等于根本没有连接。 100% 丢失意味着所有数据包都被丢弃但网络连接仍然存在,当您想模拟超时连接时很有用。
为了模拟没有网络的情况,你应该在你的 mac 或 iDevice 上关闭你的 wifi 连接,对于模拟器或物理设备。
【讨论】:
不幸的是,这只适用于物理设备。在我的 Mac 上禁用 wifi 无法触发模拟器上的 AFNetworkReachabilityManager 状态更新。有谁知道如何在模拟器上完成这项工作?以上是关于AFNetworking 可达性状态不变的主要内容,如果未能解决你的问题,请参考以下文章
AFNetworking 2.0。如何检查套接字的可达性状态(managerForAddress :)?