我正在使用 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/