AFNetworking 可达性状态未更改
AFNetworking reachability status not changing
我有 AFNetworking 设置来监视网络可达性状态,这样当它可用时我可以立即进行 REST 调用,如果它不可用则可能会失败。
但是我发现它没有告诉我状态变化。我正在模拟我的 Mac 的 100% 损失,在那些时候,对 REST API 的调用将失败,但 AFNetworking 的可达性状态为 availableViewWWAN
。然后当我关闭 100% 损失时,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)")
}
}
}
这是因为 100% 丢失情况不等于完全没有连接。 100% loss 表示所有数据包都被丢弃但网络连接仍然存在,当你想模拟超时连接时很有用。
为了模拟无网络情况,您应该关闭 mac 或 iDevice 上的 wifi 连接,用于模拟器或物理设备。
我有 AFNetworking 设置来监视网络可达性状态,这样当它可用时我可以立即进行 REST 调用,如果它不可用则可能会失败。
但是我发现它没有告诉我状态变化。我正在模拟我的 Mac 的 100% 损失,在那些时候,对 REST API 的调用将失败,但 AFNetworking 的可达性状态为 availableViewWWAN
。然后当我关闭 100% 损失时,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)")
}
}
}
这是因为 100% 丢失情况不等于完全没有连接。 100% loss 表示所有数据包都被丢弃但网络连接仍然存在,当你想模拟超时连接时很有用。
为了模拟无网络情况,您应该关闭 mac 或 iDevice 上的 wifi 连接,用于模拟器或物理设备。