This document provides release notes for significant updates to Iterable's iOS SDK.
TIP
For granular release notes, read the Iterable iOS SDK releases page on GitHub.
In this article
6.5.5
August 7, 2024
Version 6.5.5 of Iterable's iOS SDK provides more insight into JWT refresh failures, so you can take appropriate action in your application code.
-
When a JWT refresh fails (for any of various reasons), the SDK calls
onAuthFailure(_ authFailure: AuthFailure)
on theIterableAuthDelegate
instance you provided to the SDK at initialization. TheAuthFailure
object provides more information about the failure.Note that
onAuthFailure(_ authFailure: AuthFailure)
replacesonTokenRegistrationFailed(_ reason: String?)
. If you've implementedonTokenRegistrationFailed
, you'll need to update your application code. -
To set a retry policy for JWT refreshes, you can set the
retryPolicy
property onIterableConfig
to aRetryPolicy
object. Use this object to specify:- The maximum number of consecutive JWT-related request failures the SDK should allow before giving up, Defaults to 10.
- The interval between each JWT refresh attempt. Defaults to 6 seconds.
- A backoff strategy: linear or exponential. Defaults to linear.
You manually pause JWT refresh attempts by calling
IterableAPI.pauseAuthRetries(true)
For more information, see the docs for our iOS SDK.
6.5.0
Feb 1, 2024
Version 6.5.0 of Iterable's iOS SDK includes support for Embedded Messaging — eligibility–based, personalized messages created in Iterable and displayed inline, using native interface components, in your mobile and web apps. The SDK provides customizable, out-of-the-box embedded message views (cards, banners, and notifications), or you can design and implement fully custom embedded message interfaces.
To learn more, read Embedded Messages with Iterable's iOS SDK.
6.4.15
August 31, 2023
Version 6.4.15 of Iterable's iOS SDK supports Iterable's European Data Center.
For more info, see Iterable's iOS SDK.
6.4.9
November 8, 2022
Version 6.4.9 of Iterable's iOS SDK makes it possible to store in-app messages in memory, rather than in an unencrypted local file. However, an unencrypted local file is still the default option.
To store in-app messages in memory, set useInMemoryStorageForInApps
to true
:
Swift
let config = IterableConfig() config.useInMemoryStorageForInApps = true IterableAPI.initialize(apiKey: "<YOUR_API_KEY>", launchOptions: launchOptions, config: config)
Objective-C
IterableConfig *config = [[IterableConfig alloc] init]; config.useInMemoryStorageForInApps = YES; [IterableAPI initializeWithApiKey:@"<YOUR_API_KEY>" launchOptions:launchOptions config:config];
When users upgrade to a version of your iOS app that uses this version of the SDK (or higher), and you've enabled this option, the local file used for in-app message storage (if it already exists) is deleted. However, no data is lost.
6.4.8
October 31, 2022
Version 6.4.8 of Iterable's iOS SDK, as a privacy enhancement, encrypts the following data when storing it at rest:
-
email
— The user's email address. -
userId
— The user's ID. -
authToken
— The JWT used to authenticate the user with Iterable's API. -
lastPushPayload
— The JSON payload that came along with the last push notification received by the app.
(Note that Iterable's iOS SDK does not store in-app messages at rest—before or after this update.)
NOTE
Iterable's iOS SDK does, in fact, store in-app messages in an unencrypted local file. However, version 6.4.9 provides an option to store them in memory, instead.
When a user upgrades to a version of your app that uses this version of the SDK (or higher), the fields shown above are encrypted. No data that's already stored is lost.
For more information about the encryption described above, examine the SDK source code:
6.4.5
July 12, 2022
This release makes offline events processing available to all Iterable customers who'd like to use it — just ask your customer success manager to enable it for your account. Offline events processing saves a local copy of events triggered in your app while the device is offline (up to 1000 events). When a connection is re-established and your app is in the foreground, the events will be sent to Iterable. For more information, read Offline events processing.
6.4.0
December 13, 2021
Version 6.4.0
of
Iterable's iOS SDK includes the following changes:
Removes support for iOS 9. For iOS 9 support, use version
6.3.4
.Prevents in-app messages from executing any JavaScript code included in their HTML templates.
-
Adds an
allowedProtocols
field to theIterableConfig
class.Use this array to declare the specific URL protocols that the SDK can expect to see on incoming links (and that it should therefore handle). Doing this will prevent the SDK from opening links that use unexpected URL protocols.
For example, to allow the SDK to handle
http
,tel
, andcustom
links, set theallowedProtocols
field on yourIterableConfig
object to an array that contains these values:Swift
let config = IterableConfig() config.allowedProtocols = ["http", "tel", "custom"] IterableAPI.initialize(apiKey: "<YOUR_API_KEY>", launchOptions: launchOptions, config: config)
Objective-C
IterableConfig *config = [[IterableConfig alloc] init]; config allowedProtocols = @["http", "tel", "custom"]; [IterableAPI initializeWithApiKey:@"<YOUR_API_KEY>" launchOptions:launchOptions config:config]
IMPORTANT
Iterable's iOS SDK handles
https
,action
,itbl
, anditerable
links, regardless of the contents of this array. However, you must explicitly declare any other types of URL protocols you'd like the SDK to handle (otherwise, the SDK won't open them in the web browser or as deep links).
Deprecations
This release deprecates and sets an end-of-life date for various older versions of Iterable's iOS SDK, as described in the Deprecation dates and support windows section of this document. Also see Iterable's SDK Support Policy.
6.3.0
May 27, 2021
Version 6.3.0
of
Iterable's iOS SDK introduces offline events processing. This feature saves a local
copy of events triggered in your app while the device is offline (up to 1000
events). When a connection is re-established and your app is in the foreground, the
events will be sent to Iterable.
Offline events processing off by default, and we're rolling it out on a customer-by-customer basis. After you start using this version of the SDK, we'll send you a message before we enable the feature on your account (unfortunately, we can't give you an exact timeline for when this will happen). If you have any questions, talk to your Iterable customer success manager.
NOTE
As of July 12, 2022, offline events processing is available to all Iterable customers who would like to use it. To get started, you'll need to:
-
Make sure your mobile app is built with one of the following versions of our SDKs:
Have your customer success manager to enable it for your account (unless you've already been using a beta version of this feature, in which case it will continue to work).
For more information, read Offline events processing
6.2.21
March 30, 2021
Version 6.2.21
of
Iterable's iOS SDK includes:
- Support for syncing in-app message read state across multiple devices. Note
that:
- When the SDK fetches in-app messages from Iterable, it examines each
message's
read
field to determine if it has already been read. - The SDK's default implementation no longer automatically displays in-app messages that have already been seen on another device (even if those messages were not configured to go directly to the inbox).
- When you view a message, the SDK calls
POST /api/events/trackInAppOpen
to create aninAppOpen
event on the user's Iterable profile. Previous versions of the SDK made this same API call, but the call now also causes Iterable to set the message'sread
field totrue
. - Previous versions of the SDK will correctly sync a message's read / unread indicator for the default implementation of a mobile inbox. However, these older SDK versions will not automatically suppress messages that have already been seen on another device (as this version of the SDK will).
- When the SDK fetches in-app messages from Iterable, it examines each
message's
- Support for the display of a custom message (title and body) in an empty mobile inbox. For more details, see Customizing Mobile Inbox on iOS
6.3.0 - Beta
February 12, 2021
Version 6.3.0-beta2
of Iterable's iOS SDK includes:
- The features introduced in the 6.2.x releases (for example, Mobile Inbox, JWT-enabled API keys, and in-app animations).
- Beta support for offline events processing (capturing engagement events when a device is offline and sending them to Iterable when a network connection is reestablished) and in-app message prioritization (specifying a priority for an in-app message campaign, to determine its display order for your users). To try these beta features, have your Iterable customer success manager enable them for your project.
NOTE
As of July 12, 2022, offline events processing is GA and available to all Iterable customers who would like to use it. To get started, you'll need to:
-
Make sure your mobile app is built with one of the following versions of our SDKs:
Have your customer success manager to enable it for your account (unless you've already been using a beta version of this feature, in which case it will continue to work).
For more information, read Offline events processing
6.2.0
February 25, 2020
This release moves version 6.2.0 of Iterable's iOS SDK out of beta. It also adds customization options to the Mobile Inbox feature. For more details, see Customizing Mobile Inbox on iOS.
6.2.0 - Beta
October 15, 2019
Version 6.2.0 (beta) of Iterable's iOS SDK works with Iterable's Mobile Inbox feature. With Mobile Inbox, users of your mobile apps can save in-app messages and revisit them when it's convenient or when the content is more relevant.
The SDK includes a default implementation of an inbox user interface, which can be customized as necessary to match your brand's styles. Also, it automatically captures inbox-related events to Iterable, where they can be used to segment users, filter and trigger journeys, or send system webhooks.
To get started with Mobile Inbox:
- Read In-App Messages and Mobile Inbox.
- Install the version 6.2.0 beta of Iterable's iOS SDK.
6.1.0
June 10, 2019
Version 6.1.0 of the Iterable iOS SDK is now generally available and supported by Iterable.
This version of the SDK automatically downloads new in-app messages, allows apps more control over which in-app messages to display and when to display them, and consolidates the way deep links are handled across push notifications, in-app messages, and emails. For more information, see the beta announcement.
How to upgrade
Upgrading to version 6.1.0 of the Iterable iOS SDK requires some code changes in your mobile apps. For more details, read Upgrading from a version prior to 6.1.0.
Deprecations
This release deprecates and sets an end-of-life date for various older versions of Iterable's iOS SDK, as described in the Deprecation dates and support windows section of this document. Also see Iterable's SDK Support Policy.
6.1.0 - Beta
May 13, 2019
The version 6.1.0 beta of Iterable's iOS SDK provides various new features:
NOTE
Beta versions of Iterable's mobile SDKs are subject to the Beta SDK Disclaimer.
-
Automatic downloading of new in-app messages
With this version of the SDK, mobile apps automatically download all available in-app messages and store them on device. This makes it possible to inspect the messages to decide when and how to display them. Automatic in-app message downloads happen:
- When Iterable sends silent push notifications (not visible or audible to the user) indicating that new in-app messages are available.
- At key points in the mobile app's lifecycle, such as when it launches or comes to the foreground.
This feature makes it easier than ever to test in-app message campaigns. Simply send a proof and wait for it to appear in the app (no need to manually force the app to download new messages, as could be the case with previous versions of the SDK).
-
More control for mobile apps to decide when and how to display in-app messages
Since this version of the SDK automatically downloads all available in-app messages and stores them on device, the mobile app can examine each message to decide when and how to display it. For example, the app might:
- Skip displaying a particular message
- Display multiple messages in sequence (by default, in-app messages display in sequence, with a 30-second delay between messages—but this is customizable)
- Wait to display a particular message until a network connection is available
- Create a native user interface for a particular message, rather than rendering the HTML supplied by Iterable
- Display a particular in-app message when a user completes a specific action in the app
-
Consolidated handling of deep link URLs
This version of the SDK provides a common way to handle deep link URLs in a mobile app. With this feature, deep link URLs in emails, in-app messages, and push notifications are all handled in the same way, making it easier for marketers to define a set of deep link URLs that work as expected, regardless of message type.
How to upgrade
Upgrading to version 6.1.0 of the Iterable iOS SDK requires some code changes in your mobile apps. For more details, read Upgrading from a version prior to 6.1.0.
More information
To learn more, take a look at the Iterable iOS SDK 6.1.0 beta on GitHub.
Deprecation dates and support windows
This table lists deprecation dates, support windows, and end-of-life dates for various versions of Iterable's iOS SDK.
SDK version(s) | Deprecation announcement date | Support window | End-of-life date |
---|---|---|---|
6.5.x (current) | |||
6.4.x | 2/1/2024 | 12 months | 1/31/2025 |
6.3.x | 12/13/2021 | 12 months | 12/12/2022 |
6.2.x | 12/13/2021 | 12 months | 12/12/2022 |
NOTES
- If a version of Iterable's iOS SDK is not listed here, it is no longer supported.
- For more information, see our SDK Support Policy.
Further reading
- Iterable's SDK Support Policy
- Iterable's Beta SDK Disclaimer