网络状态监听优化

This commit is contained in:
zjx 2025-07-14 17:25:35 +08:00
parent a399554e58
commit 73512c7ef1

View File

@ -11,38 +11,14 @@ import Combine
import Alamofire import Alamofire
class SPNetworkReachabilityManager { class SPNetworkReachabilityManager {
// enum Status {
// case notReachable
// case reachableViaWiFi
// case reachableViaWWAN
// case ethernet
// }
static let manager: SPNetworkReachabilityManager = SPNetworkReachabilityManager() static let manager: SPNetworkReachabilityManager = SPNetworkReachabilityManager()
/// ///
var isReachable: Bool? var isReachable: Bool?
/* private(set) var connectionType: NWInterface.InterfaceType?
private let reachabilityManager = NetworkReachabilityManager() private(set) var status: NWPath.Status?
func startMonitoring() {
reachabilityManager?.startListening(onUpdatePerforming: { status in
switch status {
case .notReachable:
print("网络不可用")
case .unknown:
print("网络状态未知")
case .reachable(.cellular):
print("蜂窝网络连接")
case .reachable(.ethernetOrWiFi):
print("WiFi 或有线网络连接")
}
})
}
*/
private let monitor = NWPathMonitor() private let monitor = NWPathMonitor()
private let queue = DispatchQueue(label: "NetworkMonitorQueue") private let queue = DispatchQueue(label: "NetworkMonitorQueue")
@ -51,9 +27,24 @@ class SPNetworkReachabilityManager {
monitor.pathUpdateHandler = { [weak self] path in monitor.pathUpdateHandler = { [weak self] path in
guard let self = self else { return } guard let self = self else { return }
if path.status == .satisfied { self.status = path.status
if path.usesInterfaceType(.wifi) {
self.connectionType = .wifi
vpLog(message: "+++++++++++++++网络变化==wifi")
} else if path.usesInterfaceType(.cellular) {
self.connectionType = .cellular
vpLog(message: "+++++++++++++++网络变化==cellular")
} else if path.usesInterfaceType(.wiredEthernet) {
self.connectionType = .wiredEthernet
vpLog(message: "+++++++++++++++网络变化==wiredEthernet")
} else {
self.connectionType = nil
vpLog(message: "+++++++++++++++网络变化==???")
}
if path.status == .satisfied, self.connectionType != nil {
if self.isReachable == false { if self.isReachable == false {
print("++++++有网")
self.isReachable = true self.isReachable = true
DispatchQueue.main.async { DispatchQueue.main.async {
NotificationCenter.default.post(name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil) NotificationCenter.default.post(name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil)
@ -64,7 +55,6 @@ class SPNetworkReachabilityManager {
} else { } else {
if self.isReachable == true { if self.isReachable == true {
print("++++++无网")
self.isReachable = false self.isReachable = false
DispatchQueue.main.async { DispatchQueue.main.async {
NotificationCenter.default.post(name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil) NotificationCenter.default.post(name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil)
@ -73,14 +63,6 @@ class SPNetworkReachabilityManager {
self.isReachable = false self.isReachable = false
} }
} }
// if path.usesInterfaceType(.wifi) {
// print("++++++Using Wi-Fi")
// }
//
// if path.usesInterfaceType(.cellular) {
// print("++++++Using Cellular")
// }
} }
monitor.start(queue: queue) monitor.start(queue: queue)