diff --git a/NetBird/Source/App/ViewModels/MainViewModel.swift b/NetBird/Source/App/ViewModels/MainViewModel.swift index eb7930a..503ee05 100644 --- a/NetBird/Source/App/ViewModels/MainViewModel.swift +++ b/NetBird/Source/App/ViewModels/MainViewModel.swift @@ -108,7 +108,7 @@ class ViewModel: ObservableObject { UserDefaults.standard.synchronize() } } - @Published var forceRelayConnection = true + @Published var forceRelayConnection = false @Published var showForceRelayAlert = false @Published var connectOnDemand = false @Published var showOnDemandAlert = false @@ -616,14 +616,8 @@ class ViewModel: ObservableObject { func getForcedRelayConnectionEnabled() -> Bool { let userDefaults = UserDefaults(suiteName: GlobalConstants.userPreferencesSuiteName) - #if os(iOS) - userDefaults?.register(defaults: [GlobalConstants.keyForceRelayConnection: true]) - return userDefaults?.bool(forKey: GlobalConstants.keyForceRelayConnection) ?? true - #else - // forced relay battery optimization not need on Apple Tv userDefaults?.register(defaults: [GlobalConstants.keyForceRelayConnection: false]) return userDefaults?.bool(forKey: GlobalConstants.keyForceRelayConnection) ?? false - #endif } func setConnectOnDemand(isEnabled: Bool) { diff --git a/NetBirdTests/SharedUserDefaultsTests.swift b/NetBirdTests/SharedUserDefaultsTests.swift index c3c60bb..fef2620 100644 --- a/NetBirdTests/SharedUserDefaultsTests.swift +++ b/NetBirdTests/SharedUserDefaultsTests.swift @@ -51,11 +51,11 @@ final class SharedUserDefaultsTests: XCTestCase { XCTAssertFalse(value, "Login required flag should be false after clearing") } - func testForceRelayConnectionDefaultsToTrue() throws { + func testForceRelayConnectionDefaultsToFalse() throws { let defaults = try XCTUnwrap(userDefaults) defaults.removeObject(forKey: GlobalConstants.keyForceRelayConnection) - defaults.register(defaults: [GlobalConstants.keyForceRelayConnection: true]) + defaults.register(defaults: [GlobalConstants.keyForceRelayConnection: false]) let value = defaults.bool(forKey: GlobalConstants.keyForceRelayConnection) - XCTAssertTrue(value, "Force relay connection should default to true") + XCTAssertFalse(value, "Force relay connection should default to false") } } diff --git a/NetbirdKit/EnvVarPackager.swift b/NetbirdKit/EnvVarPackager.swift index 817d6e2..3a8487f 100644 --- a/NetbirdKit/EnvVarPackager.swift +++ b/NetbirdKit/EnvVarPackager.swift @@ -14,12 +14,10 @@ class EnvVarPackager { return nil } - #if os(iOS) - let defaultForceRelay = true - #else - // Forced relay battery optimization not needed on Apple TV + // P2P connections are more efficient than relay for both performance + // and battery life. The previous default of true was a workaround for + // ICE stability issues that have since been fixed upstream. let defaultForceRelay = false - #endif defaults.register(defaults: [GlobalConstants.keyForceRelayConnection: defaultForceRelay]) let forceRelayConnection = defaults.bool(forKey: GlobalConstants.keyForceRelayConnection)