- Features
- Delegate for reacting on in-app message action clicks - check In-app messages documentation
- Features
- Tracking button URL as link attribute for banner click event Issue #31
- Bug Fixes
- Fixed: ExponeaSDKObjC and ExponeaSDKShared frameworks are no longer embedded Issue #33
- Fixed: UI blocking when fetching in-app messages
- Fixed: Caching in-app message images
- Fixed: Padding and text truncating differences in In-app message buttons on web preview and in the app
- Fixed: Warnings appearing with XCode12 and above Issue #35
-
Features
- The device model property now contains a complete device model name, not only info whether it's iPad or iPhone.
- Flexible event attributes in mobile push notifications. Custom tracking attributes added into push notification payload are automatically included in the events as properties.
- Documentation improvements.
-
Bug Fixes
- Fixed: Duplicate tracking of in-app messages close event on X button tap.
- Fixed: Frameworks not found, when installing via Carthage.
- Fixed: An in-app message always shown as a modal, regardless of the configuration.
- Fixed: Event property of list type containing objects not getting tracked.
- Features
- Added Swift Package Manager support.
- Push notification events are now chronologically synced (event with status
sent
occurs before event with statusdelivered
)
- Bug Fixes
- Fixed: Configuration of base URL works with and without the trailing slash Issue #24.
- Fixed: In-app message with A/B testing now correctly handles the control group.
- Features
- SDK will now hold opened push notifications until
pushNotificationsDelegate
is set. - In-app message clicked event now contains property
text
with label of the button that was interacted with. - XCode 12.2 and Swift 5.3.1 compatibility.
- SDK will now hold opened push notifications until
- Bug Fixes
- BREAKING CHANGE:
The SDK now processes notification open events that start the application. Before, the app had to running and minimized for the notification to be processed.
To respond to notifications that start the application, the SDK needs to run some processing in
application:didFinishLaunchingWithOptions
.ExponeaAppDelegate
now implements this method where it processes the notification and sets notification center delegate. YourAppDelegate application:didFinishLaunchingWithOptions
now requires aoverride
keyword and a call to supersuper.application(application, didFinishLaunchingWithOptions: launchOptions)
. CallingExponea.shared.pushNotificationsDelegate = self
is no longer required. See push notifications documentation for more details. - Fixed: Events are now sorted based on timestamp before uploading to Exponea servers.
- BREAKING CHANGE:
The SDK now processes notification open events that start the application. Before, the app had to running and minimized for the notification to be processed.
To respond to notifications that start the application, the SDK needs to run some processing in
- Features
- Updated swiftlint to 0.41.0
- Documentation improvements
- Bug Fixes
- Fixed: Carthage build for XCode 12
- Bug Fixes
- Fixed: Xcode 12 compatibility. Test run was broken, new warnings appeared. Good times.
- Fixed: Consents fetching issue - consents with null translations caused the request to fail. Translation values are now optional.
- Because of bad push, this release on cocoapods is the same as 2.9.0
- Features
- Default properties that are tracked with every event can be changed at runtime by setting
Exponea.shared.defaultProperties
property. - In-app messages definitions are re-downloaded every time the customer is identified. After customer identification, the set of in-app messages available for the customer may change due to targeting.
- Default properties that are tracked with every event can be changed at runtime by setting
- Bug Fixes
- BREAKING CHANGE: The SDK can only be configured once. Reconfiguration of the SDK caused some of the handlers to be registered multiple times which then resulted in automatic events to be tracked multiple times. You should be able to change most of the setting on the fly. To change project tokens, you can use
anonymize()
method (see ANONYMIZE.md) - When a push notification was opened before the SDK was configured(e.g. the app was killed in the background) it was not processed - no event was tracked, action was not resolved. This issue is resolved by saving the “push opening event” until the SDK in configured and tracking/performing action once the SDK is ready.
- BREAKING CHANGE: The SDK can only be configured once. Reconfiguration of the SDK caused some of the handlers to be registered multiple times which then resulted in automatic events to be tracked multiple times. You should be able to change most of the setting on the fly. To change project tokens, you can use
- Features
- Support for new in-app message delay and timeout fields soon to be available in Exponea web app.
- Troubleshooting guide for In-app messages.
- BREAKING CHANGE: tracking of event properties with array and object type has been overhauled, supporting nesting. The API has changed slightly, but should not affect most developers, since array/object property type is rarely used.
- Swift 5 added to list of supported swift versions in podspec.
- Bug Fixes
- Fixed: Push notification registration is now always performed on the main thread.
- BREAKING CHANGE: Only strings are now allowed for customer ids. Exponea would ignore all other types, so this change should not break any functionality, possibly just clean up non-functioning code.
- Fixed: In-app messages are now stored in Caches directory instead of Documents where users can see them.
- Fixed: Core Data is now accessed from background thread instead of main thread to prevent blocking the application execution.
- Fixed: Merge policy has been set on Core Data preventing occasional issues when reporting events.
- Features
- DEPRECATION NOTICE: Automatic push notifications are now deprecated. Please check the Push notification documentation to see new setup instructions. In most cases, just extending
ExponeaAppDelegate
should be enough. The reason for this change is to remove method swizzling that causes issues when multiple SDKs that handle push notifications are integrated into one application. This way you're more in control of the push notification flow. - Silent push notifications support. You're now able to send background updates to your application and respond to them by implementing
silentPushNotificationReceived
method onPushNotificationManagerDelegate
. Delivery of silent push notifications is tracked to Exponea backend. - SDK now supports animated GIFs in push notifications. We advice to keep the images small, official attachment size limit is 10MB, but there is no guarantee.
- When the application is started from a push notification, resulting session will contain UTM parameters.
- Updated push notifications documentation and self-check mechanism to make notifications integration easier.
- DEPRECATION NOTICE: Automatic push notifications are now deprecated. Please check the Push notification documentation to see new setup instructions. In most cases, just extending
- Features
- Internal features required for Exponea React Native SDK. Developers using Swift/Objective C can ignore this release completely.
- Bug Fixes
- Fixed: Properties of ConsentSources and ConsentProperties now have
public
access level.
- Fixed: Properties of ConsentSources and ConsentProperties now have
- Features
- Switching projects in
anonymize()
method. If you need to switch projects, you can useanonymize()
method to create a new customer and start fresh tracking into a new project. Please see ANONYMIZE.md for more information. - Retrieve the cookie of the current customer used for tracking by calling
Exponea.shared.customerCookie
. - Improved logging for in-app messages explaining why each message should/shouldn’t be displayed.
- Switching projects in
- Bug Fixes
- Fixed: Tracking to multiple projects. It now requires both project token and authorization token. Please see CONFIG.md for more information.
- Removed: Legacy banners implementation that wasn’t working properly.
- Features
- Push notification delivery is tracked at the time of delivery. Before, the app had to be started again to flush the events to the server.
- Push notification token is removed from Exponea servers when user changes push notification permission.
- Bug fixes
- Fixed: Random crash in log reporting.
- Fixed: Push notification token wasn't tracked in
DAILY
mode.
- Features
- New in-app messages - display rich messages when app starts or an event is tracked - even when offline. This SDK is fully ready for the feature when it is publicly available soon.
- The SDK is now able to report the SDK-related crashes to Exponea. This helps us keep the SDK in a good shape and work on fixes as soon as possible.
- Bug fixes
- Fixed: Browser notification action now always opens the url browser
- Fixed: Default properties are now added to all events, including system events
- Removed: Automatic payment tracking was broken and has been removed from the Exponea iOS SDK. In case you're interested in this functionality let us know.
- Bug Fixes
- Fixed: Fetch recommendations functionality was calling obsolete endpoint. (see FETCH.md)
- Fixed: Notification image was not displayed when notification did not contain any action buttons.
- Bug Fixes
- Fixed an issue where anonymize() would fail with automatic push notification tracking enabled on iOS 10
- Features
- The SDK can now be fully configured also in the code, not only with the configuration file and thus making it more flexible. This new feature is based on #10.
- Bug Fixes
- Fixed: #8 - A push notification might have opened the application multiple times if there are multiple SDKs integrated in the application. This shouldn't happen anymore.
- Fixed: URL link checking is now more robust and handles also incorrectly formatted URL links.
- Features
- The SDK has a new protective layer for the public API as well as for the interaction with the operating system. It means that in the production setup it prefers to fail silently instead of crashing the whole application.
- Push notification events now contain more information about campaigns and the action taken and are consistent with Exponea Android SDK.
- Bug Fixes
- Increased overall code quality by fixing many lint errors. This makes many warnings from the SDK disappear when the application is compiled.
- The internal mechanisms of the SDK are now really hidden and not usable by the application. It prevents developers from using some undocumented internal part of the SDK in an inappropriate way.
- Fixed: We fixed a networking issue which cancelled all network requests made by the whole application (not only the SDK) after calling the anonymize() method.
- Fixed: SDK Initialization now handles database initialization properly. Previously there were some critical errors that could crash the application.
- There are significant improvements in the unit tests of the SDK.
- Features
- Universal link tracking: SDK can now track app opens from Universal link. Sessions that are started from Universal link contain campaign data.
- Bug Fixes
- The SDK is now better at handling parallel tasks which lead to nasty crashes in the past.
- Fixed: Internal event database thread-safety issues that caused random crashes in previous versions. Database layer only exposes immutable projections of database objects to the outside world. All operations on those objects have to be performed using Database layer itself.
- Fixed: Event flushing can now only be performed once at a time. Simultaneous calls to
Exponea.shared.flushData()
will only flush data to Exponea once. Flush uses semaphore to ensure that only one thread can perform flushing process.
- Configuration now has a token update frequency, which specifies how often should the push token be sent to Exponea (on change, on every start, daily)
- Rich push notifications deep link handling mechanism improvements
- deeplinks which are not a valid URL will not produce a crash on NSUserActivity continuation (eg. MYLINK::HOME:SCREEN:1)
- Added option to define default properties (see FETCH.md)
- Example app updated to use default properties
- Added option to fetch consent cateogires (see FETCH.md)
- Raised Swift version to 5.0
- Various small improvements
- Improve push notification tracking parameters
- Improve push notification tracking parameters
- Handle universal links better when opening them as push actions
- Change notification action_type to "mobile notification" for better tracking purposes
- Improve rich push notifications documentation to be explicit about category identifier in content extension
- Track additional parameters on automatic push notification clicked tracking
- Add support for tracking push delivered notifications when they are delivered even withou the user opening them, please see this guide on how to set this up
- Fix issues with notification extension when integrating through CocoaPods
- Note: It is now required to add
pod 'ExponeaSDK-Notifications'
to your Podfile instead of the previouspod 'ExponeaSDK/Notifications'
- Note: It is now required to add
- Removal of deprecated and unsupported functions
- Documentation improvements
- Support for legacy categories for notification actions
- Better support of dynamic buttons in notification actions in iOS 12+
- Make sure to handle cases where push notification payload does not contain
data
structure
- Add support for rich notification default action on notification tap
- Improve how notification actions (both default and buttons) are parsed and handled
- Fix parsing of button actions
- Make sure notification actions open in foreground
- Fixes for sound not working properly in rich push
- Better campaing data and action info parsing in rich push tracking
- Fix open app action button key for notification service
- Adds support for the new rich push notification feature
- Basic authorization and features relying on it (Fetch Events, Fetch Attributes) have been deprecated
- Token authorization has been added and can be now used as for tracking
- Stress unit tests were added
- Issue with creating big amounts of database objects has been fixed
- Refactored automatic push notification tracking to support all edge case configurations
- Fix issues when parsing push payload and make sure all parameters related to push are always respected
- Fix crashes related to improper escaping of closures in swizzled push receive methods
- Fix issue where timestamp milliseconds were not always respected due to type casting
- Improved push handling, prevent crashes caused by swizzling
- Minor bugfixes
- Improved connection checking
- Fix iOS 12 CoreData scalar type bug with retries
- Added better connection handling and flush retrying
- Failed requests will now be retried
- Add option to configure the maximum amount of retries (see Config)
- Documentation improvements
- Anonymize feature
- Dependencies update
- Crash bugfixes related to CoreData threading
- Various other improvements and bugfixes
Initial release.