# Change Log
All notable changes to this project will be documented in this file.

### [Version 7.2.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/7.2.1) (June 27, 2025)

#### Added
* Adds Accessibility support for the `App-Inbox` and `In-app messages` channels.
* Adds an overloaded API to support setting a contentDescription for the image in a PushPrimer to improve accessibility.
  * `- (void)setImageUrl:(NSString *)imageUrl contentDescription:(NSString * _Nullable)contentDescription`: Sets the content description for the image to improve accessibility.

### [Version 7.2.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/7.2.0) (May 27, 2025)

#### Added
- Introduces System App Functions (Open Url, App Rating, Push Permission Request - as mentioned [here](/docs/SystemInAppFunctions.md)) which can be triggered either as a button action within an in-app message or as a standalone campaign action in CleverTap, enriching client workflows.
- Adds support for Advanced InApp Builder templates. This feature enables easy creation of visually appealing in-app messages that seamlessly integrate with your app's look and feel. It includes support for non-intrusive HTML banners with flexible configuration options, triggered via in-app event-based actions.
- Upgrades the algorithm used for [encryption of PII data](https://github.com/CleverTap/clevertap-ios-sdk/blob/master/docs/Encryption.md), making it compliant with [OWASP](https://mas.owasp.org/MASTG/0x04g-Testing-Cryptography/). Uses Keychain for securely backing up encryption key on iOS 13+.

> ⚠️ **NOTE**
After upgrading the SDK to v7.2.0+, do not downgrade in subsequent app releases if you have enabled additional encryption. If you encounter any issues, please contact the CleverTap support team for assistance.

#### Fixed
- Fixes a bug where the TTL of in-app messages was compared with an int instead of NSTimeInterval.
- Improves in-app content display with updated layout guidelines, ensuring HTML views respect safe area boundaries on devices with notches and other screen features.
- Fixes a bug where certain webview resources were not cleaned up after HTML in-app messages were dismissed.

### [Version 7.1.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/7.1.1) (March 17, 2025)

#### Added
- Adds `dismissInAppNotification` action to dismiss custom HTML in-Apps

#### Fixed
- Fixes custom in-app device orientation check

### [Version 7.1.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/7.1.0) (January 21, 2025)

#### Added
- Adds support for triggering InApps based on first-time event filtering in multiple triggers. Now you can create campaign triggers that combine recurring and first-time events. For example: Trigger a campaign when "Charged" occurs (every time) OR "App Launched" occurs (first time only).
- Adds new user-level event log tracking system to store and manage user event history. New APIs include:
  - `getUserEventLog(:)`: Get details about a specific event
  - `getUserEventLogCount(:)`: Get count of times an event occurred
  - `getUserLastVisitTs()`: Get timestamp of user's last app visit
  - `getUserAppLaunchCount()`: Get total number of times user has launched the app
  - `getUserEventLogHistory()`: Get full event history for current user
- Adds `inAppNotificationDidShow:` to the `CleverTapInAppNotificationDelegate` delegate.

#### API Changes

- **Deprecated:**  The old event tracking APIs tracked events at the device level rather than the user level, making it difficult to maintain accurate user-specific event histories, especially in multi-user scenarios. The following methods have been deprecated in favor of new user-specific event tracking APIs that provide more accurate, user-level analytics. These deprecated methods will be removed in future versions with prior notice:
  - `eventGetDetail(:)`: Use `getUserEventLog()` instead for user-specific event details
  - `eventGetOccurrences(:)`: Use `getUserEventLogCount()` instead for user-specific event counts
  - `eventGetFirstTime(:)`: Use `getUserEventLog()` instead for user-specific first occurrence timestamp
  - `eventGetLastTime(:)`: Use `getUserEventLog()` instead for user-specific last occurrence timestamp
  - `userGetPreviousVisitTime()`: Use `getUserLastVisitTs()` instead for user-specific last visit timestamp
  - `userGetTotalVisits()`: Use `getUserAppLaunchCount()` instead for user-specific app launch count
  - `userGetEventHistory()`: Use `getUserEventLogHistory()` instead for user-specific event history

### [Version 7.0.3](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/7.0.3) (November 29, 2024)

#### Added
- Adds a method `setCredentials` for setting custom handshake domains.
- Adds support for previewing in-apps created through the new dashboard advanced builder.
- Adds parsing of urls for `open-url` action to track parameters in the url for `Notification Clicked` events in HTML in-app messages.
- Adds support for `promptForPushPermission` method in JS Interface and HTML in-apps.

#### Fixed
- Mitigates a potential crash related to the `CTValidationResultStack` class.
- Mitigates a potential crash on `[CTInAppHTMLViewController hideFromWindow:]`.
- Changes campaign triggering evaluation of event names, event properties, and profile properties to ignore letter case and whitespace.
- Fixes an issue where the `wzrk_c2a` value is passed as null to backend when we receive null for `callToAction` value in a webView message handler.

### [Version 7.0.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/7.0.2) (October 10, 2024)

#### Added
- Adds support for custom handshake domains.
- Adds support for custom code in-app templates definitions through a json scheme.

### [Version 7.0.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/7.0.1) (August 22, 2024)

#### Fixed
- Fixes a bug where some user properties were being sent with an incorrect prefix

### [Version 7.0.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/7.0.0) (August 07, 2024)

#### Added
- Adds support for Custom Code Templates. Please refer to the [Custom Code Templates doc](/docs/CustomCodeTemplates.md) to read more on how to integrate this in your app.
- Adds support for File Type Variables in Remote Config. Please refer to the [Remote Config Variables doc](/docs/Variables.md) to read more on how to integrate this in your app.
- Adds support for triggering in-app notifications on User Attribute Change.
- Adds the CleverTap SDK version in the JS interface for HTML in-app notifications.

#### Fixed
- Fix HTML view controller `CTInAppHTMLViewController` presented before scene became active.
- Use keyWindow supported orientations for `CTInAppDisplayViewController`.

### [Version 6.2.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/6.2.1) (April 12, 2024)

#### Fixed
- Fixes a build error related to privacy manifests when statically linking the SDK using Cocoapods.

### [Version 6.2.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/6.2.0) (April 4, 2024)

#### Changed
- Updates privacy manifests.

#### Fixed
- Fixes a bug where client side in-apps were not discarded when rendering status is set to "discard".

### [Version 6.1.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/6.1.0) (February 22, 2024)

#### Added
- Adds privacy manifests.

#### Fixed
- Fixes crash due to out of bounds in NSLocale implementation.

### [Version 6.0.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/6.0.0) (January 15, 2024)

#### Added
- Adds support for client-side in-apps.

#### Fixed
- Fixes a bug where some in-apps were not being dismissed.

### [Version 5.2.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/5.2.2) (November 21, 2023)

#### Fixed
- Fixes build warnings.
- Mitigates a potential crash when apps would go to the background.

### [Version 5.2.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/5.2.1) (September 29, 2023)

#### Added
- Adds support to enable `NSFileProtectionComplete` to secure App’s document directory.
- Adds support for Integration Debugger to show errors and events on the dashboard when `debugLevel` is set to 3.
- Adds support to send `locale` - lanugage and country data using NSLocale and Adds public API `setLocale` to set custom locale, for LP Parity.

#### Changed
- Updated logic to retrieve country code using NSLocale above iOS 16 as `CTCarrier` is deprecated above iOS 16 with no replacements, see [apple doc](https://developer.apple.com/documentation/coretelephony/ctcarrier)
- Updated logic to not send carrier name above iOS 16 in `CTCarrier` field.

#### Fixed
- Fixes a crash in iOS 17/Xcode 15 related to alert inapps.
- Fixes a failing `test_clevertap_instance_nscoding` test case.

### [Version 5.2.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/5.2.0) (August 16, 2023)

#### Added
- Adds support for encryption of PII data wiz. Email, Identity, Name and Phone. 
  Please refer to [Encryption.md](/docs/Encryption.md) file to read more on how to
  enable/disable encryption.
- Adds support for custom KV pairs common to all inbox messages in AppInbox.
- Adds sample SwiftUIStarter app to support CleverTap iOS SDK for SwiftUI, added steps to track screen views in SwiftUI. Refer to [SwiftUI doc](/docs/SwiftUI.md) for more details.

### [Version 5.1.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/5.1.2) (July 28, 2023)

#### Fixed
- Fixed a bug where the App Inbox would appear empty.

### [Version 5.1.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/5.1.1) (July 13, 2023)

#### Fixed
- Fixed Cocoapods Generated duplicate UUIDs warnings.

### [Version 5.1.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/5.1.0) (June 28, 2023)

#### Added
- Adds public methods of the `Leanplum` class from the `Leanplum` SDK.

#### Fixed
- Mitgates potential App Inbox errors.

### [Version 5.0.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/5.0.1) (May 17, 2023)

#### Breaking API Changes
- The `enableLocation` method has been removed and the `getLocationWithSuccess` method has been moved to a new module called `CleverTapLocation`. Please import this module via Cocoapods, SPM or manual integration. Please refer to the [Location doc](/docs/CleverTapLocation.md) for more details.
- The macro `CLEVERTAP_LOCATION` is no longer needed and has been removed.

### [Version 5.0.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/5.0.0) (May 05, 2023)

#### Added
- Adds support for Remote Config Variables. Please refer to the [Remote Config Variables doc](/docs/Variables.md) to read more on how to integrate this to your app.

#### Fixed
- Fixes a bug where the `getLocationWithSuccess` method would cause crashes.
- Adds minor improvements to saving session data in background state.
- Streamlines the argument key of `recordEventWithProps` in `CleverTapJSInterface`.

#### Deprecated
- The following methods related to Product Config and Feature Flags have been marked as deprecated in this release. These methods will be removed in the future with prior notice
    - Feature Flags
        - `- (void)ctFeatureFlagsUpdated;`
        - `- (BOOL)get:(NSString* _Nonnull)key withDefaultValue:(BOOL)defaultValue`
    - Product Config
        - `- (void)ctProductConfigFetched`
        - `- (void)ctProductConfigActivated`
        - `- (void)ctProductConfigInitialized`
        - `- (void)fetch`
        - `- (void)fetchWithMinimumInterval:(NSTimeInterval)minimumInterval`
        - `- (void)setMinimumFetchInterval:(NSTimeInterval)minimumFetchInterval`
        - `- (void)activate`
        - `- (void)fetchAndActivate`
        - `- (void)setDefaults:(NSDictionary<NSString *, NSObject *> *_Nullable)defaults`
        - `- (void)setDefaultsFromPlistFileName:(NSString *_Nullable)fileName`
        - `- (CleverTapConfigValue *_Nullable)get:(NSString* _Nonnull)key`
        - `- (NSDate *_Nullable)getLastFetchTimeStamp`
        - `- (void)reset`

### [Version 4.2.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.2.2) (April 03, 2023)

#### Fixed
- Fixed compilation errors in xcode 14.3+.
- Added guard rails to prevent crashes for background state tasks.

### [Version 4.2.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.2.1) (March 22, 2023)

#### Added
- Adds a public method `dismissAppInbox` to dismiss App Inbox.
- Adds a public method `enableLocation` for enabling location API in case of SPM.
- Adds a public method `markReadInboxMessagesForIDs` for marking multiple App Inbox messages as read by passing a collection of `messageID`s.
- Fixes a bug where CoreData would crash with threading inconsistency exceptions.
- Fixes a bug where the method `deleteInboxMessagesForIDs` would cause a crash when the message ID was null or invalid.

### [Version 4.2.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.2.0) (December 13, 2022)

#### Added
- Adds a new `CTLocalInApp` builder class to create half-interstitial & alert local in-apps.
- Adds below new public APIs for supporting push notification runtime permission.
    - `promptPushPrimer`, `promptForPushPermission`, and `getNotificationPermissionStatusWithCompletionHandler`
- Adds push permission callback method `onPushPermissionResponse` which returns true/false after user allow/deny notification permission.
- Refer [Push Primer doc](/docs/PushPrimer.md) for more details.
- Updated `SDWebImage` dependency.

### [Version 4.1.6](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.1.6) (November 28, 2022)

#### Added
- Adds a public instance method `deleteInboxMessagesforID` for deleting multiple App Inbox messages by passing a collection of `messageID`s.

#### Fixed
- Fixes a bug where embedded videos were not rendering in html inapp messages.
- Fixes a bug where incorrect events were being fired for Signed Call iOS SDK.

### [Version 4.1.5](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.1.5) (November 15, 2022)

#### Added
- Adds a class method `getGlobalInstance` to retrieve a CleverTap SDK instance for an account ID.

### [Version 4.1.4](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.1.4) (October 24, 2022)

#### Changed
- Allows additional special characters when setting a custom CleverTap ID.

### [Version 4.1.3](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.1.3) (October 11, 2022)

##### Fixed
- Fixes the value of `wzrk_c2a` key for image-only in-app notification CTAs.
- Possible fix for crashes related to profile caches.
- Updates support for CleverTap Signed Call iOS SDK.

### [Version 4.1.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.1.2) (September 16, 2022)

##### Fixed
- Fixes possible App Inbox crashes.
- Fixes NSKeyedUnarchiver console warnings

### [Version 4.1.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.1.1) (July 06, 2022)
  
##### Added
- Adds support to call `onUserLogin`, `profileIncrementValueBy`, `profileDecrementValueBy` methods in a WebView.
- Updates certificates for SSL Pinning.

##### Fixed
- Fixes possible App Inbox crashes.

### [Version 4.1.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.1.0) (June 16, 2022)
  
##### Added
- Adds analytics support for upcoming CleverTap Signed Call iOS SDK.
- `CleverTap.sharedInstance()?.profileRemoveValue(forKey: )` can now remove PII data like Email, Phone and Date Of Birth.

##### Fixed
- Fixes possible crashes by applying locks to make shared instance thread safe.
- Mitigates FileManager deprecated APIs.
- Mitigates UIKit deprecated APIs.


### [Version 4.0.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.0.1) (April 12, 2022)
  
##### Fixed
- Fixes deviceID so that it will be fetched from storage instead of memory variables.
- Fixes compile time errors when building sdk with CLEVERTAP_NO_INBOX_SUPPORT.
- Adds a check for uname() method when fetching platform name to avoid possible runtime crashes.

### [Version 4.0.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/4.0.0) (February 7, 2022)
  
##### Added
- Adds Custom Proxy Domain functionality for Push Impressions and Events
- Adds support for configurable CleverTap Profile identifiers

#### Changed
- Use `resource_bundle` instead of `resources` in podspec

### [Version 3.10.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.10.0) (Aug 23, 2021)

##### Added
- Adds public methods for suspending/discarding & resuming InApp Notifications
- Adds public methods to increment/decrement values set via User properties
- Custom Deep-link handling for App inbox, push notifications and in-app notifications

##### Changed
- Usage `clevertap-prod.com` instead of `wzrkt.com` 
- Usage `spiky.clevertap-prod.com` instead of `spiky.wzrkt.com`
- Refactor and Addresses iOS 15 beta fixes related to App inbox 
- Synchronize access for `deviceName` and `model` property

##### Fixed
- https://github.com/CleverTap/clevertap-ios-sdk/issues/103
- https://github.com/CleverTap/clevertap-ios-sdk/issues/137

### [Version 3.9.4](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.9.4) (May 17, 2021)

##### Added
- Adds `setFirstTabTitle` method to set the name of the first tab in App Inbox
- Adds `recordChargedEvent` to `CTJSInterface` class to allow raising Charged Event from JS
- Adds a feature to opt-out IDFV based on a flag in Info.plist or while setting up additional instances/configs

##### Changed
- Removes `profilePushGraphUser` and `profilePushGooglePlusUser` APIs

### [Version 3.9.3](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.9.3) (April 12, 2021)

##### Added
- Adds support for installation via Swift Package Manager
- Addresses - https://github.com/CleverTap/clevertap-ios-sdk/issues/70

##### Changed
- Refactored code related to `CTTelephonyNetworkInfo` to address - https://github.com/CleverTap/clevertap-ios-sdk/issues/103
- Removes Product Experiences (Screen AB/Dynamic Variables) related code

### [Version 3.9.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.9.2) (February 5, 2021)

##### Fixed
- Removes unknown JSON attributes while handling Test In-App Notification, Test App Inbox or Test Display Unit
- Makes `model` property `atomic` (thread-safe)
- Minor Performance improvements

### [Version 3.9.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.9.1) (October 8, 2020)

##### Added
- Adds TTL for In-Apps
- Allow choosing text(with colour) when no messages to display in App Inbox

##### Fixed
- Fixes misalignment of video for Interstitial In-Apps in landscape mode
- Handles header with icon misalignment in case of overflowing characters in portrait mode
- Handles In-App alignment when status bar is hidden

##### Changed
- Update minimum deployment target to iOS 9.0

### [Version 3.9.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.9.0) (August 29, 2020)

##### Added
- Adds support for Geofence

##### Changed
- Stop capturing IDFA and removes code that has the ability to access the device’s advertising identifier (IDFA)

### [Version 3.8.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.8.2) (August 4, 2020)

##### Fixed
- Removes radio listener `CTRadioAccessTechnologyDidChangeNotification` to fix the noticeable crashes in 13.x
- Fixes carthage build error on v3.8.1
  - Addresses - https://github.com/CleverTap/clevertap-ios-sdk/issues/72

##### Changed
- Use `serviceCurrentRadioAccessTechnology` over deprecated `currentRadioAccessTechnology` in CTTelephonyNetworkInfo

### [Version 3.8.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.8.1) (July 2, 2020)

- Adds public API to raise Notification Clicked event for Push Notifications
- Adds a callback to provide Push Notifications custom key-value pairs
- Performance improvements

### [Version 3.8.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.8.0) (May 11, 2020)
- Adds support for Product Config and Feature Flag as a part of Product Experiences feature
- Performance improvements

### [Version 3.7.3](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.7.3) (March 11, 2020)
- Adds public APIs for raising Notification Clicked and Viewed events for App Inbox
- Adds public APIS for marking inbox message as read and deleting inbox message per message ID
- Bug fixes and performance improvements

### [Version 3.7.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.7.2) (December 11, 2019)
- Adds support for Native Display
- Bug fixes and performance improvements

### [Version 3.7.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.7.1) (October 17, 2019)
- Bug fixes and performance improvements

### [Version 3.7.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.7.0) (September 25, 2019)
- Adds support for AB Tests. (in closed Beta)
- Adds support for SDWebImage version 5.1
- Disable Location API calls unless CLEVERTAP_LOCATION macro is set
- Bug fixes and performance improvements

### [Version 3.6.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.6.0) (May 30, 2019)
- Adds support for SDWebImage version 5.0 

### [Version 3.5.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.5.0) (May 17, 2019)
- Adds the ability to set a custom Device ID
- Adds the ability to record Notification Viewed event for Push Notifications
- Adds support to record events in a WebView
- Enables Javascript in Custom HTML In-Apps
- In-Apps and App Inbox Landscape layout improvements
- Fixes setting Facebook as the referrer from a Facebook login deeplink

### [Version 3.4.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.4.2) (March 3, 2019)
- Fix OnUserLogin bug

### [Version 3.4.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.4.1) (February 5, 2019)
- Added support for Landscape mode in custom HTML InApps and App Inbox
- Performance improvements for App Inbox

### [Version 3.4.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.4.0) (January 14, 2019)
- Adds support for App Inbox

### [Version 3.3.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.3.0) (October 26, 2018)
- Adds support for Native InApp Notifications

### [Version 3.2.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.2.2) (September 26, 2018)
- Update Build Info

### [Version 3.2.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.2.1) (September 26, 2018)
- Fix method swizzling issue

### [Version 3.2.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.2.0) (September 5, 2018)
- Adds support to create multiple instances
- Adds support for SSL-pinning
- Adds ability to go offline (disable sending logged events to server)
- Added support for integration via Carthage
- Moved from static to dynamic framework
- Various performance enhancements

### [Version 3.1.7](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.1.7) (May 3, 2018)
- Methods for GDPR compliance
- Various performance improvements

### [Version 3.1.6](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.1.6) (October 13, 2018)
- Fix AppEx deployment target in podspec

### [Version 3.1.5](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.1.5) (September 19, 2017)
- iOS 11/Xcode 9 update

### [Version 3.1.4](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.1.4) (June 30, 2017)
- Adds API to record Screen Views
- Adds tvOS support 
- Adds modulemap for Swift import

### [Version 3.1.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.1.2) (January 31, 2017)
- Various performance enhancements

### [Version 3.1.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.1.1) (December 15, 2016)
- Various performance enhancements

### [Version 3.1.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.1.0) (October 20, 2016)
- Various performance enhancements

### [Version 3.0.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.0.0) (September 24, 2016)
- iOS 10/Xcode 8 release, supports iOS versions 8+
- Adds support for Rich Push Notifications, App Extensions and watchOS apps

### [Version 2.2.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.2.2) (August 18, 2016)
- Fixes Xcode 8 -> Xcode 7 archiving issue

### [Version 2.2.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.2.1) (July 21, 2016)
- Patches NSDate handling in onUserLogin

### [Version 2.2.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.2.0) (July 19, 2016)
- Adds `onUserLogin` API to support multiple distinct user profiles per device
- Adds `getLocation` API

### [Version 2.1.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.1.2) (June 29, 2016)
- Fixes handling of deep links embedded in push notifications on app launch

### [Version 2.1.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.1.1) (June 24, 2016)
- Sending non primitive values for profile/event properties doesn’t abort the entire push (just skips that particular property)

### [Version 2.1.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.1.0) (May 08, 2016)
- Adds ability to receive InApp Notification button click callbacks with custom key-value pairs
- Adds support for dashboard analytics on specific InApp Notification button clicks

### [Version 2.0.10](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.0.10) (April 06, 2016)
- Adds support for Segment bundled integration
- Removes support for Segment webhook integration
- Fixes rare thread deadlock issue

### [Version 2.0.9](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.0.9) (March 15, 2016)
- Adds support for migrating from Parse.com push notifications
- Adds support for multi-value (JSONArray) user profile properties
- Adds support for In-App Notification display frequency capping

### [Version 2.0.7](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.0.7) (February 09, 2016)
- Handles obscure exception regarding UIViewController detection

### [Version 2.0.6](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.0.6) (February 03, 2016)
- Fixes extremely rare issue relating to CTTelephonyNetworkInfo

### [Version 2.0.5](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.0.5) (January 09, 2016)
- Added `setLocation` API: if your application is collecting location you can pass it to CleverTap for, among other things, more fine-grained geo-targeting and segmentation purposes
- Added support for Segment webhook/server-side integration

### [Version 2.0.4](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.0.4) (December 09, 2015)
- Dropped support for iOS 6 - only support 7.0 and above
- Added optional autoIntegrate method to automatically handle device token registration and
push notification/url referrer tracking, and set up a singleton instance of the CleverTap class. This is accomplished by proxying the AppDelegate and "inserting" a CleverTap AppDelegate behind the AppDelegate. The proxy will first call the AppDelegate and then call the CleverTap AppDelegate.
- Added notification of application code of User Profile synchronization via CleverTapSyncDelegate and/or NSNotification broadcast mechanism.
- Added ability to record custom error events: `recordErrorWithMessage:(NSString -)message andErrorCode:(int)code`

### [Version 2.0.2](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.0.2) (September 28, 2015)
- Added iOS 9/Xcode 7 bitcode support

### [Version 2.0.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/2.0.1) (September 5, 2015)
- We’re now CleverTap! All the existing APIs have been changed from WizRocket to CleverTap.