Build Information
Failed to build klaviyo-swift-sdk, reference 5.3.1 (3d8ff7), with Swift 6.0 for macOS (SPM) on 30 Apr 2026 19:45:57 UTC.
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 4.70.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/klaviyo/klaviyo-swift-sdk.git
Reference: 5.3.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/klaviyo/klaviyo-swift-sdk
* tag 5.3.1 -> FETCH_HEAD
HEAD is now at 3d8ff73 fix(ci): revert --include-podspecs for KlaviyoSwiftExtension lint (#561) (#569)
Cloned https://github.com/klaviyo/klaviyo-swift-sdk.git
Revision (git rev-parse @):
3d8ff73dc7887113971430e90074d9ee9c299af7
SUCCESS checkout https://github.com/klaviyo/klaviyo-swift-sdk.git at 5.3.1
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.0
Building package at path: $PWD
https://github.com/klaviyo/klaviyo-swift-sdk.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64
Building for debugging...
[0/14] Write sources
[2/14] Copying InAppFormsTemplate.html
[4/14] Write sources
[4/14] Copying jstest.html
[6/14] Write sources
[7/14] Copying PrivacyInfo.xcprivacy
[8/14] Copying toggleHandler.js
[8/14] Write sources
[8/14] Copying klaviyo.html
[9/14] Copying consoleHandler.js
[10/14] Copying closeHandler.js
[13/14] Write swift-version-5BDAB9E9C0126B9D.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[15/25] Emitting module KlaviyoSwiftExtension
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:94:79: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
92 | /// - Parameter definitions: Array of parsed button definitions
93 | /// - Returns: Array of UNNotificationAction instances
94 | static func createActions(from definitions: [ActionButtonDefinition]) -> [UNNotificationAction] {
| | `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing static method
95 | var actions: [UNNotificationAction] = []
96 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:130:82: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
128 | /// - Parameter definition: The button definition to convert
129 | /// - Returns: A configured UNNotificationAction
130 | private static func createAction(from definition: ActionButtonDefinition) -> UNNotificationAction {
| | `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing static method
131 | UNNotificationAction(
132 | identifier: definition.id,
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:48:65: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| | `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:91:52: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
89 | ///
90 | /// - Returns: A tuple containing the set of existing categories and a boolean indicating if the fetch timed out
91 | private func fetchExistingCategories() -> (Set<UNNotificationCategory>, Bool) {
| | `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing instance method
92 | let semaphore = DispatchSemaphore(value: 0)
93 | var existingCategories: Set<UNNotificationCategory> = []
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:121:23: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
118 | /// - new: New category to add or update
119 | /// - Returns: Merged set of categories with the new category added/updated
120 | private func mergeCategories(
| `- note: add @available attribute to enclosing instance method
121 | existing: Set<UNNotificationCategory>,
| `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
122 | new: UNNotificationCategory
123 | ) -> Set<UNNotificationCategory> {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:122:14: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
118 | /// - new: New category to add or update
119 | /// - Returns: Merged set of categories with the new category added/updated
120 | private func mergeCategories(
| `- note: add @available attribute to enclosing instance method
121 | existing: Set<UNNotificationCategory>,
122 | new: UNNotificationCategory
| `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
123 | ) -> Set<UNNotificationCategory> {
124 | var merged = existing
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:123:14: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
118 | /// - new: New category to add or update
119 | /// - Returns: Merged set of categories with the new category added/updated
120 | private func mergeCategories(
| `- note: add @available attribute to enclosing instance method
121 | existing: Set<UNNotificationCategory>,
122 | new: UNNotificationCategory
123 | ) -> Set<UNNotificationCategory> {
| `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
124 | var merged = existing
125 | merged = merged.filter { $0.identifier != new.identifier }
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:41:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
38 | /// - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
39 | /// - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
40 | public static func handleNotificationServiceDidReceivedRequest(
| `- note: add @available attribute to enclosing static method
41 | request: UNNotificationRequest,
| `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
42 | bestAttemptContent: UNMutableNotificationContent,
43 | contentHandler: @escaping (UNNotificationContent) -> Void,
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:42:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
38 | /// - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
39 | /// - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
40 | public static func handleNotificationServiceDidReceivedRequest(
| `- note: add @available attribute to enclosing static method
41 | request: UNNotificationRequest,
42 | bestAttemptContent: UNMutableNotificationContent,
| `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
43 | contentHandler: @escaping (UNNotificationContent) -> Void,
44 | fallbackMediaType: String = "jpg"
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:43:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
38 | /// - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
39 | /// - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
40 | public static func handleNotificationServiceDidReceivedRequest(
| `- note: add @available attribute to enclosing static method
41 | request: UNNotificationRequest,
42 | bestAttemptContent: UNMutableNotificationContent,
43 | contentHandler: @escaping (UNNotificationContent) -> Void,
| `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
44 | fallbackMediaType: String = "jpg"
45 | ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:57:57: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
55 | /// - Parameters:
56 | /// - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
57 | private static func handleBadge(bestAttemptContent: UNMutableNotificationContent) {
| | `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing static method
58 | guard let badgeConfigValue = bestAttemptContent.userInfo["badge_config"] as? String else { return }
59 | // retrieve the app group user defaults used to store the count
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:88:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
85 | /// - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
86 | /// - contentHandler: the closure that needs to be called before the time iOS provides for us to mutate the content
87 | private static func handleRichMedia(
| `- note: add @available attribute to enclosing static method
88 | bestAttemptContent: UNMutableNotificationContent,
| `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
89 | contentHandler: @escaping (UNNotificationContent) -> Void,
90 | fallbackMediaType: String = "jpg"
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:89:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
85 | /// - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
86 | /// - contentHandler: the closure that needs to be called before the time iOS provides for us to mutate the content
87 | private static func handleRichMedia(
| `- note: add @available attribute to enclosing static method
88 | bestAttemptContent: UNMutableNotificationContent,
89 | contentHandler: @escaping (UNNotificationContent) -> Void,
| `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
90 | fallbackMediaType: String = "jpg"
91 | ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:129:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
126 | }
127 |
128 | public static func handleNotificationServiceExtensionTimeWillExpireRequest(
| `- note: add @available attribute to enclosing static method
129 | request: UNNotificationRequest,
| `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
130 | bestAttemptContent: UNMutableNotificationContent,
131 | contentHandler: @escaping (UNNotificationContent) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:130:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
126 | }
127 |
128 | public static func handleNotificationServiceExtensionTimeWillExpireRequest(
| `- note: add @available attribute to enclosing static method
129 | request: UNNotificationRequest,
130 | bestAttemptContent: UNMutableNotificationContent,
| `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
131 | contentHandler: @escaping (UNNotificationContent) -> Void
132 | ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:131:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
126 | }
127 |
128 | public static func handleNotificationServiceExtensionTimeWillExpireRequest(
| `- note: add @available attribute to enclosing static method
129 | request: UNNotificationRequest,
130 | bestAttemptContent: UNMutableNotificationContent,
131 | contentHandler: @escaping (UNNotificationContent) -> Void
| `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
132 | ) {
133 | // Still try to register action buttons before timeout
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:179:32: error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
174 | /// - completion: closure that will be called once the file has been moved and an attachment has been created.
175 | /// Note that in the case of failure during file transfer or creating an attachment this closure will be called with `nil` indicating a failure.
176 | private static func createAttachment(
| `- note: add @available attribute to enclosing static method
177 | localFileURL: URL,
178 | localFilePathWithTypeString: String,
179 | completion: @escaping (UNNotificationAttachment?) -> Void
| `- error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
180 | ) {
181 | let localFileURLWithType: URL
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:213:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
210 | /// - request: the notification request
211 | /// - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
212 | private static func handleActionButtons(
| `- note: add @available attribute to enclosing static method
213 | request: UNNotificationRequest,
| `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
214 | bestAttemptContent: UNMutableNotificationContent
215 | ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:214:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
210 | /// - request: the notification request
211 | /// - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
212 | private static func handleActionButtons(
| `- note: add @available attribute to enclosing static method
213 | request: UNNotificationRequest,
214 | bestAttemptContent: UNMutableNotificationContent
| `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
215 | ) {
216 | // Respect developer-set categories for non-Klaviyo notifications
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:11:11: error: 'Logger' is only available in macOS 11.0 or newer
9 |
10 | @available(iOS 14.0, *)
11 | extension Logger {
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing extension
12 | private static var subsystem = "com.klaviyo.klaviyo-swift-sdk.klaviyoSwiftExtension"
13 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:24:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
| `- note: add @available attribute to enclosing extension
23 | /// Logger for Push Action Buttons
24 | static let actionButtons = Logger(category: "Action Buttons")
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing static property
25 | /// Logger for Rich Media
26 | static let richMedia = Logger(category: "Rich Media")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:26:28: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
| `- note: add @available attribute to enclosing extension
23 | /// Logger for Push Action Buttons
24 | static let actionButtons = Logger(category: "Action Buttons")
25 | /// Logger for Rich Media
26 | static let richMedia = Logger(category: "Rich Media")
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing static property
27 | /// Logger for notification category management
28 | static let notifications = Logger(category: "Notifications")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:28:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
| `- note: add @available attribute to enclosing extension
23 | /// Logger for Push Action Buttons
24 | static let actionButtons = Logger(category: "Action Buttons")
:
26 | static let richMedia = Logger(category: "Rich Media")
27 | /// Logger for notification category management
28 | static let notifications = Logger(category: "Notifications")
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing static property
29 | }
30 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:22:11: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing extension
23 | /// Logger for Push Action Buttons
24 | static let actionButtons = Logger(category: "Action Buttons")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/UNNotificationContent+Klaviyo.swift:23:11: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
21 | }
22 |
23 | extension UNNotificationContent {
| | `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing extension
24 | /// Determines if this notification content originated from Klaviyo.
25 | var isKlaviyoNotification: Bool {
[16/25] Compiling AnyCodable AnyEncodable.swift
[17/25] Compiling KlaviyoSwiftExtension KlaviyoActionButtonParser.swift
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:94:79: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
92 | /// - Parameter definitions: Array of parsed button definitions
93 | /// - Returns: Array of UNNotificationAction instances
94 | static func createActions(from definitions: [ActionButtonDefinition]) -> [UNNotificationAction] {
| | `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing static method
95 | var actions: [UNNotificationAction] = []
96 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:130:82: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
128 | /// - Parameter definition: The button definition to convert
129 | /// - Returns: A configured UNNotificationAction
130 | private static func createAction(from definition: ActionButtonDefinition) -> UNNotificationAction {
| | `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing static method
131 | UNNotificationAction(
132 | identifier: definition.id,
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:24:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
| `- note: add @available attribute to enclosing extension
23 | /// Logger for Push Action Buttons
24 | static let actionButtons = Logger(category: "Action Buttons")
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing static property
25 | /// Logger for Rich Media
26 | static let richMedia = Logger(category: "Rich Media")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:50:17: error: 'Logger' is only available in macOS 11.0 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
42 | /// - Parameter userInfo: The notification's userInfo dictionary
43 | /// - Returns: Array of parsed button definitions, or nil if none found
44 | static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
| `- note: add @available attribute to enclosing static method
45 | // Extract body dictionary
46 | guard let body = userInfo["body"] as? [String: Any],
:
48 | !actionButtonsArray.isEmpty else {
49 | if #available(iOS 14.0, *) {
50 | Logger.actionButtons.info("No action buttons found in notification payload")
| |- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
51 | }
52 | return nil
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:50:43: error: 'OSLogMessage' is only available in macOS 11.0 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
42 | /// - Parameter userInfo: The notification's userInfo dictionary
43 | /// - Returns: Array of parsed button definitions, or nil if none found
44 | static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
| `- note: add @available attribute to enclosing static method
45 | // Extract body dictionary
46 | guard let body = userInfo["body"] as? [String: Any],
:
48 | !actionButtonsArray.isEmpty else {
49 | if #available(iOS 14.0, *) {
50 | Logger.actionButtons.info("No action buttons found in notification payload")
| |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
51 | }
52 | return nil
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:64:21: error: 'Logger' is only available in macOS 11.0 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
42 | /// - Parameter userInfo: The notification's userInfo dictionary
43 | /// - Returns: Array of parsed button definitions, or nil if none found
44 | static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
| `- note: add @available attribute to enclosing static method
45 | // Extract body dictionary
46 | guard let body = userInfo["body"] as? [String: Any],
:
62 | let action = ActionType(rawValue: actionString) else {
63 | if #available(iOS 14.0, *) {
64 | Logger.actionButtons.warning("Button data is missing or malformed. Missing an id, label, and/or action. Skipping button: \(buttonData.description)")
| |- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
65 | }
66 | continue // Skip invalid button definitions
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:64:50: error: 'OSLogMessage' is only available in macOS 11.0 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
42 | /// - Parameter userInfo: The notification's userInfo dictionary
43 | /// - Returns: Array of parsed button definitions, or nil if none found
44 | static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
| `- note: add @available attribute to enclosing static method
45 | // Extract body dictionary
46 | guard let body = userInfo["body"] as? [String: Any],
:
62 | let action = ActionType(rawValue: actionString) else {
63 | if #available(iOS 14.0, *) {
64 | Logger.actionButtons.warning("Button data is missing or malformed. Missing an id, label, and/or action. Skipping button: \(buttonData.description)")
| |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
65 | }
66 | continue // Skip invalid button definitions
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:64:143: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
42 | /// - Parameter userInfo: The notification's userInfo dictionary
43 | /// - Returns: Array of parsed button definitions, or nil if none found
44 | static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
| `- note: add @available attribute to enclosing static method
45 | // Extract body dictionary
46 | guard let body = userInfo["body"] as? [String: Any],
:
62 | let action = ActionType(rawValue: actionString) else {
63 | if #available(iOS 14.0, *) {
64 | Logger.actionButtons.warning("Button data is missing or malformed. Missing an id, label, and/or action. Skipping button: \(buttonData.description)")
| |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
65 | }
66 | continue // Skip invalid button definitions
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:74:21: error: 'Logger' is only available in macOS 11.0 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
42 | /// - Parameter userInfo: The notification's userInfo dictionary
43 | /// - Returns: Array of parsed button definitions, or nil if none found
44 | static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
| `- note: add @available attribute to enclosing static method
45 | // Extract body dictionary
46 | guard let body = userInfo["body"] as? [String: Any],
:
72 | guard isValidActionURLCombination(action: action, url: url) else {
73 | if #available(iOS 14.0, *) {
74 | Logger.actionButtons.warning("Button url is incompatible with its action. Skipping button: \(buttonData.description)")
| |- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
75 | }
76 | continue
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:74:50: error: 'OSLogMessage' is only available in macOS 11.0 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
42 | /// - Parameter userInfo: The notification's userInfo dictionary
43 | /// - Returns: Array of parsed button definitions, or nil if none found
44 | static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
| `- note: add @available attribute to enclosing static method
45 | // Extract body dictionary
46 | guard let body = userInfo["body"] as? [String: Any],
:
72 | guard isValidActionURLCombination(action: action, url: url) else {
73 | if #available(iOS 14.0, *) {
74 | Logger.actionButtons.warning("Button url is incompatible with its action. Skipping button: \(buttonData.description)")
| |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
75 | }
76 | continue
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:74:113: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
42 | /// - Parameter userInfo: The notification's userInfo dictionary
43 | /// - Returns: Array of parsed button definitions, or nil if none found
44 | static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
| `- note: add @available attribute to enclosing static method
45 | // Extract body dictionary
46 | guard let body = userInfo["body"] as? [String: Any],
:
72 | guard isValidActionURLCombination(action: action, url: url) else {
73 | if #available(iOS 14.0, *) {
74 | Logger.actionButtons.warning("Button url is incompatible with its action. Skipping button: \(buttonData.description)")
| |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
75 | }
76 | continue
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:95:23: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
92 | /// - Parameter definitions: Array of parsed button definitions
93 | /// - Returns: Array of UNNotificationAction instances
94 | static func createActions(from definitions: [ActionButtonDefinition]) -> [UNNotificationAction] {
| `- note: add @available attribute to enclosing static method
95 | var actions: [UNNotificationAction] = []
| |- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
| `- note: add 'if #available' version check
96 |
97 | for definition in definitions {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:131:9: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
35 | /// }
36 | /// ```
37 | enum KlaviyoActionButtonParser {
| `- note: add @available attribute to enclosing enum
38 | // MARK: - Public Methods
39 |
:
128 | /// - Parameter definition: The button definition to convert
129 | /// - Returns: A configured UNNotificationAction
130 | private static func createAction(from definition: ActionButtonDefinition) -> UNNotificationAction {
| `- note: add @available attribute to enclosing static method
131 | UNNotificationAction(
| |- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
| `- note: add 'if #available' version check
132 | identifier: definition.id,
133 | title: definition.label,
[18/25] Compiling KlaviyoSwiftExtension UNNotificationContent+Klaviyo.swift
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/UNNotificationContent+Klaviyo.swift:23:11: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
21 | }
22 |
23 | extension UNNotificationContent {
| | `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing extension
24 | /// Determines if this notification content originated from Klaviyo.
25 | var isKlaviyoNotification: Bool {
[19/25] Compiling KlaviyoSwiftExtension KlaviyoExtension.swift
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:41:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
38 | /// - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
39 | /// - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
40 | public static func handleNotificationServiceDidReceivedRequest(
| `- note: add @available attribute to enclosing static method
41 | request: UNNotificationRequest,
| `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
42 | bestAttemptContent: UNMutableNotificationContent,
43 | contentHandler: @escaping (UNNotificationContent) -> Void,
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:42:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
38 | /// - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
39 | /// - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
40 | public static func handleNotificationServiceDidReceivedRequest(
| `- note: add @available attribute to enclosing static method
41 | request: UNNotificationRequest,
42 | bestAttemptContent: UNMutableNotificationContent,
| `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
43 | contentHandler: @escaping (UNNotificationContent) -> Void,
44 | fallbackMediaType: String = "jpg"
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:43:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
38 | /// - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
39 | /// - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
40 | public static func handleNotificationServiceDidReceivedRequest(
| `- note: add @available attribute to enclosing static method
41 | request: UNNotificationRequest,
42 | bestAttemptContent: UNMutableNotificationContent,
43 | contentHandler: @escaping (UNNotificationContent) -> Void,
| `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
44 | fallbackMediaType: String = "jpg"
45 | ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:57:57: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
55 | /// - Parameters:
56 | /// - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
57 | private static func handleBadge(bestAttemptContent: UNMutableNotificationContent) {
| | `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing static method
58 | guard let badgeConfigValue = bestAttemptContent.userInfo["badge_config"] as? String else { return }
59 | // retrieve the app group user defaults used to store the count
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:88:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
85 | /// - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
86 | /// - contentHandler: the closure that needs to be called before the time iOS provides for us to mutate the content
87 | private static func handleRichMedia(
| `- note: add @available attribute to enclosing static method
88 | bestAttemptContent: UNMutableNotificationContent,
| `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
89 | contentHandler: @escaping (UNNotificationContent) -> Void,
90 | fallbackMediaType: String = "jpg"
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:89:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
85 | /// - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
86 | /// - contentHandler: the closure that needs to be called before the time iOS provides for us to mutate the content
87 | private static func handleRichMedia(
| `- note: add @available attribute to enclosing static method
88 | bestAttemptContent: UNMutableNotificationContent,
89 | contentHandler: @escaping (UNNotificationContent) -> Void,
| `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
90 | fallbackMediaType: String = "jpg"
91 | ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:129:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
126 | }
127 |
128 | public static func handleNotificationServiceExtensionTimeWillExpireRequest(
| `- note: add @available attribute to enclosing static method
129 | request: UNNotificationRequest,
| `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
130 | bestAttemptContent: UNMutableNotificationContent,
131 | contentHandler: @escaping (UNNotificationContent) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:130:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
126 | }
127 |
128 | public static func handleNotificationServiceExtensionTimeWillExpireRequest(
| `- note: add @available attribute to enclosing static method
129 | request: UNNotificationRequest,
130 | bestAttemptContent: UNMutableNotificationContent,
| `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
131 | contentHandler: @escaping (UNNotificationContent) -> Void
132 | ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:131:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
126 | }
127 |
128 | public static func handleNotificationServiceExtensionTimeWillExpireRequest(
| `- note: add @available attribute to enclosing static method
129 | request: UNNotificationRequest,
130 | bestAttemptContent: UNMutableNotificationContent,
131 | contentHandler: @escaping (UNNotificationContent) -> Void
| `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
132 | ) {
133 | // Still try to register action buttons before timeout
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:179:32: error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
174 | /// - completion: closure that will be called once the file has been moved and an attachment has been created.
175 | /// Note that in the case of failure during file transfer or creating an attachment this closure will be called with `nil` indicating a failure.
176 | private static func createAttachment(
| `- note: add @available attribute to enclosing static method
177 | localFileURL: URL,
178 | localFilePathWithTypeString: String,
179 | completion: @escaping (UNNotificationAttachment?) -> Void
| `- error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
180 | ) {
181 | let localFileURLWithType: URL
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:213:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
210 | /// - request: the notification request
211 | /// - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
212 | private static func handleActionButtons(
| `- note: add @available attribute to enclosing static method
213 | request: UNNotificationRequest,
| `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
214 | bestAttemptContent: UNMutableNotificationContent
215 | ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:214:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
210 | /// - request: the notification request
211 | /// - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
212 | private static func handleActionButtons(
| `- note: add @available attribute to enclosing static method
213 | request: UNNotificationRequest,
214 | bestAttemptContent: UNMutableNotificationContent
| `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
215 | ) {
216 | // Respect developer-set categories for non-Klaviyo notifications
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:26:28: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
| `- note: add @available attribute to enclosing extension
23 | /// Logger for Push Action Buttons
24 | static let actionButtons = Logger(category: "Action Buttons")
25 | /// Logger for Rich Media
26 | static let richMedia = Logger(category: "Rich Media")
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing static property
27 | /// Logger for notification category management
28 | static let notifications = Logger(category: "Notifications")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:155:21: error: 'Logger' is only available in macOS 11.0 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
141 | /// - completion: closure that would be called when the media has finished downloading and the URL to the data on disk is available.
142 | /// note that in the case of failure the closure will still be called but with `nil`.
143 | private static func downloadMedia(
| `- note: add @available attribute to enclosing static method
144 | for urlString: String,
145 | completion: @escaping (URL?) -> Void
:
153 | if let error = error {
154 | if #available(iOS 14.0, *) {
155 | Logger.richMedia.error("Error when downloading push media: \(error.localizedDescription)")
| |- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
156 | }
157 | completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:155:44: error: 'OSLogMessage' is only available in macOS 11.0 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
141 | /// - completion: closure that would be called when the media has finished downloading and the URL to the data on disk is available.
142 | /// note that in the case of failure the closure will still be called but with `nil`.
143 | private static func downloadMedia(
| `- note: add @available attribute to enclosing static method
144 | for urlString: String,
145 | completion: @escaping (URL?) -> Void
:
153 | if let error = error {
154 | if #available(iOS 14.0, *) {
155 | Logger.richMedia.error("Error when downloading push media: \(error.localizedDescription)")
| |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
156 | }
157 | completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:155:81: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
141 | /// - completion: closure that would be called when the media has finished downloading and the URL to the data on disk is available.
142 | /// note that in the case of failure the closure will still be called but with `nil`.
143 | private static func downloadMedia(
| `- note: add @available attribute to enclosing static method
144 | for urlString: String,
145 | completion: @escaping (URL?) -> Void
:
153 | if let error = error {
154 | if #available(iOS 14.0, *) {
155 | Logger.richMedia.error("Error when downloading push media: \(error.localizedDescription)")
| |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
156 | }
157 | completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:183:36: error: 'init(filePath:directoryHint:relativeTo:)' is only available in macOS 13.0 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
174 | /// - completion: closure that will be called once the file has been moved and an attachment has been created.
175 | /// Note that in the case of failure during file transfer or creating an attachment this closure will be called with `nil` indicating a failure.
176 | private static func createAttachment(
| `- note: add @available attribute to enclosing static method
177 | localFileURL: URL,
178 | localFilePathWithTypeString: String,
:
181 | let localFileURLWithType: URL
182 | if #available(iOS 16.0, *) {
183 | localFileURLWithType = URL(filePath: localFilePathWithTypeString)
| |- error: 'init(filePath:directoryHint:relativeTo:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
184 | } else {
185 | localFileURLWithType = URL(fileURLWithPath: localFilePathWithTypeString)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:195:37: error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
26 | }
27 |
28 | public enum KlaviyoExtensionSDK {
| `- note: add @available attribute to enclosing enum
29 | /// Call this method when you receive a rich push notification in the notification service extension.
30 | /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
:
174 | /// - completion: closure that will be called once the file has been moved and an attachment has been created.
175 | /// Note that in the case of failure during file transfer or creating an attachment this closure will be called with `nil` indicating a failure.
176 | private static func createAttachment(
| `- note: add @available attribute to enclosing static method
177 | localFileURL: URL,
178 | localFilePathWithTypeString: String,
:
193 | }
194 |
195 | guard let attachment = try? UNNotificationAttachment(
| |- error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
| `- note: add 'if #available' version check
196 | identifier: "",
197 | url: localFileURLWithType,
[20/25] Compiling KlaviyoSwiftExtension ActionType.swift
[21/25] Compiling KlaviyoSwiftExtension Logger+Ext.swift
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:11:11: error: 'Logger' is only available in macOS 11.0 or newer
9 |
10 | @available(iOS 14.0, *)
11 | extension Logger {
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing extension
12 | private static var subsystem = "com.klaviyo.klaviyo-swift-sdk.klaviyoSwiftExtension"
13 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:24:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
| `- note: add @available attribute to enclosing extension
23 | /// Logger for Push Action Buttons
24 | static let actionButtons = Logger(category: "Action Buttons")
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing static property
25 | /// Logger for Rich Media
26 | static let richMedia = Logger(category: "Rich Media")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:26:28: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
| `- note: add @available attribute to enclosing extension
23 | /// Logger for Push Action Buttons
24 | static let actionButtons = Logger(category: "Action Buttons")
25 | /// Logger for Rich Media
26 | static let richMedia = Logger(category: "Rich Media")
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing static property
27 | /// Logger for notification category management
28 | static let notifications = Logger(category: "Notifications")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:28:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
| `- note: add @available attribute to enclosing extension
23 | /// Logger for Push Action Buttons
24 | static let actionButtons = Logger(category: "Action Buttons")
:
26 | static let richMedia = Logger(category: "Rich Media")
27 | /// Logger for notification category management
28 | static let notifications = Logger(category: "Notifications")
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing static property
29 | }
30 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:22:11: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing extension
23 | /// Logger for Push Action Buttons
24 | static let actionButtons = Logger(category: "Action Buttons")
[22/25] Compiling KlaviyoSwiftExtension KlaviyoCategoryManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:48:65: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| | `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:91:52: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
89 | ///
90 | /// - Returns: A tuple containing the set of existing categories and a boolean indicating if the fetch timed out
91 | private func fetchExistingCategories() -> (Set<UNNotificationCategory>, Bool) {
| | `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
| `- note: add @available attribute to enclosing instance method
92 | let semaphore = DispatchSemaphore(value: 0)
93 | var existingCategories: Set<UNNotificationCategory> = []
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:121:23: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
118 | /// - new: New category to add or update
119 | /// - Returns: Merged set of categories with the new category added/updated
120 | private func mergeCategories(
| `- note: add @available attribute to enclosing instance method
121 | existing: Set<UNNotificationCategory>,
| `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
122 | new: UNNotificationCategory
123 | ) -> Set<UNNotificationCategory> {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:122:14: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
118 | /// - new: New category to add or update
119 | /// - Returns: Merged set of categories with the new category added/updated
120 | private func mergeCategories(
| `- note: add @available attribute to enclosing instance method
121 | existing: Set<UNNotificationCategory>,
122 | new: UNNotificationCategory
| `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
123 | ) -> Set<UNNotificationCategory> {
124 | var merged = existing
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:123:14: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
118 | /// - new: New category to add or update
119 | /// - Returns: Merged set of categories with the new category added/updated
120 | private func mergeCategories(
| `- note: add @available attribute to enclosing instance method
121 | existing: Set<UNNotificationCategory>,
122 | new: UNNotificationCategory
123 | ) -> Set<UNNotificationCategory> {
| `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
124 | var merged = existing
125 | merged = merged.filter { $0.identifier != new.identifier }
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:28:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
| `- note: add @available attribute to enclosing extension
23 | /// Logger for Push Action Buttons
24 | static let actionButtons = Logger(category: "Action Buttons")
:
26 | static let richMedia = Logger(category: "Rich Media")
27 | /// Logger for notification category management
28 | static let notifications = Logger(category: "Notifications")
| | `- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add @available attribute to enclosing static property
29 | }
30 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:65:39: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
:
63 | // The category will still be registered, but we won't preserve existing ones
64 | // This is acceptable since NSE has tight time constraints
65 | let mergedCategories: Set<UNNotificationCategory>
| |- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
| `- note: add 'if #available' version check
66 | if fetchTimedOut {
67 | // If we timed out, just register the new category
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:52:28: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
51 | // Create the category
52 | let category = UNNotificationCategory(
| |- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
| `- note: add 'if #available' version check
53 | identifier: categoryIdentifier,
54 | actions: actions,
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:65:39: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
:
63 | // The category will still be registered, but we won't preserve existing ones
64 | // This is acceptable since NSE has tight time constraints
65 | let mergedCategories: Set<UNNotificationCategory>
| |- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
| `- note: add 'if #available' version check
66 | if fetchTimedOut {
67 | // If we timed out, just register the new category
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:70:21: error: 'Logger' is only available in macOS 11.0 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
:
68 | // This is a trade-off: we might lose some existing categories, but we avoid blocking
69 | if #available(iOS 14.0, *) {
70 | Logger.notifications.warning("Could not retrieve existing categories. Prioritizing and setting the incoming category. Existing categories may be lost.")
| |- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
71 | }
72 | mergedCategories = [category]
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:70:50: error: 'OSLogMessage' is only available in macOS 11.0 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
:
68 | // This is a trade-off: we might lose some existing categories, but we avoid blocking
69 | if #available(iOS 14.0, *) {
70 | Logger.notifications.warning("Could not retrieve existing categories. Prioritizing and setting the incoming category. Existing categories may be lost.")
| |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
71 | }
72 | mergedCategories = [category]
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:80:17: error: 'Logger' is only available in macOS 11.0 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
:
78 | // Register the merged set
79 | if #available(iOS 14.0, *) {
80 | Logger.notifications.warning("Registered new notification category '\(categoryIdentifier)'. Total categories: \(mergedCategories.count)")
| |- error: 'Logger' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
81 | }
82 | UNUserNotificationCenter.current().setNotificationCategories(mergedCategories)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:80:46: error: 'OSLogMessage' is only available in macOS 11.0 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
:
78 | // Register the merged set
79 | if #available(iOS 14.0, *) {
80 | Logger.notifications.warning("Registered new notification category '\(categoryIdentifier)'. Total categories: \(mergedCategories.count)")
| |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
81 | }
82 | UNUserNotificationCenter.current().setNotificationCategories(mergedCategories)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:80:86: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
:
78 | // Register the merged set
79 | if #available(iOS 14.0, *) {
80 | Logger.notifications.warning("Registered new notification category '\(categoryIdentifier)'. Total categories: \(mergedCategories.count)")
| |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
81 | }
82 | UNUserNotificationCenter.current().setNotificationCategories(mergedCategories)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:80:128: error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
:
78 | // Register the merged set
79 | if #available(iOS 14.0, *) {
80 | Logger.notifications.warning("Registered new notification category '\(categoryIdentifier)'. Total categories: \(mergedCategories.count)")
| |- error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
| `- note: add 'if #available' version check
81 | }
82 | UNUserNotificationCenter.current().setNotificationCategories(mergedCategories)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:82:13: error: 'UNUserNotificationCenter' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
46 | /// - categoryIdentifier: Unique identifier for this notification's category
47 | /// - actions: Array of notification actions to include in the category
48 | func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
| `- note: add @available attribute to enclosing instance method
49 | // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
50 | queue.sync {
:
80 | Logger.notifications.warning("Registered new notification category '\(categoryIdentifier)'. Total categories: \(mergedCategories.count)")
81 | }
82 | UNUserNotificationCenter.current().setNotificationCategories(mergedCategories)
| |- error: 'UNUserNotificationCenter' is only available in macOS 10.14 or newer
| `- note: add 'if #available' version check
83 | }
84 | }
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:93:37: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
89 | ///
90 | /// - Returns: A tuple containing the set of existing categories and a boolean indicating if the fetch timed out
91 | private func fetchExistingCategories() -> (Set<UNNotificationCategory>, Bool) {
| `- note: add @available attribute to enclosing instance method
92 | let semaphore = DispatchSemaphore(value: 0)
93 | var existingCategories: Set<UNNotificationCategory> = []
| |- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
| `- note: add 'if #available' version check
94 | var fetchTimedOut = false
95 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:96:9: error: 'UNUserNotificationCenter' is only available in macOS 10.14 or newer
19 | /// - Registering unique categories per notification with dynamic actions
20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
21 | class KlaviyoCategoryManager {
| `- note: add @available attribute to enclosing class
22 | static let shared = KlaviyoCategoryManager()
23 |
:
89 | ///
90 | /// - Returns: A tuple containing the set of existing categories and a boolean indicating if the fetch timed out
91 | private func fetchExistingCategories() -> (Set<UNNotificationCategory>, Bool) {
| `- note: add @available attribute to enclosing instance method
92 | let semaphore = DispatchSemaphore(value: 0)
93 | var existingCategories: Set<UNNotificationCategory> = []
94 | var fetchTimedOut = false
95 |
96 | UNUserNotificationCenter.current().getNotificationCategories { categories in
| |- error: 'UNUserNotificationCenter' is only available in macOS 10.14 or newer
| `- note: add 'if #available' version check
97 | existingCategories = categories
98 | semaphore.signal()
[23/25] Emitting module AnyCodable
[24/25] Compiling AnyCodable AnyDecodable.swift
Fetching https://github.com/Flight-School/AnyCodable
Fetching https://github.com/pointfreeco/swift-case-paths
Fetching https://github.com/pointfreeco/swift-snapshot-testing
Fetching https://github.com/pointfreeco/combine-schedulers
Fetching https://github.com/pointfreeco/swift-custom-dump
[1/2606] Fetching combine-schedulers
[80/8070] Fetching combine-schedulers, swift-custom-dump
[190/12686] Fetching combine-schedulers, swift-custom-dump, swift-case-paths
[481/13468] Fetching combine-schedulers, swift-custom-dump, swift-case-paths, anycodable
Fetched https://github.com/pointfreeco/swift-case-paths from cache (0.95s)
Fetched https://github.com/pointfreeco/swift-custom-dump from cache (0.95s)
[1/16069] Fetching swift-snapshot-testing
Fetched https://github.com/pointfreeco/swift-snapshot-testing from cache (4.98s)
Fetched https://github.com/Flight-School/AnyCodable from cache (4.98s)
Fetched https://github.com/pointfreeco/combine-schedulers from cache (4.98s)
Computing version for https://github.com/pointfreeco/combine-schedulers
Computed https://github.com/pointfreeco/combine-schedulers at 0.11.0 (3.21s)
Fetching https://github.com/pointfreeco/swift-concurrency-extras
Fetching https://github.com/pointfreeco/xctest-dynamic-overlay
[1/956] Fetching swift-concurrency-extras
[126/6679] Fetching swift-concurrency-extras, xctest-dynamic-overlay
Fetched https://github.com/pointfreeco/xctest-dynamic-overlay from cache (1.38s)
Fetched https://github.com/pointfreeco/swift-concurrency-extras from cache (1.38s)
Computing version for https://github.com/pointfreeco/xctest-dynamic-overlay
Computed https://github.com/pointfreeco/xctest-dynamic-overlay at 0.9.0 (0.58s)
Computing version for https://github.com/pointfreeco/swift-concurrency-extras
Computed https://github.com/pointfreeco/swift-concurrency-extras at 0.1.2 (0.58s)
Computing version for https://github.com/pointfreeco/swift-case-paths
Computed https://github.com/pointfreeco/swift-case-paths at 0.14.1 (0.60s)
Computing version for https://github.com/Flight-School/AnyCodable
Computed https://github.com/Flight-School/AnyCodable at 0.6.7 (0.59s)
Computing version for https://github.com/pointfreeco/swift-custom-dump
Computed https://github.com/pointfreeco/swift-custom-dump at 0.11.2 (0.58s)
Computing version for https://github.com/pointfreeco/swift-snapshot-testing
Computed https://github.com/pointfreeco/swift-snapshot-testing at 1.17.7 (0.57s)
Fetching https://github.com/swiftlang/swift-syntax
[1/75037] Fetching swift-syntax
Fetched https://github.com/swiftlang/swift-syntax from cache (4.45s)
Computing version for https://github.com/swiftlang/swift-syntax
Computed https://github.com/swiftlang/swift-syntax at 600.0.1 (0.67s)
Creating working copy for https://github.com/pointfreeco/swift-custom-dump
Working copy of https://github.com/pointfreeco/swift-custom-dump resolved at 0.11.2
Creating working copy for https://github.com/pointfreeco/swift-case-paths
Working copy of https://github.com/pointfreeco/swift-case-paths resolved at 0.14.1
Creating working copy for https://github.com/swiftlang/swift-syntax
Working copy of https://github.com/swiftlang/swift-syntax resolved at 600.0.1
Creating working copy for https://github.com/pointfreeco/swift-snapshot-testing
Working copy of https://github.com/pointfreeco/swift-snapshot-testing resolved at 1.17.7
Creating working copy for https://github.com/Flight-School/AnyCodable
Working copy of https://github.com/Flight-School/AnyCodable resolved at 0.6.7
Creating working copy for https://github.com/pointfreeco/xctest-dynamic-overlay
Working copy of https://github.com/pointfreeco/xctest-dynamic-overlay resolved at 0.9.0
Creating working copy for https://github.com/pointfreeco/combine-schedulers
Working copy of https://github.com/pointfreeco/combine-schedulers resolved at 0.11.0
Creating working copy for https://github.com/pointfreeco/swift-concurrency-extras
Working copy of https://github.com/pointfreeco/swift-concurrency-extras resolved at 0.1.2
BUILD FAILURE 6.0 macosSpm