From b135229d300967c0317becb680e950cdb196cd86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6ttger?= Date: Fri, 5 Sep 2025 19:25:56 +0200 Subject: [PATCH] Fix: Mac showed no connection when connected using Ethernet --- .../Connection/NearbyConnectionManager.swift | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/NearbyShare/Connection/NearbyConnectionManager.swift b/NearbyShare/Connection/NearbyConnectionManager.swift index 647ab2f..81a3e42 100644 --- a/NearbyShare/Connection/NearbyConnectionManager.swift +++ b/NearbyShare/Connection/NearbyConnectionManager.swift @@ -45,11 +45,11 @@ public class NearbyConnectionManager: NSObject, NetServiceDelegate, InboundNearb @Published var attachments: AttachmentDetails? = nil @Published var hasLocalNetworkAccess = true - @Published var isConnectedViaWiFi = true + @Published var isConnectedToLocalNetwork = true public var connectionUpdateCallback: (Bool) -> Void = { _ in } { didSet { - connectionUpdateCallback(isConnectedViaWiFi) + connectionUpdateCallback(isConnectedToLocalNetwork) } } @@ -69,18 +69,23 @@ public class NearbyConnectionManager: NSObject, NetServiceDelegate, InboundNearb super.init() hasConnectionMonitor.pathUpdateHandler = { path in - if path.usesInterfaceType(.wifi) { - log("[NearbyConnectionManager] Connected via WiFi.") - DispatchQueue.main.async { - self.isConnectedViaWiFi = true - self.connectionUpdateCallback(true) - } - } else { - log("[NearbyConnectionManager] WiFi connection lost.") - DispatchQueue.main.async { - self.isConnectedViaWiFi = false - self.connectionUpdateCallback(false) + + #if os(macOS) + // On Mac, the local network is available as long as the path is satisfied, since Macs do not have cellular modems + let isConnected = path.status == .satisfied + #else + // On iPhone and iPad, the local network is only available using Wi-Fi or Ethernet + let isConnected = path.usesInterfaceType(.wifi) || path.usesInterfaceType(.wiredEthernet) + #endif + + DispatchQueue.main.async { + if isConnected { + log("[NearbyConnectionManager] Connected to local network.") + } else { + log("[NearbyConnectionManager] Local network lost.") } + self.isConnectedToLocalNetwork = isConnected + self.connectionUpdateCallback(isConnected) } }