Skip to content

Releases: Iterable/iterable-swift-sdk

6.4.16

13 Nov 22:04
Compare
Choose a tag to compare

Added

  • sendRequestWithRetries function added as part of the NetworkHelperclass
  • For an API request that results in a 500-level error response, the SDK now executes up to five retries. Before each of the final three attempts, there is a two-second delay.

Changed

  • updates sendRequest in RequestProcessorUtil to retry the API request that resulted in a 401 response upon receipt of a new JWT
  • updates NetworkHelper class logic to use sendRequestWithRetriesmethod which wraps the original networkSession.makeRequest
  • When an API request fails with a 401 because of an invalid JWT token, the SDK now immediately requests a new JWT token for the signed-in user.

6.4.15

03 Aug 17:09
84caa3d
Compare
Choose a tag to compare

Added

  • This release allows you to use projects hosted on Iterable's EU data center. If your project is hosted on Iterable's European data center (EUDC), configure the SDK to use Iterable's EU-based API endpoints:

Swift

let config = IterableConfig()
config.dataRegion = IterableDataRegion.EU
IterableAPI.initialize(apiKey: "<YOUR_API_KEY>", launchOptions: launchOptions, config: config)

Objective-C

IterableConfig *config = [[IterableConfig alloc] init];
config.dataRegion = IterableDataRegion.EU;
[IterableAPI initializeWithApiKey:@"<YOUR_API_KEY>" launchOptions:launchOptions config:config];

Fixed

  • Offline Mode is now off by default. Offline mode components will only load when the offlineMode configuration for RequestHandler is set to true.

Changed

  • Offline mode configuration now persists throughout the current app session. Changes will take effect from the next app session.

6.4.14

07 Jul 18:39
3f3b3cd
Compare
Choose a tag to compare

Added

  • Success and Failure handlers can now be passed to following functions:
    InAppManager.remove, InAppManager.setRead, IterableAPI.setEmail and IterableAPI.setUserId

6.4.13

21 Apr 18:03
fe72db1
Compare
Choose a tag to compare

Added

  • ITBNotificationServiceExtension has a new optional delegate in the scenario of wanting to receive and pass along push information (e.g. Firebase)

Changed

  • The behavior of lastPushPayload now matches that of the Android SDK in being purely in memory and will now not count the payload of a silent push

Fixed

  • The itbl_inapp.json file generated from in-app messaging has been relocated to the correct spot

6.4.12

28 Mar 00:28
ef4811d
Compare
Choose a tag to compare

Added

  • Added a new function to IterableAPI to get the currently set authentication token
  • Added a new function (onTokenRegistrationFailed) to the IterableAuthDelegate upon authentication token retrieval failure

Changed

  • Changed setEmail and setUserId to run through the login process if also sent in an authentication token (and a non-nil ID)

Fixed

  • Fixed instances where setting a new authentication token for a user failed

6.4.11

28 Feb 00:09
375db1c
Compare
Choose a tag to compare

Fixed

  • Fixed so that AuthManager clears the previous refresh timer before setting a new one (thanks, @cranberyxl!)

6.4.10

09 Jan 21:12
4720ada
Compare
Choose a tag to compare

Fixed

  • Fixed instances where config.inAppDisplayInterval would not set custom interval set via react native layer.

6.4.9

08 Nov 22:49
1e25b42
Compare
Choose a tag to compare

Added

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

31 Oct 23:04
cfa8776
Compare
Choose a tag to compare

Changed

Starting with this release, as a privacy enhancement, Iterable's iOS SDK 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.)

⚠️ 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.7

10 Aug 21:25
8d984cf
Compare
Choose a tag to compare

Added

  • Added setEmail and setUserId as publicly accessible functions, which will set the identity of the SDK to attribute to events. The optional second parameter will take in a JWT if you already have one at the time of this call (as opposed to through IterableAuthDelegate).