diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 6084cd3f7..c82c46101 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -30,6 +30,33 @@ jobs:
uses: gradle/actions/setup-gradle@v4
- name: Build OneSignalKMP XCFramework
run: iOS_SDK/OneSignalSDK/build_kmp_xcframework.sh
+ - name: Archive OneSignalFramework for Catalyst
+ run: |
+ xcodebuild archive \
+ -scheme OneSignalFramework \
+ -configuration Release \
+ -project iOS_SDK/OneSignalSDK/OneSignal.xcodeproj \
+ -destination 'generic/platform=macOS,variant=Mac Catalyst' \
+ -archivePath "$RUNNER_TEMP/OneSignalFramework-Catalyst.xcarchive" \
+ SKIP_INSTALL=NO \
+ BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
+ CODE_SIGN_IDENTITY= \
+ CODE_SIGNING_REQUIRED=NO \
+ CODE_SIGNING_ALLOWED=NO
+ - name: Run KMP logger Catalyst host
+ run: |
+ frameworks="$RUNNER_TEMP/OneSignalFramework-Catalyst.xcarchive/Products/Library/Frameworks"
+ host="$RUNNER_TEMP/CatalystLoggerHost"
+ xcrun --sdk macosx swiftc \
+ -target "$(uname -m)-apple-ios14.0-macabi" \
+ -F "$frameworks" \
+ -framework OneSignalOSCore \
+ -framework OneSignalCore \
+ -Xlinker -rpath \
+ -Xlinker "$frameworks" \
+ iOS_SDK/OneSignalSDK/CatalystLoggerHost/main.swift \
+ -o "$host"
+ DYLD_FRAMEWORK_PATH="$frameworks" "$host"
- name: Set Default Scheme
run: |
default="UnitTestApp"
diff --git a/OneSignal-KMP-SDK b/OneSignal-KMP-SDK
index 72581f399..17dcabac3 160000
--- a/OneSignal-KMP-SDK
+++ b/OneSignal-KMP-SDK
@@ -1 +1 @@
-Subproject commit 72581f39968104755f322b7dc48f5b3e4a401403
+Subproject commit 17dcabac39240f95ce0e35301842429101248508
diff --git a/OneSignal.podspec b/OneSignal.podspec
index ea44ec27a..0b0834bc5 100755
--- a/OneSignal.podspec
+++ b/OneSignal.podspec
@@ -8,6 +8,9 @@ Pod::Spec.new do |s|
s.source = { :git => "https://github.com/OneSignal/OneSignal-iOS-SDK.git", :tag => s.version.to_s }
s.platform = :ios, "11.0"
+ s.pod_target_xcconfig = {
+ 'IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]' => '14.0'
+ }
s.requires_arc = true
s.default_subspec = "OneSignalComplete"
diff --git a/OneSignalXCFramework.podspec b/OneSignalXCFramework.podspec
index f5ffd5f34..f88ea85f9 100644
--- a/OneSignalXCFramework.podspec
+++ b/OneSignalXCFramework.podspec
@@ -8,6 +8,9 @@ Pod::Spec.new do |s|
s.source = { :git => "https://github.com/OneSignal/OneSignal-iOS-SDK.git", :tag => s.version.to_s }
s.platform = :ios, '11.0'
+ s.pod_target_xcconfig = {
+ 'IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]' => '14.0'
+ }
s.requires_arc = true
s.default_subspec = "OneSignalComplete"
diff --git a/Package.swift b/Package.swift
index 592a3f370..5060c646c 100644
--- a/Package.swift
+++ b/Package.swift
@@ -1,10 +1,14 @@
-// swift-tools-version:5.3
+// swift-tools-version:5.5
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "OneSignalFramework", // Package name MUST be on line 7 for release automation
+ platforms: [
+ .iOS(.v11),
+ .macCatalyst(.v14),
+ ],
products: [
.library(
name: "OneSignalFramework",
diff --git a/iOS_SDK/OneSignalSDK/CatalystLoggerHost/main.swift b/iOS_SDK/OneSignalSDK/CatalystLoggerHost/main.swift
new file mode 100644
index 000000000..e3605053f
--- /dev/null
+++ b/iOS_SDK/OneSignalSDK/CatalystLoggerHost/main.swift
@@ -0,0 +1,78 @@
+import Foundation
+@_spi(OneSignalInternal) import OneSignalOSCore
+
+final class CapturingRequestSender {
+ let captured = DispatchSemaphore(value: 0)
+
+ private let lock = NSLock()
+ private(set) var requests: [URLRequest] = []
+
+ func send(
+ request: URLRequest,
+ completion: @escaping (Data?, URLResponse?, Error?) -> Void
+ ) {
+ lock.lock()
+ requests.append(request)
+ lock.unlock()
+
+ let response = HTTPURLResponse(
+ url: request.url!,
+ statusCode: 202,
+ httpVersion: nil,
+ headerFields: nil
+ )
+ DispatchQueue.global().async {
+ completion(nil, response, nil)
+ self.captured.signal()
+ }
+ }
+
+ var requestCount: Int {
+ lock.lock()
+ defer { lock.unlock() }
+ return requests.count
+ }
+
+ var firstRequest: URLRequest? {
+ lock.lock()
+ defer { lock.unlock() }
+ return requests.first
+ }
+}
+
+let requestSender = CapturingRequestSender()
+let logger = OSRemoteLogger(
+ installIdProvider: { "catalyst-host" },
+ onesignalIdProvider: { nil },
+ pushSubscriptionIdProvider: { nil },
+ appStateProvider: { "foreground" },
+ featureFlagsProvider: { [] },
+ remoteLogLevelProvider: { "INFO" },
+ exporterLoggingEnabledProvider: { false },
+ requestSender: requestSender.send
+)
+
+precondition(!logger.kmpVersion.isEmpty)
+precondition(!logger.crashStoragePath.isEmpty)
+
+logger.start()
+logger.log(level: "INFO", message: "Catalyst logger round trip")
+
+let flushed = DispatchSemaphore(value: 0)
+logger.forceFlush {
+ flushed.signal()
+}
+precondition(flushed.wait(timeout: .now() + 5) == .success)
+precondition(requestSender.captured.wait(timeout: .now() + 5) == .success)
+
+let request = requestSender.firstRequest
+precondition(request?.httpMethod == "POST")
+precondition(request?.url?.path == "/sdk/log")
+precondition(request?.httpBody?.isEmpty == false)
+
+logger.shutdown()
+
+let requestCountAfterShutdown = requestSender.requestCount
+logger.log(level: "INFO", message: "Must not be exported after shutdown")
+precondition(requestSender.captured.wait(timeout: .now() + 1) == .timedOut)
+precondition(requestSender.requestCount == requestCountAfterShutdown)
diff --git a/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj b/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj
index 388d13f78..ab6fc07bd 100644
--- a/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj
+++ b/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj
@@ -5440,6 +5440,10 @@
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
+ "FRAMEWORK_SEARCH_PATHS[sdk=macosx*]" = (
+ "$(inherited)",
+ "$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64_x86_64-maccatalyst",
+ );
"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
"$(inherited)",
"$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64",
@@ -5481,6 +5485,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -5508,6 +5513,10 @@
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
+ "FRAMEWORK_SEARCH_PATHS[sdk=macosx*]" = (
+ "$(inherited)",
+ "$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64_x86_64-maccatalyst",
+ );
"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
"$(inherited)",
"$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64",
@@ -5556,6 +5565,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -6834,6 +6844,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -6907,6 +6918,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -6976,6 +6988,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -7283,6 +7296,7 @@
INFOPLIST_FILE = OneSignalFramework/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -7488,6 +7502,7 @@
INFOPLIST_FILE = OneSignalFramework/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -7694,6 +7709,7 @@
INFOPLIST_FILE = OneSignalFramework/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -7908,6 +7924,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -7929,6 +7946,11 @@
"-force_load",
"$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64_x86_64-simulator/OneSignalKMP.framework/OneSignalKMP",
);
+ "OTHER_LDFLAGS[sdk=macosx*]" = (
+ "$(inherited)",
+ "-force_load",
+ "$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64_x86_64-maccatalyst/OneSignalKMP.framework/OneSignalKMP",
+ );
PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.OneSignalCore;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -7982,6 +8004,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8046,6 +8069,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8108,6 +8132,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8169,6 +8194,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8235,6 +8261,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8307,6 +8334,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8328,6 +8356,11 @@
"-force_load",
"$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64_x86_64-simulator/OneSignalKMP.framework/OneSignalKMP",
);
+ "OTHER_LDFLAGS[sdk=macosx*]" = (
+ "$(inherited)",
+ "-force_load",
+ "$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64_x86_64-maccatalyst/OneSignalKMP.framework/OneSignalKMP",
+ );
PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.OneSignalCore;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -8394,6 +8427,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8415,6 +8449,11 @@
"-force_load",
"$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64_x86_64-simulator/OneSignalKMP.framework/OneSignalKMP",
);
+ "OTHER_LDFLAGS[sdk=macosx*]" = (
+ "$(inherited)",
+ "-force_load",
+ "$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64_x86_64-maccatalyst/OneSignalKMP.framework/OneSignalKMP",
+ );
PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.OneSignalCore;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -8464,6 +8503,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8531,6 +8571,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8591,6 +8632,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8657,6 +8699,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Hiptic. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8862,6 +8905,7 @@
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8929,6 +8973,7 @@
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -8992,6 +9037,7 @@
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -9052,6 +9098,7 @@
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -9119,6 +9166,7 @@
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -9182,6 +9230,7 @@
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -9235,6 +9284,10 @@
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
+ "FRAMEWORK_SEARCH_PATHS[sdk=macosx*]" = (
+ "$(inherited)",
+ "$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64_x86_64-maccatalyst",
+ );
"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
"$(inherited)",
"$(SRCROOT)/../../OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework/ios-arm64",
@@ -9256,6 +9309,7 @@
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = OneSignalOSCoreFramework/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -9417,6 +9471,7 @@
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -9483,6 +9538,7 @@
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -9544,6 +9600,7 @@
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
diff --git a/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/xcshareddata/xcschemes/OneSignalOSCore.xcscheme b/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/xcshareddata/xcschemes/OneSignalOSCore.xcscheme
new file mode 100644
index 000000000..2aa670e4a
--- /dev/null
+++ b/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/xcshareddata/xcschemes/OneSignalOSCore.xcscheme
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/FileLogStore.swift b/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/FileLogStore.swift
index 85bf04266..e70dbc73c 100644
--- a/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/FileLogStore.swift
+++ b/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/FileLogStore.swift
@@ -25,9 +25,6 @@
THE SOFTWARE.
*/
-// Kotlin/Native does not produce a Mac Catalyst framework slice.
-#if !targetEnvironment(macCatalyst)
-
import Darwin
import Foundation
import OneSignalCore
@@ -236,5 +233,3 @@ final class FileLogStore: ILogFileStore {
}
}
}
-
-#endif
diff --git a/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/IOSLogger.swift b/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/IOSLogger.swift
index 682cf1360..3b981b814 100644
--- a/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/IOSLogger.swift
+++ b/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/IOSLogger.swift
@@ -25,9 +25,6 @@
THE SOFTWARE.
*/
-// Kotlin/Native does not produce a Mac Catalyst framework slice.
-#if !targetEnvironment(macCatalyst)
-
import Foundation
import OneSignalCore
@_implementationOnly import OneSignalKMP
@@ -51,5 +48,3 @@ final class IOSLogger: ILogger {
OneSignalLog.onesignalLog(.LL_DEBUG, message: message)
}
}
-
-#endif
diff --git a/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/KotlinByteArray+Data.swift b/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/KotlinByteArray+Data.swift
index 31b38b0bd..64ccf18e6 100644
--- a/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/KotlinByteArray+Data.swift
+++ b/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/KotlinByteArray+Data.swift
@@ -25,9 +25,6 @@
THE SOFTWARE.
*/
-// Kotlin/Native does not produce a Mac Catalyst framework slice.
-#if !targetEnvironment(macCatalyst)
-
import Foundation
@_implementationOnly import OneSignalKMP
@@ -36,11 +33,8 @@ extension KotlinByteArray {
AppleByteArrayInterop.shared.toNSData(bytes: self)
}
}
-
extension Data {
var kotlinByteArray: KotlinByteArray {
AppleByteArrayInterop.shared.toByteArray(data: self)
}
}
-
-#endif
diff --git a/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/OSLogCrashHandler.swift b/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/OSLogCrashHandler.swift
index 234ad09bb..b3e00c70a 100644
--- a/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/OSLogCrashHandler.swift
+++ b/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/OSLogCrashHandler.swift
@@ -25,9 +25,6 @@
THE SOFTWARE.
*/
-// Kotlin/Native does not produce a Mac Catalyst framework slice.
-#if !targetEnvironment(macCatalyst)
-
import Darwin
import Foundation
import OneSignalCore
@@ -51,7 +48,7 @@ final class OSCrashLogger: ILogger {
private let write: (String) -> Void
init(
- consoleLogLevel: @escaping () -> ONE_S_LOG_LEVEL = { OneSignalLog.getLogLevel() },
+ consoleLogLevel: @escaping () -> ONE_S_LOG_LEVEL = { OneSignalLog.getLevel() },
write: @escaping (String) -> Void = { NSLog("%@", $0) }
) {
self.consoleLogLevel = consoleLogLevel
@@ -306,5 +303,3 @@ final class OSLogCrashHandler: ILogCrashHandler {
return String(symbol[moduleNameStart.. Void
+ ) -> Void
+
private let telemetry: ILogTelemetryRemote
private let platformProvider: OSLoggerPlatformProvider
private let crashHandler: ILogCrashHandler
@@ -166,7 +170,7 @@ public final class OSRemoteLogger: OSRemoteLoggerProtocol {
private let lifecycleOperationLock = NSLock()
private let uploaderOwner = UUID()
- public init(
+ public convenience init(
installIdProvider: @escaping () -> String,
onesignalIdProvider: @escaping () -> String?,
pushSubscriptionIdProvider: @escaping () -> String?,
@@ -174,6 +178,51 @@ public final class OSRemoteLogger: OSRemoteLoggerProtocol {
featureFlagsProvider: @escaping () -> [String],
remoteLogLevelProvider: @escaping () -> String?,
exporterLoggingEnabledProvider: @escaping () -> Bool
+ ) {
+ self.init(
+ installIdProvider: installIdProvider,
+ onesignalIdProvider: onesignalIdProvider,
+ pushSubscriptionIdProvider: pushSubscriptionIdProvider,
+ appStateProvider: appStateProvider,
+ featureFlagsProvider: featureFlagsProvider,
+ remoteLogLevelProvider: remoteLogLevelProvider,
+ exporterLoggingEnabledProvider: exporterLoggingEnabledProvider,
+ requestSenderOverride: nil
+ )
+ }
+
+ @_spi(OneSignalInternal)
+ public convenience init(
+ installIdProvider: @escaping () -> String,
+ onesignalIdProvider: @escaping () -> String?,
+ pushSubscriptionIdProvider: @escaping () -> String?,
+ appStateProvider: @escaping () -> String,
+ featureFlagsProvider: @escaping () -> [String],
+ remoteLogLevelProvider: @escaping () -> String?,
+ exporterLoggingEnabledProvider: @escaping () -> Bool,
+ requestSender: @escaping RequestSender
+ ) {
+ self.init(
+ installIdProvider: installIdProvider,
+ onesignalIdProvider: onesignalIdProvider,
+ pushSubscriptionIdProvider: pushSubscriptionIdProvider,
+ appStateProvider: appStateProvider,
+ featureFlagsProvider: featureFlagsProvider,
+ remoteLogLevelProvider: remoteLogLevelProvider,
+ exporterLoggingEnabledProvider: exporterLoggingEnabledProvider,
+ requestSenderOverride: requestSender
+ )
+ }
+
+ private init(
+ installIdProvider: @escaping () -> String,
+ onesignalIdProvider: @escaping () -> String?,
+ pushSubscriptionIdProvider: @escaping () -> String?,
+ appStateProvider: @escaping () -> String,
+ featureFlagsProvider: @escaping () -> [String],
+ remoteLogLevelProvider: @escaping () -> String?,
+ exporterLoggingEnabledProvider: @escaping () -> Bool,
+ requestSenderOverride: RequestSender?
) {
let provider = OSLoggerPlatformProvider(
installIdProvider: installIdProvider,
@@ -188,15 +237,15 @@ public final class OSRemoteLogger: OSRemoteLoggerProtocol {
let crashLogger = OSCrashLogger()
let lifecycle = OSRemoteLoggerLifecycle()
let fileStore = FileLogStore(rootPath: provider.crashStoragePath)
+ let httpSender = Self.makeHttpSender(
+ requestSender: requestSenderOverride,
+ logger: logger,
+ isDiagnosticsEnabled: exporterLoggingEnabledProvider,
+ lifecycle: lifecycle
+ )
let remoteTelemetry = LoggerFactory.shared.createRemoteTelemetry(
platformProvider: provider,
- httpSender: OneSignalLogHttpSender(
- logger: logger,
- isDiagnosticsEnabled: exporterLoggingEnabledProvider,
- executeIfEnabled: { work in
- lifecycle.performIfTransportActive(work)
- }
- )
+ httpSender: httpSender
)
let crashTelemetry = LoggerFactory.shared.createCrashLocalTelemetry(
platformProvider: provider,
@@ -222,6 +271,30 @@ public final class OSRemoteLogger: OSRemoteLoggerProtocol {
self.lifecycle = lifecycle
}
+ private static func makeHttpSender(
+ requestSender: RequestSender?,
+ logger: ILogger,
+ isDiagnosticsEnabled: @escaping () -> Bool,
+ lifecycle: OSRemoteLoggerLifecycle
+ ) -> OneSignalLogHttpSender {
+ let executeIfEnabled: (@escaping () -> Void) -> Bool = { work in
+ lifecycle.performIfTransportActive(work)
+ }
+ if let requestSender {
+ return OneSignalLogHttpSender(
+ requestSender: requestSender,
+ logger: logger,
+ isDiagnosticsEnabled: isDiagnosticsEnabled,
+ executeIfEnabled: executeIfEnabled
+ )
+ }
+ return OneSignalLogHttpSender(
+ logger: logger,
+ isDiagnosticsEnabled: isDiagnosticsEnabled,
+ executeIfEnabled: executeIfEnabled
+ )
+ }
+
public func start() {
lifecycleOperationLock.lock()
guard lifecycle.start() else {
@@ -305,39 +378,3 @@ public final class OSRemoteLogger: OSRemoteLoggerProtocol {
@_spi(OneSignalInternal)
extension OSRemoteLogger: OSStructuredRemoteLoggerProtocol {}
-
-#else
-
-public final class OSRemoteLogger: OSRemoteLoggerProtocol {
- public init(
- installIdProvider: @escaping () -> String,
- onesignalIdProvider: @escaping () -> String?,
- pushSubscriptionIdProvider: @escaping () -> String?,
- appStateProvider: @escaping () -> String,
- featureFlagsProvider: @escaping () -> [String],
- remoteLogLevelProvider: @escaping () -> String?,
- exporterLoggingEnabledProvider: @escaping () -> Bool
- ) {}
-
- public let kmpVersion = "unavailable"
- public let crashStoragePath = "unavailable"
-
- public func start() {}
- public func log(level: String, message: String) {}
- public func log(
- level: String,
- message: String,
- exceptionType: String?,
- exceptionMessage: String?,
- exceptionStacktrace: String?
- ) {}
- public func forceFlush(completion: @escaping () -> Void) {
- completion()
- }
- public func shutdown() {}
-}
-
-@_spi(OneSignalInternal)
-extension OSRemoteLogger: OSStructuredRemoteLoggerProtocol {}
-
-#endif
diff --git a/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/OneSignalLogHttpSender.swift b/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/OneSignalLogHttpSender.swift
index e8219a204..68a926822 100644
--- a/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/OneSignalLogHttpSender.swift
+++ b/iOS_SDK/OneSignalSDK/OneSignalOSCore/Source/Logging/OneSignalLogHttpSender.swift
@@ -25,9 +25,6 @@
THE SOFTWARE.
*/
-// Kotlin/Native does not produce a Mac Catalyst framework slice.
-#if !targetEnvironment(macCatalyst)
-
import Foundation
@_implementationOnly import OneSignalKMP
@@ -207,5 +204,3 @@ final class OneSignalLogHttpSender: ILogHttpSender {
String(body.prefix(maximumDiagnosticBodyLength))
}
}
-
-#endif