ios - 网络连接应仅在更改时出现

标签 ios objective-c swift alamofire

我正在使用 Alamofire NetworkReachabilityManager 来管理我的连接,如下所示。

    let reachabilityManager = NetworkReachabilityManager()
   reachabilityManager?.listener = { [weak self] status in
            switch status {
            case .notReachable:
                self?.connectionType = .notReachable
                break
            case .unknown:
                self?.connectionType = .notReachable
                break
            case .reachable(.ethernetOrWiFi):
                self?.connectionType = .wifi
                break
            case .reachable(.wwan):
                self?.connectionType = .cellular

                break
            }

public enum ReachabilityStatus {
    case unknown
    case notReachable
    case wifi
    case cellular
}

我在启动应用程序本身时收到此回调,但我不想要此回调我只在网络连接发生变化时才需要回调。

我该如何解决这个问题?

最佳答案

如何创建一个变量来存储先前的状态并在第一次调用时检查该变量是否为 nil。之后,您可以随时检查状态是否已更改。

let reachabilityManager = NetworkReachabilityManager()
var previousStatus: ReachabilityStatus? = nil

reachabilityManager?.listener = { [weak self] status in

    if let p = self.previousStatus, p == status {
        return // status hasn't changed
    } else {
        // status is nil
        self.previousStatus = status
        return 
    }

    switch status {
    case .notReachable:
        self?.connectionType = .notReachable
        break
    case .unknown:
        self?.connectionType = .notReachable
        break
    case .reachable(.ethernetOrWiFi):
        self?.connectionType = .wifi
        break
    case .reachable(.wwan):
        self?.connectionType = .cellular

        break
}

关于ios - 网络连接应仅在更改时出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47262463/

相关文章:

ios - 从NSDate获取到最后UTC午夜的时间间隔

ios - XCTest无法读取启动参数

ios - 如何在人像和风景中自动对图像进行舍入?

ios - 从数据库中搜索附近的地方 [swift]

objective-c - 以编程方式获取 Storyboard ID

objective-c - 检查空的 NSSet?

swift - 最小化应用程序时避免调用 traitCollectionDidChange

ios - 如何在 XMPPvCardAvatarModule swift 3.0 中更新用户头像

ios - 尝试从数组中取出对象,反转它们,然后将它们放回原处

ios - 如何修复 ionic 2 Apple Mach-O Linker 错误?