ios - 如何在 Alamofire 中使用 NetworkReachabilityManager

标签 ios swift alamofire reachability network-connection

我想要在 Objective-C 中使用类似于 AFNetworking 的功能,在 Swift 中使用 Alamofire NetworkReachabilityManager:

//Reachability detection
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    switch (status) {
        case AFNetworkReachabilityStatusReachableViaWWAN: {
            [self LoadNoInternetView:NO];
            break;
        }
        case AFNetworkReachabilityStatusReachableViaWiFi: {
            [self LoadNoInternetView:NO];
            break;
        }
        case AFNetworkReachabilityStatusNotReachable: {
            break;
        }
        default: {
            break;
        }
    }
}];

我目前正在使用监听器来了解状态随网络的变化

let net = NetworkReachabilityManager()
net?.startListening()

有人可以描述如何支持这些用例吗?

最佳答案

NetworkManager 类

class NetworkManager {

//shared instance
static let shared = NetworkManager()

let reachabilityManager = Alamofire.NetworkReachabilityManager(host: "www.google.com")

func startNetworkReachabilityObserver() {

    reachabilityManager?.listener = { status in
        switch status {

            case .notReachable:
                print("The network is not reachable")

            case .unknown :
                print("It is unknown whether the network is reachable")

            case .reachable(.ethernetOrWiFi):
                print("The network is reachable over the WiFi connection")

            case .reachable(.wwan):
                print("The network is reachable over the WWAN connection")

            }
        }

        // start listening
        reachabilityManager?.startListening()
   }
}

启动网络可达性观察器

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        // add network reachability observer on app start
        NetworkManager.shared.startNetworkReachabilityObserver()

        return true
    }
}

关于ios - 如何在 Alamofire 中使用 NetworkReachabilityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35427698/

相关文章:

ios - 如何从 tableView 方法中的请求中获取行数?

ios - 将 enumerateObjectsUsingBlock 转换为快速枚举 - Swift

ios - Swift - Firebase Auth with Microsoft Graph(重定向 URL 问题)

ios - UITableViewCell 重复值

ios - 在子项目(框架项目)中使用 3rd 方 pod

ios - 如何在 Alamofire 响应上 XCTAssertEqual?

ios - 如何将 TextView 高度动态更改为阈值然后允许滚动?

ios - 将 NSUserDefault 存储在钥匙串(keychain)中

ios - segueing 后如何向可见的导航 Controller 添加按钮?

ios - XMPP 如何在当前用户下线时收到通知或事件?