diff --git a/Sources/NextcloudKit/NKCommon.swift b/Sources/NextcloudKit/NKCommon.swift index 8d491659..3ae16ab2 100644 --- a/Sources/NextcloudKit/NKCommon.swift +++ b/Sources/NextcloudKit/NKCommon.swift @@ -51,8 +51,10 @@ public struct NKCommon: Sendable { public var delegate: NextcloudKitDelegate? public var groupIdentifier: String? + // Foreground public let identifierSessionDownload: String = "com.nextcloud.nextcloudkit.session.download" public let identifierSessionUpload: String = "com.nextcloud.nextcloudkit.session.upload" + // Background public let identifierSessionDownloadBackground: String = "com.nextcloud.session.downloadbackground" public let identifierSessionUploadBackground: String = "com.nextcloud.session.uploadbackground" public let identifierSessionUploadBackgroundWWan: String = "com.nextcloud.session.uploadbackgroundWWan" @@ -474,6 +476,10 @@ public struct NKCommon: Sendable { // MARK: - Common + public func getSessionConfigurationIdentifier(_ identifier: String, account: String) -> String { + return "\(identifier).\(account)" + } + public func getSession(account: String) -> NKSession? { var session: NKSession? nksessions.forEach { result in diff --git a/Sources/NextcloudKit/NKSession.swift b/Sources/NextcloudKit/NKSession.swift index 018ecbd1..1e66394a 100644 --- a/Sources/NextcloudKit/NKSession.swift +++ b/Sources/NextcloudKit/NKSession.swift @@ -74,7 +74,7 @@ public struct NKSession: Sendable { eventMonitors: [NKMonitor(nkCommonInstance: nkCommonInstance)]) /// Session Download Background - let configurationDownloadBackground = URLSessionConfiguration.background(withIdentifier: NKCommon().identifierSessionDownloadBackground) + let configurationDownloadBackground = URLSessionConfiguration.background(withIdentifier: NKCommon().getSessionConfigurationIdentifier(NKCommon().identifierSessionDownloadBackground, account: account)) configurationDownloadBackground.allowsCellularAccess = true if #available(macOS 11, *) { @@ -93,7 +93,7 @@ public struct NKSession: Sendable { sessionDownloadBackground = URLSession(configuration: configurationDownloadBackground, delegate: backgroundSessionDelegate, delegateQueue: OperationQueue.main) /// Session Upload Background - let configurationUploadBackground = URLSessionConfiguration.background(withIdentifier: NKCommon().identifierSessionUploadBackground) + let configurationUploadBackground = URLSessionConfiguration.background(withIdentifier: NKCommon().getSessionConfigurationIdentifier(NKCommon().identifierSessionUploadBackground, account: account)) configurationUploadBackground.allowsCellularAccess = true if #available(macOS 11, *) { @@ -112,7 +112,7 @@ public struct NKSession: Sendable { sessionUploadBackground = URLSession(configuration: configurationUploadBackground, delegate: backgroundSessionDelegate, delegateQueue: OperationQueue.main) /// Session Upload Background WWan - let configurationUploadBackgroundWWan = URLSessionConfiguration.background(withIdentifier: NKCommon().identifierSessionUploadBackgroundWWan) + let configurationUploadBackgroundWWan = URLSessionConfiguration.background(withIdentifier: NKCommon().getSessionConfigurationIdentifier(NKCommon().identifierSessionUploadBackgroundWWan, account: account)) configurationUploadBackgroundWWan.allowsCellularAccess = false if #available(macOS 11, *) { diff --git a/Sources/NextcloudKit/NextcloudKit.swift b/Sources/NextcloudKit/NextcloudKit.swift index 3c73daf6..8d843023 100644 --- a/Sources/NextcloudKit/NextcloudKit.swift +++ b/Sources/NextcloudKit/NextcloudKit.swift @@ -21,8 +21,12 @@ open class NextcloudKit { private let reachabilityManager = Alamofire.NetworkReachabilityManager() #endif public var nkCommonInstance = NKCommon() + internal lazy var unauthorizedSession: Alamofire.Session = { - return Alamofire.Session(configuration: URLSessionConfiguration.af.default, + let configuration = URLSessionConfiguration.af.default + configuration.requestCachePolicy = .reloadIgnoringLocalCacheData + + return Alamofire.Session(configuration: configuration, delegate: NextcloudKitSessionDelegate(nkCommonInstance: nkCommonInstance), eventMonitors: [NKMonitor(nkCommonInstance: self.nkCommonInstance)]) }()