From 1354d76c1df05e917ddb870e26bc39bbd282d69b Mon Sep 17 00:00:00 2001 From: joaodordio Date: Tue, 23 Jun 2026 14:59:12 +0000 Subject: [PATCH 1/3] [SDK-527]: Prepare for release 6.7.3 --- CHANGELOG.md | 3 ++- Iterable-iOS-AppExtensions.podspec | 2 +- Iterable-iOS-SDK.podspec | 2 +- swift-sdk/SDK/IterableAPI.swift | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 800917918..086aa1f7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,13 +3,14 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] + +## [6.7.3] ### Fixed - Fixed a crash showing out-of-the-box embedded messages on CocoaPods. `IterableEmbeddedView.xib` moved out of `Resources/` in 6.5.9, but the podspec only bundled `Resources/`, so the nib was missing from the CocoaPods resource bundle and `loadViewFromNib()` crashed. The podspec now bundles the UI component XIBs too. SPM was not affected. ### Changed - Upgrade-then-downgrade hazard on UUA storage: the sessions blob in `UserDefaults` now encodes with `totalUnknownSessionCount` / `lastUnknownSession` / `firstUnknownSession`, and stored UUA events use `eventType` as the type discriminator. A customer who installs an SDK build with this change and later rolls back to a pre-SDK-412 build will hit a decode failure on the sessions blob (unknown user session counter resets to zero) and stored UUA events will be skipped on flush since the older SDK looks for `dataType`. Limited blast radius, but worth flagging for customers who pin or roll back versions. - ## [6.7.2] ### Added - Added optional `shouldLog(level:) -> Bool` to `IterableLogDelegate`. Defaults to `true` when not implemented. Lets the delegate short-circuit log calls before any message formatting work happens. `DefaultLogDelegate` routes its `minLogLevel` filter through this, and `NoneLogDelegate` returns `false` for every level. diff --git a/Iterable-iOS-AppExtensions.podspec b/Iterable-iOS-AppExtensions.podspec index 65a1045ad..43ebf0227 100644 --- a/Iterable-iOS-AppExtensions.podspec +++ b/Iterable-iOS-AppExtensions.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "Iterable-iOS-AppExtensions" s.module_name = "IterableAppExtensions" - s.version = "6.7.2" + s.version = "6.7.3" s.summary = "App Extensions for Iterable SDK" s.description = <<-DESC diff --git a/Iterable-iOS-SDK.podspec b/Iterable-iOS-SDK.podspec index a1fd95ac8..6260d786c 100644 --- a/Iterable-iOS-SDK.podspec +++ b/Iterable-iOS-SDK.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "Iterable-iOS-SDK" s.module_name = "IterableSDK" - s.version = "6.7.2" + s.version = "6.7.3" s.summary = "Iterable's official SDK for iOS" s.description = <<-DESC diff --git a/swift-sdk/SDK/IterableAPI.swift b/swift-sdk/SDK/IterableAPI.swift index d156cc7c4..08703e428 100644 --- a/swift-sdk/SDK/IterableAPI.swift +++ b/swift-sdk/SDK/IterableAPI.swift @@ -7,7 +7,7 @@ import UIKit @objcMembers public final class IterableAPI: NSObject { /// The current SDK version - public static let sdkVersion = "6.7.2" + public static let sdkVersion = "6.7.3" /// The email of the logged in user that this IterableAPI is using public static var email: String? { From 84738d2696b1138bc2a4ed77b20cdcf933bed976 Mon Sep 17 00:00:00 2001 From: Sumeru Chatterjee Date: Wed, 24 Jun 2026 17:49:53 +0100 Subject: [PATCH 2/3] SDK-291 Add in-app landscape positioning fix to 6.7.3 changelog Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 086aa1f7f..727658522 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [6.7.3] ### Fixed - Fixed a crash showing out-of-the-box embedded messages on CocoaPods. `IterableEmbeddedView.xib` moved out of `Resources/` in 6.5.9, but the podspec only bundled `Resources/`, so the nib was missing from the CocoaPods resource bundle and `loadViewFromNib()` crashed. The podspec now bundles the UI component XIBs too. SPM was not affected. +- Fixed in-app message positioning in landscape on devices with a notch or Dynamic Island. The webview width and horizontal center now account for the left and right safe-area insets, so top, bottom, and center messages stay within the safe area instead of running under the notch. Full-screen messages are unchanged. ### Changed - Upgrade-then-downgrade hazard on UUA storage: the sessions blob in `UserDefaults` now encodes with `totalUnknownSessionCount` / `lastUnknownSession` / `firstUnknownSession`, and stored UUA events use `eventType` as the type discriminator. A customer who installs an SDK build with this change and later rolls back to a pre-SDK-412 build will hit a decode failure on the sessions blob (unknown user session counter resets to zero) and stored UUA events will be skipped on flush since the older SDK looks for `dataType`. Limited blast radius, but worth flagging for customers who pin or roll back versions. From b77182098fbeedda9dad73bcbc0c11d0039d480f Mon Sep 17 00:00:00 2001 From: Franco Zalamena Date: Wed, 24 Jun 2026 18:19:03 +0100 Subject: [PATCH 3/3] Fixed 6.7.3 changelog entries --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 727658522..92cd80b6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,18 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] ## [6.7.3] +### Added +- Added `async`/`await` variants of the device-disabling methods: `disableDeviceForCurrentUser() async throws` and `disableDeviceForAllUsers() async throws`. These are additive — the existing completion-handler methods are unchanged. On failure they throw the public `SendRequestError`. +- Added a `logoutUser(withOnSuccess:onFailure:)` overload to `IterableAPI`. Since logout is local-only, the handlers reflect the `disableDeviceForCurrentUser` call triggered when `autoPushRegistration` is enabled. The parameterless `logoutUser()` is unchanged. +- `AuthFailureReason` now conforms to `CustomDebugStringConvertible`, so the `Int`-backed enum prints readable case names (for example, `authTokenExpired`) in logs. + ### Fixed - Fixed a crash showing out-of-the-box embedded messages on CocoaPods. `IterableEmbeddedView.xib` moved out of `Resources/` in 6.5.9, but the podspec only bundled `Resources/`, so the nib was missing from the CocoaPods resource bundle and `loadViewFromNib()` crashed. The podspec now bundles the UI component XIBs too. SPM was not affected. - Fixed in-app message positioning in landscape on devices with a notch or Dynamic Island. The webview width and horizontal center now account for the left and right safe-area insets, so top, bottom, and center messages stay within the safe area instead of running under the notch. Full-screen messages are unchanged. +- Fixed a `String`-length conflation (CWE-135) in `DeepLinkManager.isIterableDeepLink`. The regex search range is now built from the bridged `NSString.length` (UTF-16) instead of the Swift `String` grapheme-cluster count, so deep links containing non-BMP characters such as emoji are no longer missed. ### Changed +- `IterableAPI.register(token:)` is now routed through the offline queue, so a push token registration made while offline is automatically retried when connectivity returns instead of being dropped. The current user identity is captured at call time, so the queued request still targets the correct user after a logout or user switch. Calling `register(token:)` without a current user identity now reports `onFailure` instead of silently sending the request. - Upgrade-then-downgrade hazard on UUA storage: the sessions blob in `UserDefaults` now encodes with `totalUnknownSessionCount` / `lastUnknownSession` / `firstUnknownSession`, and stored UUA events use `eventType` as the type discriminator. A customer who installs an SDK build with this change and later rolls back to a pre-SDK-412 build will hit a decode failure on the sessions blob (unknown user session counter resets to zero) and stored UUA events will be skipped on flush since the older SDK looks for `dataType`. Limited blast radius, but worth flagging for customers who pin or roll back versions. ## [6.7.2]