Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions AEPCore.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "AEPCore"
s.version = "5.10.0"
s.version = "5.11.0"

s.summary = "Core library for Adobe Experience Platform Mobile SDK. Written and maintained by Adobe."
s.description = <<-DESC
Expand All @@ -19,7 +19,7 @@ Pod::Spec.new do |s|
s.pod_target_xcconfig = { 'BUILD_LIBRARY_FOR_DISTRIBUTION' => 'YES' }

s.dependency 'AEPRulesEngine', '>= 5.0.0', '< 6.0.0'
s.dependency 'AEPServices', '>= 5.10.0', '< 6.0.0'
s.dependency 'AEPServices', '>= 5.11.0', '< 6.0.0'

s.source_files = 'AEPCore/Sources/**/*.swift'
s.resource_bundles = { 'AEPCore_Resources' => ['AEPCore/Sources/PrivacyInfo.xcprivacy'] }
Expand Down
36 changes: 22 additions & 14 deletions AEPCore.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,8 @@
3F0397DC24BE5FF30019F095 /* UserDefaultsNamedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F0397BD24BE5FF30019F095 /* UserDefaultsNamedCollection.swift */; };
3F0397DD24BE5FF30019F095 /* ApplicationSystemInfoService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F0397BE24BE5FF30019F095 /* ApplicationSystemInfoService.swift */; };
3F0397DE24BE5FF30019F095 /* SystemInfoService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F0397BF24BE5FF30019F095 /* SystemInfoService.swift */; };
B8A2C00424BE5FF30019F13 /* NetworkPathMonitorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8A2C03024BE5FF30019F13 /* NetworkPathMonitorProvider.swift */; };
B8A2C00724BE5FF30019F16 /* NetworkingIsAvailableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8A2C06024BE5FF30019F16 /* NetworkingIsAvailableTests.swift */; };
3F0397DF24BE5FF30019F095 /* URLOpening.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F0397C024BE5FF30019F095 /* URLOpening.swift */; };
3F0397E024BE5FF30019F095 /* URLService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F0397C124BE5FF30019F095 /* URLService.swift */; };
3F0397F224BE60910019F095 /* HitProcessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F0397E324BE60910019F095 /* HitProcessing.swift */; };
Expand Down Expand Up @@ -962,6 +964,8 @@
3F0397BD24BE5FF30019F095 /* UserDefaultsNamedCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserDefaultsNamedCollection.swift; sourceTree = "<group>"; };
3F0397BE24BE5FF30019F095 /* ApplicationSystemInfoService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplicationSystemInfoService.swift; sourceTree = "<group>"; };
3F0397BF24BE5FF30019F095 /* SystemInfoService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SystemInfoService.swift; sourceTree = "<group>"; };
B8A2C03024BE5FF30019F13 /* NetworkPathMonitorProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkPathMonitorProvider.swift; sourceTree = "<group>"; };
B8A2C06024BE5FF30019F16 /* NetworkingIsAvailableTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkingIsAvailableTests.swift; sourceTree = "<group>"; };
3F0397C024BE5FF30019F095 /* URLOpening.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLOpening.swift; sourceTree = "<group>"; };
3F0397C124BE5FF30019F095 /* URLService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLService.swift; sourceTree = "<group>"; };
3F0397E324BE60910019F095 /* HitProcessing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HitProcessing.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1741,6 +1745,7 @@
3F0397BE24BE5FF30019F095 /* ApplicationSystemInfoService.swift */,
3F0397A524BE5FF30019F095 /* ServiceProvider.swift */,
3F0397BF24BE5FF30019F095 /* SystemInfoService.swift */,
B8A2C03024BE5FF30019F13 /* NetworkPathMonitorProvider.swift */,
3F0397C024BE5FF30019F095 /* URLOpening.swift */,
3F0397C124BE5FF30019F095 /* URLService.swift */,
78B36A7725CA0D7700D6D25F /* UIUtils.swift */,
Expand Down Expand Up @@ -1986,6 +1991,7 @@
3F03980724BE61520019F095 /* FileSystemNamedCollectionTest.swift */,
78AA4EB92502DF2200205AE9 /* ZipArchiveTest.swift */,
78F2E2D327FF7B900073CE00 /* ServiceProviderTests.swift */,
B8A2C06024BE5FF30019F16 /* NetworkingIsAvailableTests.swift */,
75550A3E2A9930A500747BB7 /* NamedCollectionDataStoreFunctionalTests.swift */,
);
path = services;
Expand Down Expand Up @@ -3807,6 +3813,7 @@
3F0397D524BE5FF30019F095 /* DataQueue.swift in Sources */,
BB00E26D24D9BF6C00C578C1 /* URLUtility.swift in Sources */,
3F0397DE24BE5FF30019F095 /* SystemInfoService.swift in Sources */,
B8A2C00424BE5FF30019F13 /* NetworkPathMonitorProvider.swift in Sources */,
3F0397F624BE60910019F095 /* FileUnzipper.swift in Sources */,
3F0397D424BE5FF30019F095 /* SQLiteWrapper.swift in Sources */,
3F0397D024BE5FF30019F095 /* HttpMethod.swift in Sources */,
Expand Down Expand Up @@ -3849,6 +3856,7 @@
3F03981824BE61520019F095 /* DataQueueServiceTests.swift in Sources */,
3F03981B24BE61520019F095 /* FileSystemNamedCollectionTest.swift in Sources */,
78F2E2D427FF7B900073CE00 /* ServiceProviderTests.swift in Sources */,
B8A2C00724BE5FF30019F16 /* NetworkingIsAvailableTests.swift in Sources */,
24B860492CB5B0A00072868A /* HttpConnectionTests.swift in Sources */,
2EF54C292BF6C87500685C07 /* URLError+RecoverableTests.swift in Sources */,
786C004825B8F43E00F26D34 /* DefaultHeadersFormatterTests.swift in Sources */,
Expand Down Expand Up @@ -4386,7 +4394,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.core;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -4420,7 +4428,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.core;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -4512,7 +4520,7 @@
"$(inherited)",
/usr/lib/swift,
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.signal;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -4552,7 +4560,7 @@
"$(inherited)",
/usr/lib/swift,
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.signal;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -4627,7 +4635,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = come.adobe.aep.services;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -4658,7 +4666,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = come.adobe.aep.services;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -4802,7 +4810,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.AEPServicesMocks;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -4833,7 +4841,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.AEPServicesMocks;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -4864,7 +4872,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.lifecycle;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -4896,7 +4904,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.lifecycle;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -4974,7 +4982,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.identity;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -5006,7 +5014,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.identity;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -5085,7 +5093,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.AEPCoreMocks;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -5118,7 +5126,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.10.0;
MARKETING_VERSION = 5.11.0;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.AEPCoreMocks;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down
2 changes: 1 addition & 1 deletion AEPCore/Sources/configuration/ConfigurationConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import Foundation
struct ConfigurationConstants {
static let EXTENSION_NAME = "com.adobe.module.configuration"
static let FRIENDLY_NAME = "Configuration"
static let EXTENSION_VERSION = "5.10.0"
static let EXTENSION_VERSION = "5.11.0"

static let DATA_STORE_NAME = EXTENSION_NAME

Expand Down
2 changes: 1 addition & 1 deletion AEPCore/Sources/eventhub/EventHubConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ enum EventHubConstants {
static let XDM_STATE_CHANGE = "Shared state change (XDM)"
static let NAME = "com.adobe.module.eventhub"
static let FRIENDLY_NAME = "EventHub"
static let VERSION_NUMBER = "5.10.0"
static let VERSION_NUMBER = "5.11.0"

enum EventDataKeys {
static let VERSION = "version"
Expand Down
2 changes: 1 addition & 1 deletion AEPCore/Tests/MobileCoreTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ class MobileCoreTests: XCTestCase {
"friendlyName" : "mockExtension"
},
"com.adobe.module.configuration" : {
"version" : "5.10.0",
"version" : "5.11.0",

"friendlyName" : "Configuration"
},
Expand Down
4 changes: 2 additions & 2 deletions AEPIdentity.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "AEPIdentity"
s.version = "5.10.0"
s.version = "5.11.0"

s.summary = "Identity extension for Adobe Experience Platform Mobile SDK. Written and maintained by Adobe."
s.description = <<-DESC
Expand All @@ -20,7 +20,7 @@ Pod::Spec.new do |s|

s.pod_target_xcconfig = { 'BUILD_LIBRARY_FOR_DISTRIBUTION' => 'YES' }

s.dependency 'AEPCore', '>= 5.10.0', '< 6.0.0'
s.dependency 'AEPCore', '>= 5.11.0', '< 6.0.0'


end
2 changes: 1 addition & 1 deletion AEPIdentity/Sources/IdentityConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import Foundation
enum IdentityConstants {
static let EXTENSION_NAME = "com.adobe.module.identity"
static let FRIENDLY_NAME = "Identity"
static let EXTENSION_VERSION = "5.10.0"
static let EXTENSION_VERSION = "5.11.0"

static let DATASTORE_NAME = EXTENSION_NAME

Expand Down
4 changes: 2 additions & 2 deletions AEPLifecycle.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "AEPLifecycle"
s.version = "5.10.0"
s.version = "5.11.0"

s.summary = "Lifecycle extension for Adobe Experience Platform Mobile SDK. Written and maintained by Adobe."
s.description = <<-DESC
Expand All @@ -20,7 +20,7 @@ Pod::Spec.new do |s|

s.pod_target_xcconfig = { 'BUILD_LIBRARY_FOR_DISTRIBUTION' => 'YES' }

s.dependency 'AEPCore', '>= 5.10.0', '< 6.0.0'
s.dependency 'AEPCore', '>= 5.11.0', '< 6.0.0'


end
2 changes: 1 addition & 1 deletion AEPLifecycle/Sources/LifecycleConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import Foundation
enum LifecycleConstants {
static let EXTENSION_NAME = "com.adobe.module.lifecycle"
static let FRIENDLY_NAME = "Lifecycle"
static let EXTENSION_VERSION = "5.10.0"
static let EXTENSION_VERSION = "5.11.0"

static let DATA_STORE_NAME = LifecycleConstants.EXTENSION_NAME

Expand Down
2 changes: 1 addition & 1 deletion AEPServices.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "AEPServices"
s.version = "5.10.0"
s.version = "5.11.0"

s.summary = "Servcies library for Adobe Experience Platform Mobile SDK. Written and maintained by Adobe."
s.description = <<-DESC
Expand Down
35 changes: 35 additions & 0 deletions AEPServices/Sources/NetworkPathMonitorProvider.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
Copyright 2026 Adobe. All rights reserved.
This file is licensed to you under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. You may obtain a copy
of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
OF ANY KIND, either express or implied. See the License for the specific language
governing permissions and limitations under the License.
*/

import Foundation
import Network

/// Default device path check backed by `NWPathMonitor`, used by `Networking`'s default
/// `isInternetAvailable()` implementation. A single shared, long-lived monitor is used (rather than
/// creating a new one per call) so `currentPath` stays continuously up to date.
final class NetworkPathMonitorProvider {
static let shared = NetworkPathMonitorProvider()

private let monitor = NWPathMonitor()
private let queue = DispatchQueue(label: "com.adobe.networkPathMonitor.queue")

private init() {
monitor.start(queue: queue)
}

func isPathAvailable() -> Bool {
return queue.sync {
monitor.currentPath.status == .satisfied
}
}

}
12 changes: 12 additions & 0 deletions AEPServices/Sources/network/Networking.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,16 @@ public protocol Networking {
/// - completionHandler:Optional completion handler which is called once the `HttpConnection` is available; it can be called from an `HttpConnectionPerformer` if `NetworkServiceOverrider` is enabled.
/// In case of a network error, timeout or an unexpected error, the `HttpConnection` is nil
func connectAsync(networkRequest: NetworkRequest, completionHandler: ((HttpConnection) -> Void)?)

/// Returns whether network-bound SDK work should proceed right now. The default implementation checks
/// device-level path status only (`NWPathMonitor`). Override this in a custom `Networking` conformer
/// (see: overriding `NetworkService`, `ServiceProvider.shared.networkService`) to implement custom logic —
/// for example, pinging your own backend's health endpoint instead of relying on device connectivity alone.
func isInternetAvailable() -> Bool
}

public extension Networking {
func isInternetAvailable() -> Bool {
return NetworkPathMonitorProvider.shared.isPathAvailable()
}
}
Loading
Loading