From 0801c644f8d175d8ac19926fa1a75b21ad589b2f Mon Sep 17 00:00:00 2001 From: Shahroz Khan Date: Wed, 13 Nov 2024 16:08:34 +0500 Subject: [PATCH 1/3] chore: added region support in NSE (#836) --- .../Config/MessagingPushConfigBuilder.swift | 17 ++++ .../Config/MessagingPushConfigOptions.swift | 1 + .../RichPush/RichPushDeliveryTracker.swift | 4 +- .../RichPush/RichPushHttpClient.swift | 15 +++- .../MessagingPushConfigBuilderTest.swift | 6 +- Tests/MessagingPush/HttpClientTest.swift | 78 +++++++++++++++++-- 6 files changed, 109 insertions(+), 12 deletions(-) diff --git a/Sources/MessagingPush/Config/MessagingPushConfigBuilder.swift b/Sources/MessagingPush/Config/MessagingPushConfigBuilder.swift index 31e9e1c4d..32fe747e2 100644 --- a/Sources/MessagingPush/Config/MessagingPushConfigBuilder.swift +++ b/Sources/MessagingPush/Config/MessagingPushConfigBuilder.swift @@ -33,6 +33,7 @@ public class MessagingPushConfigBuilder { // configuration options for MessagingPushConfigOptions private let cdpApiKey: String + private var region: Region = .US private var autoFetchDeviceToken: Bool = true private var autoTrackPushEvents: Bool = true private var showPushAppInForeground: Bool = true @@ -54,6 +55,17 @@ public class MessagingPushConfigBuilder { self.cdpApiKey = cdpApiKey } + /// Configures the region for NotificationServiceExtension for metric tracking + @discardableResult + @available(iOS, unavailable) + @available(visionOS, unavailable) + @available(iOSApplicationExtension, introduced: 13.0) + @available(visionOSApplicationExtension, introduced: 1.0) + public func region(_ region: Region) -> MessagingPushConfigBuilder { + self.region = region + return self + } + /// Configures the log level for NotificationServiceExtension, allowing customization of SDK log /// verbosity to help setup and debugging @discardableResult @@ -94,6 +106,7 @@ public class MessagingPushConfigBuilder { let configOptions = MessagingPushConfigOptions( logLevel: logLevel, cdpApiKey: cdpApiKey, + region: region, autoFetchDeviceToken: autoFetchDeviceToken, autoTrackPushEvents: autoTrackPushEvents, showPushAppInForeground: showPushAppInForeground @@ -106,6 +119,7 @@ public class MessagingPushConfigBuilder { public extension MessagingPushConfigBuilder { /// Constants used to map each of the options in MessagingPushConfigOptions. enum Keys: String { + case region case autoFetchDeviceToken case autoTrackPushEvents case showPushAppInForeground @@ -116,6 +130,9 @@ public extension MessagingPushConfigBuilder { static func build(from dictionary: [String: Any]) -> MessagingPushConfigOptions { let builder = MessagingPushConfigBuilder() + if let region = dictionary[Keys.region.rawValue] as? String { + builder.region = Region.getRegion(from: region) + } if let autoFetchDeviceToken = dictionary[Keys.autoFetchDeviceToken.rawValue] as? Bool { builder.autoFetchDeviceToken(autoFetchDeviceToken) } diff --git a/Sources/MessagingPush/Config/MessagingPushConfigOptions.swift b/Sources/MessagingPush/Config/MessagingPushConfigOptions.swift index c55f763f8..166809af9 100644 --- a/Sources/MessagingPush/Config/MessagingPushConfigOptions.swift +++ b/Sources/MessagingPush/Config/MessagingPushConfigOptions.swift @@ -6,6 +6,7 @@ import CioInternalCommon public struct MessagingPushConfigOptions { public let logLevel: CioLogLevel public let cdpApiKey: String + public let region: Region public let autoFetchDeviceToken: Bool public let autoTrackPushEvents: Bool public let showPushAppInForeground: Bool diff --git a/Sources/MessagingPush/RichPush/RichPushDeliveryTracker.swift b/Sources/MessagingPush/RichPush/RichPushDeliveryTracker.swift index 734ab450f..62c5428d0 100644 --- a/Sources/MessagingPush/RichPush/RichPushDeliveryTracker.swift +++ b/Sources/MessagingPush/RichPush/RichPushDeliveryTracker.swift @@ -5,10 +5,12 @@ import Foundation class RichPushDeliveryTracker { let httpClient: HttpClient let logger: Logger + let region: Region init(httpClient: HttpClient, logger: Logger) { self.httpClient = httpClient self.logger = logger + self.region = MessagingPush.moduleConfig.region } func trackMetric(token: String, event: Metric, deliveryId: String, timestamp: String? = nil, onComplete: @escaping (Result) -> Void) { @@ -25,7 +27,7 @@ class RichPushDeliveryTracker { let endpoint: CIOApiEndpoint = .trackPushMetricsCdp guard let httpParams = HttpRequestParams( endpoint: endpoint, - baseUrl: RichPushHttpClient.defaultAPIHost, + baseUrl: RichPushHttpClient.getDefaultApiHost(region: region), headers: nil, body: try? JSONSerialization.data(withJSONObject: properties) ) else { diff --git a/Sources/MessagingPush/RichPush/RichPushHttpClient.swift b/Sources/MessagingPush/RichPush/RichPushHttpClient.swift index 3abed3e6e..2516fb7ee 100644 --- a/Sources/MessagingPush/RichPush/RichPushHttpClient.swift +++ b/Sources/MessagingPush/RichPush/RichPushHttpClient.swift @@ -15,6 +15,8 @@ public class RichPushHttpClient: HttpClient { [cioApiSession, publicSession] } + private let region: Region + public func request(_ params: CioInternalCommon.HttpRequestParams, onComplete: @escaping (Result) -> Void) { httpRequestRunner .request( @@ -57,7 +59,7 @@ public class RichPushHttpClient: HttpClient { } func getSessionForRequest(url: URL) -> URLSession { - let cioApiHostname = URL(string: Self.defaultAPIHost)!.host + let cioApiHostname = URL(string: Self.getDefaultApiHost(region: region))!.host let requestHostname = url.host let isRequestToCIOApi = cioApiHostname == requestHostname @@ -123,7 +125,7 @@ public class RichPushHttpClient: HttpClient { self.httpRequestRunner = httpRequestRunner self.jsonAdapter = jsonAdapter self.logger = logger - + self.region = MessagingPush.moduleConfig.region self.publicSession = Self.getBasicSession() self.cioApiSession = Self.getCIOApiSession( key: MessagingPush.moduleConfig.cdpApiKey, @@ -137,7 +139,14 @@ public class RichPushHttpClient: HttpClient { } extension RichPushHttpClient { - public static let defaultAPIHost = "https://cdp.customer.io/v1" + static func getDefaultApiHost(region: Region) -> String { + switch region { + case .US: + "https://cdp.customer.io/v1" + case .EU: + "https://cdp-eu.customer.io/v1" + } + } static func authorizationHeaderForCdpApiKey(_ key: String) -> String { var returnHeader = "\(key):" diff --git a/Tests/MessagingPush/Config/MessagingPushConfigBuilderTest.swift b/Tests/MessagingPush/Config/MessagingPushConfigBuilderTest.swift index b58ceb2df..fcb42de88 100644 --- a/Tests/MessagingPush/Config/MessagingPushConfigBuilderTest.swift +++ b/Tests/MessagingPush/Config/MessagingPushConfigBuilderTest.swift @@ -1,3 +1,4 @@ +@testable import CioInternalCommon @testable import CioMessagingPush import SharedTests import XCTest @@ -41,7 +42,8 @@ class MessagingPushConfigBuilderTest: UnitTest { let givenDict: [String: Any] = [ "autoFetchDeviceToken": givenAutoFetchDeviceToken, "autoTrackPushEvents": givenAutoTrackPushEvents, - "showPushAppInForeground": givenShowPushAppInForeground + "showPushAppInForeground": givenShowPushAppInForeground, + "region": "EU" ] let config = MessagingPushConfigBuilder.build(from: givenDict) @@ -49,6 +51,7 @@ class MessagingPushConfigBuilderTest: UnitTest { XCTAssertEqual(config.autoFetchDeviceToken, givenAutoFetchDeviceToken) XCTAssertEqual(config.autoTrackPushEvents, givenAutoTrackPushEvents) XCTAssertEqual(config.showPushAppInForeground, givenShowPushAppInForeground) + XCTAssertEqual(config.region, Region.EU) } func test_initializeFromDictionaryWithIncorrectKeys_expectDefaultValues() { @@ -83,5 +86,6 @@ extension MessagingPushConfigBuilderTest { XCTAssertTrue(config.autoFetchDeviceToken, file: file, line: line) XCTAssertTrue(config.autoTrackPushEvents, file: file, line: line) XCTAssertTrue(config.showPushAppInForeground, file: file, line: line) + XCTAssertEqual(config.region, Region.US, file: file, line: line) } } diff --git a/Tests/MessagingPush/HttpClientTest.swift b/Tests/MessagingPush/HttpClientTest.swift index 2dafba6a4..a5233f865 100644 --- a/Tests/MessagingPush/HttpClientTest.swift +++ b/Tests/MessagingPush/HttpClientTest.swift @@ -16,8 +16,11 @@ class HttpClientTest: UnitTest { private let url = URL(string: "https://customer.io")! - override func setUp() { - super.setUp() + override func setUp( + enableLogs: Bool = false, + modifyModuleConfig: ((MessagingPushConfigBuilder) -> Void)? = nil + ) { + super.setUp(enableLogs: enableLogs, modifyModuleConfig: modifyModuleConfig) client = RichPushHttpClient( jsonAdapter: jsonAdapter, @@ -45,7 +48,7 @@ class HttpClientTest: UnitTest { let expectComplete = expectation(description: "Expect to complete") let params = HttpRequestParams( endpoint: .trackPushMetricsCdp, - baseUrl: RichPushHttpClient.defaultAPIHost, + baseUrl: RichPushHttpClient.getDefaultApiHost(region: Region.US), headers: nil, body: nil )! @@ -71,7 +74,7 @@ class HttpClientTest: UnitTest { let expectComplete = expectation(description: "Expect to complete") let params = HttpRequestParams( endpoint: .trackPushMetricsCdp, - baseUrl: RichPushHttpClient.defaultAPIHost, + baseUrl: RichPushHttpClient.getDefaultApiHost(region: Region.US), headers: nil, body: nil )! @@ -95,7 +98,7 @@ class HttpClientTest: UnitTest { let expectComplete = expectation(description: "Expect to complete") let params = HttpRequestParams( endpoint: .trackPushMetricsCdp, - baseUrl: RichPushHttpClient.defaultAPIHost, + baseUrl: RichPushHttpClient.getDefaultApiHost(region: Region.US), headers: nil, body: nil )! @@ -111,6 +114,41 @@ class HttpClientTest: UnitTest { waitForExpectations() } + @available(iOS, unavailable) + @available(visionOS, unavailable) + @available(iOSApplicationExtension, introduced: 13.0) + @available(visionOSApplicationExtension, introduced: 1.0) + func test_request_givenEuRegion_expectRequestToBeMade() { + super.setUp(modifyModuleConfig: { config in + config.region(Region.EU) + }) + + let expected = #"{ "message": "Success!" }"#.data! + + mockRequestResponse { + (body: expected, response: HTTPURLResponse(url: self.url, statusCode: 200, httpVersion: nil, headerFields: nil), failure: nil) + } + + let expectComplete = expectation(description: "Expect to complete") + let params = HttpRequestParams( + endpoint: .trackPushMetricsCdp, + baseUrl: RichPushHttpClient.getDefaultApiHost(region: messagingPushConfigOptions.region), + headers: nil, + body: nil + )! + client.request(params) { result in + XCTAssertTrue(self.requestRunnerMock.requestCalled) + + XCTAssertNil(result.error) + + XCTAssertEqual(result.success, expected) + + expectComplete.fulfill() + } + + waitForExpectations() + } + func test_request_givenSuccessfulResponse_expectGetResponseBody() { let expected = #"{ "message": "Success!" }"#.data! @@ -121,7 +159,7 @@ class HttpClientTest: UnitTest { let expectComplete = expectation(description: "Expect to complete") let params = HttpRequestParams( endpoint: .trackPushMetricsCdp, - baseUrl: RichPushHttpClient.defaultAPIHost, + baseUrl: RichPushHttpClient.getDefaultApiHost(region: messagingPushConfigOptions.region), headers: nil, body: nil )! @@ -151,7 +189,28 @@ class HttpClientTest: UnitTest { func test_getSessionForRequest_givenCIOApiEndpoint_expectGetCIOApiSession() { let cioApiEndpointUrl = HttpRequestParams( endpoint: .trackPushMetricsCdp, - baseUrl: RichPushHttpClient.defaultAPIHost, + baseUrl: RichPushHttpClient.getDefaultApiHost(region: Region.US), + headers: nil, + body: nil + )!.url + + let actualSession = client.getSessionForRequest(url: cioApiEndpointUrl) + + let containsAuthorizationHeader = actualSession.configuration.httpAdditionalHeaders!["Authorization"] != nil + XCTAssertTrue(containsAuthorizationHeader) + } + + @available(iOS, unavailable) + @available(visionOS, unavailable) + @available(iOSApplicationExtension, introduced: 13.0) + @available(visionOSApplicationExtension, introduced: 1.0) + func test_getSessionForRequest_givenCIOEUApiEndpoint_expectGetCIOApiSession() { + setUp(modifyModuleConfig: { config in + config.region(.EU) + }) + let cioApiEndpointUrl = HttpRequestParams( + endpoint: .trackPushMetricsCdp, + baseUrl: RichPushHttpClient.getDefaultApiHost(region: Region.EU), headers: nil, body: nil )!.url @@ -162,6 +221,11 @@ class HttpClientTest: UnitTest { XCTAssertTrue(containsAuthorizationHeader) } + func test_getDefaultApiHost_givenRegion_expectCorrectApiHost() { + XCTAssertEqual(RichPushHttpClient.getDefaultApiHost(region: .US), "https://cdp.customer.io/v1") + XCTAssertEqual(RichPushHttpClient.getDefaultApiHost(region: .EU), "https://cdp-eu.customer.io/v1") + } + func test_getSessionForRequest_givenCIOAssetLibraryEndpoint_expectPublicSession() { let actualSession = client.getSessionForRequest(url: URL(string: "https://storage.googleapis.com/cio-asset-manager-standalone/1670599791846_frederick_adoption_day.jpg")!) From 3731f685a19bd1e9840c53ab3bcd70e37deac182 Mon Sep 17 00:00:00 2001 From: Shahroz Khan Date: Wed, 13 Nov 2024 16:26:40 +0500 Subject: [PATCH 2/3] feat: support for large in-app messages (#831) --- .../Gist/EngineWeb/EngineWeb.swift | 114 +++++++++++------- .../Gist/Network/NetworkSettings.swift | 4 +- 2 files changed, 70 insertions(+), 48 deletions(-) diff --git a/Sources/MessagingInApp/Gist/EngineWeb/EngineWeb.swift b/Sources/MessagingInApp/Gist/EngineWeb/EngineWeb.swift index a5a269114..f33a203c1 100644 --- a/Sources/MessagingInApp/Gist/EngineWeb/EngineWeb.swift +++ b/Sources/MessagingInApp/Gist/EngineWeb/EngineWeb.swift @@ -34,55 +34,60 @@ public class EngineWeb: NSObject, EngineWebInstance { webView } + private let currentConfiguration: EngineWebConfiguration + public private(set) var currentRoute: String { - get { - _currentRoute - } - set { - _currentRoute = newValue - } + get { _currentRoute } + set { _currentRoute = newValue } } + /// Initializes the EngineWeb instance with the given configuration, state, and message. init(configuration: EngineWebConfiguration, state: InAppMessageState, message: Message) { self.currentMessage = message + self.currentConfiguration = configuration super.init() - _elapsedTimer.start(title: "Engine render for message: \(configuration.messageId)") + setupWebView() + injectJavaScriptListener() + loadMessage(with: state) + } + + /// Sets up the properties and appearance of the WKWebView. + private func setupWebView() { + _elapsedTimer.start(title: "Engine render for message: \(currentConfiguration.messageId)") webView.translatesAutoresizingMaskIntoConstraints = false webView.navigationDelegate = self webView.isOpaque = false - webView.backgroundColor = UIColor.clear - webView.scrollView.backgroundColor = UIColor.clear + webView.backgroundColor = .clear + webView.scrollView.backgroundColor = .clear + } - let js = "window.parent.postMessage = function(message) {webkit.messageHandlers.gist.postMessage(message)}" + /// Injects a JavaScript listener to handle messages from the web content. + private func injectJavaScriptListener() { + let js = """ + window.addEventListener('message', function(event) { + webkit.messageHandlers.gist.postMessage(event.data); + }); + """ let messageHandlerScript = WKUserScript(source: js, injectionTime: .atDocumentEnd, forMainFrameOnly: false) webView.configuration.userContentController.add(self, name: "gist") webView.configuration.userContentController.addUserScript(messageHandlerScript) + } - if #available(iOS 11.0, *) { - webView.scrollView.contentInsetAdjustmentBehavior = .never - } + private func loadMessage(with state: InAppMessageState) { + let messageUrl = "\(state.environment.networkSettings.renderer)/index.html" + logger.logWithModuleTag("Rendering message with URL: \(messageUrl)", level: .debug) - if let jsonData = try? JSONEncoder().encode(configuration), - let jsonString = String(data: jsonData, encoding: .utf8), - let options = jsonString.data(using: .utf8)?.base64EncodedString() - .addingPercentEncoding(withAllowedCharacters: .alphanumerics) { - let url = "\(state.environment.networkSettings.renderer)/index.html?options=\(options)" - logger.logWithModuleTag("Loading URL: \(url)", level: .info) - if let link = URL(string: url) { - self._timeoutTimer = Timer.scheduledTimer( - timeInterval: 5.0, - target: self, - selector: #selector(forcedTimeout), - userInfo: nil, - repeats: false - ) - let request = URLRequest(url: link) - webView.load(request) - } + if let url = URL(string: messageUrl) { + _timeoutTimer?.invalidate() + _timeoutTimer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(forcedTimeout), userInfo: nil, repeats: false) + webView.load(URLRequest(url: url)) + } else { + logger.logWithModuleTag("Invalid URL: \(messageUrl)", level: .error) + delegate?.error() } } @@ -104,10 +109,7 @@ public class EngineWeb: NSObject, EngineWebInstance { // swiftlint:disable cyclomatic_complexity extension EngineWeb: WKScriptMessageHandler { - public func userContentController( - _ userContentController: WKUserContentController, - didReceive message: WKScriptMessage - ) { + public func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { guard let dict = message.body as? [String: AnyObject], let eventProperties = dict["gist"] as? [String: AnyObject], let method = eventProperties["method"] as? String, @@ -116,6 +118,10 @@ extension EngineWeb: WKScriptMessageHandler { return } + handleEngineEvent(engineEventMethod, eventProperties: eventProperties) + } + + private func handleEngineEvent(_ engineEventMethod: EngineEvent, eventProperties: [String: AnyObject]) { switch engineEventMethod { case .bootstrapped: _timeoutTimer?.invalidate() @@ -150,27 +156,43 @@ extension EngineWeb: WKScriptMessageHandler { } // swiftlint:enable cyclomatic_complexity - extension EngineWeb: WKNavigationDelegate { - public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {} + public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { + injectConfiguration(currentConfiguration) + } + + private func injectConfiguration(_ configuration: EngineWebConfiguration) { + do { + let jsonData = try JSONEncoder().encode(["options": configuration]) + guard let jsonString = String(data: jsonData, encoding: .utf8) else { + throw NSError(domain: "EngineWeb", code: -1, userInfo: [NSLocalizedDescriptionKey: "Failed to create JSON string"]) + } + + let js = "window.postMessage(\(jsonString), '*');" + + webView.evaluateJavaScript(js) { [weak self] _, error in + if let error = error { + self?.logger.logWithModuleTag("JavaScript execution error: \(error)", level: .error) + self?.delegate?.error() + } else { + self?.logger.logWithModuleTag("Configuration injected successfully", level: .error) + } + } + } catch { + logger.logWithModuleTag("Failed to encode configuration: \(error)", level: .error) + delegate?.error() + } + } public func webViewWebContentProcessDidTerminate(_ webView: WKWebView) { delegate?.error() } - public func webView( - _ webView: WKWebView, - didFail navigation: WKNavigation!, - withError error: Error - ) { + public func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { delegate?.error() } - public func webView( - _ webView: WKWebView, - didFailProvisionalNavigation navigation: WKNavigation!, - withError error: Error - ) { + public func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { delegate?.error() } } diff --git a/Sources/MessagingInApp/Gist/Network/NetworkSettings.swift b/Sources/MessagingInApp/Gist/Network/NetworkSettings.swift index b84aa8008..b02087728 100644 --- a/Sources/MessagingInApp/Gist/Network/NetworkSettings.swift +++ b/Sources/MessagingInApp/Gist/Network/NetworkSettings.swift @@ -7,13 +7,13 @@ protocol NetworkSettings { struct NetworkSettingsProduction: NetworkSettings { let queueAPI = "https://gist-queue-consumer-api.cloud.gist.build" let engineAPI = "https://engine.api.gist.build" - let renderer = "https://renderer.gist.build/2.0" + let renderer = "https://renderer.gist.build/3.0" } struct NetworkSettingsDevelopment: NetworkSettings { let queueAPI = "https://gist-queue-consumer-api.cloud.dev.gist.build" let engineAPI = "https://engine.api.dev.gist.build" - let renderer = "https://renderer.gist.build/2.0" + let renderer = "https://renderer.gist.build/3.0" } struct NetworkSettingsLocal: NetworkSettings { From c8e1a446e2538ff3c63eb883091fc68eaad530d8 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 13 Nov 2024 11:37:18 +0000 Subject: [PATCH 3/3] chore: prepare for 3.6.0 ## [3.6.0](https://github.com/customerio/customerio-ios/compare/3.5.1...3.6.0) (2024-11-13) ### Features * support for large in-app messages ([#831](https://github.com/customerio/customerio-ios/issues/831)) ([3731f68](https://github.com/customerio/customerio-ios/commit/3731f685a19bd1e9840c53ab3bcd70e37deac182)) --- CHANGELOG.md | 6 +++ CustomerIO.podspec | 2 +- CustomerIOCommon.podspec | 2 +- CustomerIODataPipelines.podspec | 2 +- CustomerIOMessagingInApp.podspec | 2 +- CustomerIOMessagingPush.podspec | 2 +- CustomerIOMessagingPushAPN.podspec | 2 +- CustomerIOMessagingPushFCM.podspec | 2 +- CustomerIOTrackingMigration.podspec | 2 +- Sources/Common/Version.swift | 2 +- ...sdk-binary-size-including-dependencies.txt | 40 +++++++++---------- reports/sdk-binary-size.txt | 40 +++++++++---------- 12 files changed, 55 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70643d388..f97c7fab8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## [3.6.0](https://github.com/customerio/customerio-ios/compare/3.5.1...3.6.0) (2024-11-13) + +### Features + +* support for large in-app messages ([#831](https://github.com/customerio/customerio-ios/issues/831)) ([3731f68](https://github.com/customerio/customerio-ios/commit/3731f685a19bd1e9840c53ab3bcd70e37deac182)) + ## [3.5.1](https://github.com/customerio/customerio-ios/compare/3.5.0...3.5.1) (2024-10-25) ### Bug Fixes diff --git a/CustomerIO.podspec b/CustomerIO.podspec index 4e3ca9e31..897da5339 100644 --- a/CustomerIO.podspec +++ b/CustomerIO.podspec @@ -5,7 +5,7 @@ Pod::Spec.new do |spec| spec.name = "CustomerIO" - spec.version = "3.5.1" # Don't modify this line - it's automatically updated + spec.version = "3.6.0" # Don't modify this line - it's automatically updated spec.summary = "Official Customer.io SDK for iOS." spec.homepage = "https://github.com/customerio/customerio-ios" spec.documentation_url = 'https://customer.io/docs/sdk/ios/' diff --git a/CustomerIOCommon.podspec b/CustomerIOCommon.podspec index 4f2aa270c..e53bf3ab1 100644 --- a/CustomerIOCommon.podspec +++ b/CustomerIOCommon.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "CustomerIOCommon" - spec.version = "3.5.1" # Don't modify this line - it's automatically updated + spec.version = "3.6.0" # Don't modify this line - it's automatically updated spec.summary = "Official Customer.io SDK for iOS." spec.homepage = "https://github.com/customerio/customerio-ios" spec.documentation_url = 'https://customer.io/docs/sdk/ios/' diff --git a/CustomerIODataPipelines.podspec b/CustomerIODataPipelines.podspec index 3a6b147eb..3ce5880a6 100644 --- a/CustomerIODataPipelines.podspec +++ b/CustomerIODataPipelines.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "CustomerIODataPipelines" - spec.version = "3.5.1" # Don't modify this line - it's automatically updated + spec.version = "3.6.0" # Don't modify this line - it's automatically updated spec.summary = "Official Customer.io SDK for iOS." spec.homepage = "https://github.com/customerio/customerio-ios" spec.documentation_url = 'https://customer.io/docs/sdk/ios/' diff --git a/CustomerIOMessagingInApp.podspec b/CustomerIOMessagingInApp.podspec index 73594b517..d81f16db9 100644 --- a/CustomerIOMessagingInApp.podspec +++ b/CustomerIOMessagingInApp.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "CustomerIOMessagingInApp" - spec.version = "3.5.1" # Don't modify this line - it's automatically updated + spec.version = "3.6.0" # Don't modify this line - it's automatically updated spec.summary = "Official Customer.io SDK for iOS." spec.homepage = "https://github.com/customerio/customerio-ios" spec.documentation_url = 'https://customer.io/docs/sdk/ios/' diff --git a/CustomerIOMessagingPush.podspec b/CustomerIOMessagingPush.podspec index 5f6507ecb..8450ea46a 100644 --- a/CustomerIOMessagingPush.podspec +++ b/CustomerIOMessagingPush.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "CustomerIOMessagingPush" - spec.version = "3.5.1" # Don't modify this line - it's automatically updated + spec.version = "3.6.0" # Don't modify this line - it's automatically updated spec.summary = "Official Customer.io SDK for iOS." spec.homepage = "https://github.com/customerio/customerio-ios" spec.documentation_url = 'https://customer.io/docs/sdk/ios/' diff --git a/CustomerIOMessagingPushAPN.podspec b/CustomerIOMessagingPushAPN.podspec index aa225faa2..2a9f8a9fe 100644 --- a/CustomerIOMessagingPushAPN.podspec +++ b/CustomerIOMessagingPushAPN.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "CustomerIOMessagingPushAPN" - spec.version = "3.5.1" # Don't modify this line - it's automatically updated + spec.version = "3.6.0" # Don't modify this line - it's automatically updated spec.summary = "Official Customer.io SDK for iOS." spec.homepage = "https://github.com/customerio/customerio-ios" spec.documentation_url = 'https://customer.io/docs/sdk/ios/' diff --git a/CustomerIOMessagingPushFCM.podspec b/CustomerIOMessagingPushFCM.podspec index 32705336b..f99d13844 100644 --- a/CustomerIOMessagingPushFCM.podspec +++ b/CustomerIOMessagingPushFCM.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "CustomerIOMessagingPushFCM" - spec.version = "3.5.1" # Don't modify this line - it's automatically updated + spec.version = "3.6.0" # Don't modify this line - it's automatically updated spec.summary = "Official Customer.io SDK for iOS." spec.homepage = "https://github.com/customerio/customerio-ios" spec.documentation_url = 'https://customer.io/docs/sdk/ios/' diff --git a/CustomerIOTrackingMigration.podspec b/CustomerIOTrackingMigration.podspec index 4036e761a..abda226d5 100644 --- a/CustomerIOTrackingMigration.podspec +++ b/CustomerIOTrackingMigration.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "CustomerIOTrackingMigration" - spec.version = "3.5.1" # Don't modify this line - it's automatically updated + spec.version = "3.6.0" # Don't modify this line - it's automatically updated spec.summary = "Official Customer.io SDK for iOS." spec.homepage = "https://github.com/customerio/customerio-ios" spec.documentation_url = 'https://customer.io/docs/sdk/ios/' diff --git a/Sources/Common/Version.swift b/Sources/Common/Version.swift index 67f37b032..cae3fd1e3 100644 --- a/Sources/Common/Version.swift +++ b/Sources/Common/Version.swift @@ -6,5 +6,5 @@ import Foundation Keep this file as small as possible to make the automated updating script stable and easy to use. */ public enum SdkVersion { - public static let version: String = "3.5.1" + public static let version: String = "3.6.0" } diff --git a/reports/sdk-binary-size-including-dependencies.txt b/reports/sdk-binary-size-including-dependencies.txt index 630baeeaa..47ba16d41 100644 --- a/reports/sdk-binary-size-including-dependencies.txt +++ b/reports/sdk-binary-size-including-dependencies.txt @@ -1,9 +1,9 @@ FILE SIZE VM SIZE -------------- -------------- - 16.3% 147Ki 16.3% 147Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/autogenerated/AutoMockable.generated.swift + 16.2% 147Ki 16.2% 147Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/autogenerated/AutoMockable.generated.swift 3.9% 35.3Ki 3.9% 35.3Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Communication/EventBusHandler.swift 3.9% 35.2Ki 3.9% 35.2Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/autogenerated/AutoMockable.generated.swift - 3.6% 32.2Ki 3.6% 32.2Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/autogenerated/AutoMockable.generated.swift + 3.5% 32.2Ki 3.5% 32.2Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/autogenerated/AutoMockable.generated.swift 2.9% 26.4Ki 2.9% 26.4Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/InAppMessageManager.swift 2.5% 22.8Ki 2.5% 22.8Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Migration/autogenerated/AutoMockable.generated.swift 2.5% 22.7Ki 2.5% 22.7Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/DataPipelineImplementation.swift @@ -13,7 +13,7 @@ 2.0% 18.6Ki 2.0% 18.6Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Communication/Event.swift 2.0% 18.2Ki 2.0% 18.2Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/EngineWeb/AnyEncodable.swift 1.7% 15.6Ki 1.7% 15.6Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Type/PushNotification.swift - 1.7% 15.4Ki 1.7% 15.4Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/MessageManager.swift + 1.7% 15.6Ki 1.7% 15.6Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/MessageManager.swift 1.6% 14.7Ki 1.6% 14.7Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Communication/EventMemoryStorage.swift 1.6% 14.3Ki 1.6% 14.3Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/autogenerated/AutoDependencyInjection.generated.swift 1.6% 14.2Ki 1.6% 14.2Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/InAppMessageMiddleware.swift @@ -24,45 +24,45 @@ 1.1% 9.81Ki 1.1% 9.81Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/InAppMessageState.swift 1.1% 9.65Ki 1.1% 9.65Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/JsonAdapter.swift 1.0% 9.50Ki 1.0% 9.50Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/CustomerIOInstance.swift + 1.0% 9.41Ki 1.0% 9.41Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/EngineWeb/EngineWeb.swift 1.0% 8.83Ki 1.0% 8.83Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Service/Request/TrackDeliveryEventRequestBody.swift 1.0% 8.74Ki 1.0% 8.74Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/UserNotificationsFramework/Wrappers.swift 0.9% 8.61Ki 0.9% 8.61Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/Plugins/AutoTrackingScreenViews.swift 0.9% 8.61Ki 0.9% 8.61Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/InAppMessageReducer.swift 0.9% 8.22Ki 0.9% 8.22Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Migration/DataPipelineMigrationAssistant.swift 0.9% 7.89Ki 0.9% 7.89Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Background Queue/Queue.swift - 0.8% 7.70Ki 0.8% 7.70Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/EngineWeb/EngineWeb.swift + 0.8% 7.45Ki 0.8% 7.45Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/RichPushHttpClient.swift 0.8% 7.41Ki 0.8% 7.41Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Background Queue/Type/QueueTaskMetadata.swift - 0.8% 7.34Ki 0.8% 7.34Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/RichPushHttpClient.swift 0.8% 6.84Ki 0.8% 6.84Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Store/PushHistory.swift + 0.7% 6.34Ki 0.7% 6.34Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Gist.swift 0.7% 6.30Ki 0.7% 6.30Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/ModalViewManager.swift - 0.7% 6.25Ki 0.7% 6.25Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Gist.swift 0.7% 6.21Ki 0.7% 6.21Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/KeyValueStorage.swift 0.7% 6.07Ki 0.7% 6.07Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Utilities/URLComponents.swift - 0.7% 5.90Ki 0.7% 5.90Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/autogenerated/AutoDependencyInjection.generated.swift + 0.6% 5.90Ki 0.6% 5.90Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/autogenerated/AutoDependencyInjection.generated.swift + 0.6% 5.75Ki 0.6% 5.75Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/autogenerated/AutoDependencyInjection.generated.swift 0.6% 5.70Ki 0.6% 5.70Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Migration/TrackEventMigrationType.swift 0.6% 5.64Ki 0.6% 5.64Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Background Queue/Type/QueueTask.swift 0.6% 5.51Ki 0.6% 5.51Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/InAppMessageAction.swift - 0.6% 5.39Ki 0.6% 5.39Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/autogenerated/AutoDependencyInjection.generated.swift + 0.6% 5.36Ki 0.6% 5.36Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Config/MessagingPushConfigBuilder.swift 0.6% 5.16Ki 0.6% 5.16Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Service/Response/ErrorMessageResponse.swift - 0.5% 4.84Ki 0.5% 4.84Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Network/GistQueueNetwork.swift - 0.5% 4.71Ki 0.5% 4.71Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Config/MessagingPushConfigBuilder.swift + 0.6% 5.06Ki 0.6% 5.06Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Network/GistQueueNetwork.swift 0.5% 4.49Ki 0.5% 4.49Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/Plugins/DataPipelinePublishedEvents.swift 0.5% 4.44Ki 0.5% 4.44Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Service/Request/MetricRequest.swift 0.5% 4.43Ki 0.5% 4.43Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Communication/EventBus.swift 0.5% 4.40Ki 0.5% 4.40Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/Plugins/DeviceContexualAttributes.swift + 0.5% 4.38Ki 0.5% 4.38Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/Models/Message.swift 0.5% 4.25Ki 0.5% 4.25Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/PushHandling/iOSPushEventListener.swift 0.5% 4.22Ki 0.5% 4.22Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/FileStorage.swift 0.4% 3.98Ki 0.4% 3.98Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/GistDelegate.swift - 0.4% 3.98Ki 0.4% 3.98Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/Models/Message.swift 0.4% 3.79Ki 0.4% 3.79Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/EngineWeb/EngineWebConfiguration.swift 0.4% 3.75Ki 0.4% 3.75Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Module/ModuleTopLevelObject.swift 0.4% 3.70Ki 0.4% 3.70Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Service/HttpRequestRunner.swift - 0.4% 3.59Ki 0.4% 3.59Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/MessagingPush.swift + 0.4% 3.65Ki 0.4% 3.65Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/MessagingPush.swift 0.4% 3.57Ki 0.4% 3.57Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Config/MessagingInAppConfigBuilder.swift 0.4% 3.47Ki 0.4% 3.47Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Views/GistModalViewController.swift 0.4% 3.37Ki 0.4% 3.37Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Extensions/StringExtensions.swift 0.4% 3.32Ki 0.4% 3.32Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/Atomic.swift - 0.4% 3.21Ki 0.4% 3.21Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/MessagingPush+RichPush.swift + 0.4% 3.27Ki 0.4% 3.27Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/MessagingPush+RichPush.swift 0.3% 3.10Ki 0.3% 3.10Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/StringAnyEncodable.swift 0.3% 3.06Ki 0.3% 3.06Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/DIManager.swift 0.3% 3.02Ki 0.3% 3.02Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/EngineWeb/EngineEventHandler.swift @@ -80,16 +80,16 @@ 0.3% 2.53Ki 0.3% 2.53Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/Util/DeviceAttributesProvider.swift 0.3% 2.37Ki 0.3% 2.37Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/Core/Subscription.swift 0.3% 2.34Ki 0.3% 2.34Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/RichPushRequestHandler.swift - 0.3% 2.30Ki 0.3% 2.30Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushAPN/MessagingPushAPN.swift 0.3% 2.29Ki 0.3% 2.29Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/Config/SDKConfigBuilder.swift - 0.2% 2.25Ki 0.2% 2.25Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/MessagingPushImplementation.swift + 0.3% 2.29Ki 0.3% 2.29Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushAPN/MessagingPushAPN.swift 0.2% 2.23Ki 0.2% 2.23Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/UserNotificationsFramework/UserNotificationsFrameworkAdapter.swift - 0.2% 2.20Ki 0.2% 2.20Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushFCM/MessagingPushFCM.swift + 0.2% 2.18Ki 0.2% 2.18Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushFCM/MessagingPushFCM.swift 0.2% 2.09Ki 0.2% 2.09Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Background Queue/Type/QueueTaskRunResults.swift 0.2% 2.07Ki 0.2% 2.07Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/MessagingInAppImplementation.swift + 0.2% 1.98Ki 0.2% 1.98Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/MessagingPushImplementation.swift 0.2% 1.95Ki 0.2% 1.95Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/LockManager.swift + 0.2% 1.82Ki 0.2% 1.82Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/RichPushDeliveryTracker.swift 0.2% 1.80Ki 0.2% 1.80Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushAPN/MessagingPush+APN.swift - 0.2% 1.77Ki 0.2% 1.77Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/RichPushDeliveryTracker.swift 0.2% 1.73Ki 0.2% 1.73Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/autogenerated/AutoDependencyInjection.generated.swift 0.2% 1.65Ki 0.2% 1.65Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushFCM/MessagingPush+FCM.swift 0.2% 1.64Ki 0.2% 1.64Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Views/GistView.swift @@ -133,8 +133,8 @@ 0.1% 652 0.1% 652 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Type/CustomerIOParsedPushPayload.swift 0.1% 612 0.1% 612 /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/CustomerIO.swift 0.1% 600 0.1% 600 /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Service/DownloadFileType.swift + 0.1% 600 0.1% 600 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Config/MessagingPushConfigOptions.swift 0.1% 576 0.1% 576 /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Extensions/UIKitExtensions.swift - 0.1% 572 0.1% 572 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Config/MessagingPushConfigOptions.swift 0.1% 568 0.1% 568 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Network/Endpoints/QueueEndpoint.swift 0.1% 532 0.1% 532 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/LogManager.swift 0.1% 508 0.1% 508 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Network/Endpoints/Utilities/GistNetworkRequestError.swift @@ -167,6 +167,6 @@ 0.0% 36 0.0% 36 /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/Time.swift 0.0% 20 0.0% 20 /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Deprecated/CustomerIO+Tracking.swift 0.0% 8 0.0% 8 /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Extensions/ErrorExtension.swift - 100.0% 907Ki 100.0% 907Ki TOTAL -Filtering enabled (source_filter); omitted file = 2.54Mi, vm = 2.63Mi of entries + 100.0% 911Ki 100.0% 911Ki TOTAL +Filtering enabled (source_filter); omitted file = 2.55Mi, vm = 2.64Mi of entries diff --git a/reports/sdk-binary-size.txt b/reports/sdk-binary-size.txt index 630baeeaa..47ba16d41 100644 --- a/reports/sdk-binary-size.txt +++ b/reports/sdk-binary-size.txt @@ -1,9 +1,9 @@ FILE SIZE VM SIZE -------------- -------------- - 16.3% 147Ki 16.3% 147Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/autogenerated/AutoMockable.generated.swift + 16.2% 147Ki 16.2% 147Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/autogenerated/AutoMockable.generated.swift 3.9% 35.3Ki 3.9% 35.3Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Communication/EventBusHandler.swift 3.9% 35.2Ki 3.9% 35.2Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/autogenerated/AutoMockable.generated.swift - 3.6% 32.2Ki 3.6% 32.2Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/autogenerated/AutoMockable.generated.swift + 3.5% 32.2Ki 3.5% 32.2Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/autogenerated/AutoMockable.generated.swift 2.9% 26.4Ki 2.9% 26.4Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/InAppMessageManager.swift 2.5% 22.8Ki 2.5% 22.8Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Migration/autogenerated/AutoMockable.generated.swift 2.5% 22.7Ki 2.5% 22.7Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/DataPipelineImplementation.swift @@ -13,7 +13,7 @@ 2.0% 18.6Ki 2.0% 18.6Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Communication/Event.swift 2.0% 18.2Ki 2.0% 18.2Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/EngineWeb/AnyEncodable.swift 1.7% 15.6Ki 1.7% 15.6Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Type/PushNotification.swift - 1.7% 15.4Ki 1.7% 15.4Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/MessageManager.swift + 1.7% 15.6Ki 1.7% 15.6Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/MessageManager.swift 1.6% 14.7Ki 1.6% 14.7Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Communication/EventMemoryStorage.swift 1.6% 14.3Ki 1.6% 14.3Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/autogenerated/AutoDependencyInjection.generated.swift 1.6% 14.2Ki 1.6% 14.2Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/InAppMessageMiddleware.swift @@ -24,45 +24,45 @@ 1.1% 9.81Ki 1.1% 9.81Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/InAppMessageState.swift 1.1% 9.65Ki 1.1% 9.65Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/JsonAdapter.swift 1.0% 9.50Ki 1.0% 9.50Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/CustomerIOInstance.swift + 1.0% 9.41Ki 1.0% 9.41Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/EngineWeb/EngineWeb.swift 1.0% 8.83Ki 1.0% 8.83Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Service/Request/TrackDeliveryEventRequestBody.swift 1.0% 8.74Ki 1.0% 8.74Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/UserNotificationsFramework/Wrappers.swift 0.9% 8.61Ki 0.9% 8.61Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/Plugins/AutoTrackingScreenViews.swift 0.9% 8.61Ki 0.9% 8.61Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/InAppMessageReducer.swift 0.9% 8.22Ki 0.9% 8.22Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Migration/DataPipelineMigrationAssistant.swift 0.9% 7.89Ki 0.9% 7.89Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Background Queue/Queue.swift - 0.8% 7.70Ki 0.8% 7.70Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/EngineWeb/EngineWeb.swift + 0.8% 7.45Ki 0.8% 7.45Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/RichPushHttpClient.swift 0.8% 7.41Ki 0.8% 7.41Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Background Queue/Type/QueueTaskMetadata.swift - 0.8% 7.34Ki 0.8% 7.34Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/RichPushHttpClient.swift 0.8% 6.84Ki 0.8% 6.84Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Store/PushHistory.swift + 0.7% 6.34Ki 0.7% 6.34Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Gist.swift 0.7% 6.30Ki 0.7% 6.30Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/ModalViewManager.swift - 0.7% 6.25Ki 0.7% 6.25Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Gist.swift 0.7% 6.21Ki 0.7% 6.21Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/KeyValueStorage.swift 0.7% 6.07Ki 0.7% 6.07Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Utilities/URLComponents.swift - 0.7% 5.90Ki 0.7% 5.90Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/autogenerated/AutoDependencyInjection.generated.swift + 0.6% 5.90Ki 0.6% 5.90Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/autogenerated/AutoDependencyInjection.generated.swift + 0.6% 5.75Ki 0.6% 5.75Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/autogenerated/AutoDependencyInjection.generated.swift 0.6% 5.70Ki 0.6% 5.70Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Migration/TrackEventMigrationType.swift 0.6% 5.64Ki 0.6% 5.64Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Background Queue/Type/QueueTask.swift 0.6% 5.51Ki 0.6% 5.51Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/InAppMessageAction.swift - 0.6% 5.39Ki 0.6% 5.39Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/autogenerated/AutoDependencyInjection.generated.swift + 0.6% 5.36Ki 0.6% 5.36Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Config/MessagingPushConfigBuilder.swift 0.6% 5.16Ki 0.6% 5.16Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Service/Response/ErrorMessageResponse.swift - 0.5% 4.84Ki 0.5% 4.84Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Network/GistQueueNetwork.swift - 0.5% 4.71Ki 0.5% 4.71Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Config/MessagingPushConfigBuilder.swift + 0.6% 5.06Ki 0.6% 5.06Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Network/GistQueueNetwork.swift 0.5% 4.49Ki 0.5% 4.49Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/Plugins/DataPipelinePublishedEvents.swift 0.5% 4.44Ki 0.5% 4.44Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Service/Request/MetricRequest.swift 0.5% 4.43Ki 0.5% 4.43Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Communication/EventBus.swift 0.5% 4.40Ki 0.5% 4.40Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/Plugins/DeviceContexualAttributes.swift + 0.5% 4.38Ki 0.5% 4.38Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/Models/Message.swift 0.5% 4.25Ki 0.5% 4.25Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/PushHandling/iOSPushEventListener.swift 0.5% 4.22Ki 0.5% 4.22Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/FileStorage.swift 0.4% 3.98Ki 0.4% 3.98Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/GistDelegate.swift - 0.4% 3.98Ki 0.4% 3.98Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/Models/Message.swift 0.4% 3.79Ki 0.4% 3.79Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/EngineWeb/EngineWebConfiguration.swift 0.4% 3.75Ki 0.4% 3.75Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Module/ModuleTopLevelObject.swift 0.4% 3.70Ki 0.4% 3.70Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Service/HttpRequestRunner.swift - 0.4% 3.59Ki 0.4% 3.59Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/MessagingPush.swift + 0.4% 3.65Ki 0.4% 3.65Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/MessagingPush.swift 0.4% 3.57Ki 0.4% 3.57Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Config/MessagingInAppConfigBuilder.swift 0.4% 3.47Ki 0.4% 3.47Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Views/GistModalViewController.swift 0.4% 3.37Ki 0.4% 3.37Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Extensions/StringExtensions.swift 0.4% 3.32Ki 0.4% 3.32Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/Atomic.swift - 0.4% 3.21Ki 0.4% 3.21Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/MessagingPush+RichPush.swift + 0.4% 3.27Ki 0.4% 3.27Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/MessagingPush+RichPush.swift 0.3% 3.10Ki 0.3% 3.10Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/StringAnyEncodable.swift 0.3% 3.06Ki 0.3% 3.06Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/DIManager.swift 0.3% 3.02Ki 0.3% 3.02Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/EngineWeb/EngineEventHandler.swift @@ -80,16 +80,16 @@ 0.3% 2.53Ki 0.3% 2.53Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/Util/DeviceAttributesProvider.swift 0.3% 2.37Ki 0.3% 2.37Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/State/Core/Subscription.swift 0.3% 2.34Ki 0.3% 2.34Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/RichPushRequestHandler.swift - 0.3% 2.30Ki 0.3% 2.30Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushAPN/MessagingPushAPN.swift 0.3% 2.29Ki 0.3% 2.29Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/Config/SDKConfigBuilder.swift - 0.2% 2.25Ki 0.2% 2.25Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/MessagingPushImplementation.swift + 0.3% 2.29Ki 0.3% 2.29Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushAPN/MessagingPushAPN.swift 0.2% 2.23Ki 0.2% 2.23Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/UserNotificationsFramework/UserNotificationsFrameworkAdapter.swift - 0.2% 2.20Ki 0.2% 2.20Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushFCM/MessagingPushFCM.swift + 0.2% 2.18Ki 0.2% 2.18Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushFCM/MessagingPushFCM.swift 0.2% 2.09Ki 0.2% 2.09Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Background Queue/Type/QueueTaskRunResults.swift 0.2% 2.07Ki 0.2% 2.07Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/MessagingInAppImplementation.swift + 0.2% 1.98Ki 0.2% 1.98Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/MessagingPushImplementation.swift 0.2% 1.95Ki 0.2% 1.95Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/LockManager.swift + 0.2% 1.82Ki 0.2% 1.82Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/RichPushDeliveryTracker.swift 0.2% 1.80Ki 0.2% 1.80Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushAPN/MessagingPush+APN.swift - 0.2% 1.77Ki 0.2% 1.77Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/RichPush/RichPushDeliveryTracker.swift 0.2% 1.73Ki 0.2% 1.73Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/autogenerated/AutoDependencyInjection.generated.swift 0.2% 1.65Ki 0.2% 1.65Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPushFCM/MessagingPush+FCM.swift 0.2% 1.64Ki 0.2% 1.64Ki /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Views/GistView.swift @@ -133,8 +133,8 @@ 0.1% 652 0.1% 652 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Type/CustomerIOParsedPushPayload.swift 0.1% 612 0.1% 612 /Users/runner/work/customerio-ios/customerio-ios/Sources/DataPipeline/CustomerIO.swift 0.1% 600 0.1% 600 /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Service/DownloadFileType.swift + 0.1% 600 0.1% 600 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Config/MessagingPushConfigOptions.swift 0.1% 576 0.1% 576 /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Extensions/UIKitExtensions.swift - 0.1% 572 0.1% 572 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingPush/Config/MessagingPushConfigOptions.swift 0.1% 568 0.1% 568 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Network/Endpoints/QueueEndpoint.swift 0.1% 532 0.1% 532 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Managers/LogManager.swift 0.1% 508 0.1% 508 /Users/runner/work/customerio-ios/customerio-ios/Sources/MessagingInApp/Gist/Network/Endpoints/Utilities/GistNetworkRequestError.swift @@ -167,6 +167,6 @@ 0.0% 36 0.0% 36 /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Util/Time.swift 0.0% 20 0.0% 20 /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Deprecated/CustomerIO+Tracking.swift 0.0% 8 0.0% 8 /Users/runner/work/customerio-ios/customerio-ios/Sources/Common/Extensions/ErrorExtension.swift - 100.0% 907Ki 100.0% 907Ki TOTAL -Filtering enabled (source_filter); omitted file = 2.54Mi, vm = 2.63Mi of entries + 100.0% 911Ki 100.0% 911Ki TOTAL +Filtering enabled (source_filter); omitted file = 2.55Mi, vm = 2.64Mi of entries