8.27.4 (2024-11-04)
8.27.3 (2024-10-22)
8.27.2 (2024-10-10)
8.27.1 (2024-09-17)
8.27.0 (2024-09-04)
8.26.0 (2024-08-16)
8.25.1 (2024-07-29)
8.25.0 (2024-06-25)
8.24.3 (2024-06-10)
8.24.2 (2024-06-10)
8.24.1 (2024-05-15)
8.24.0 (2024-05-01)
8.23.1 (2024-04-30)
8.23.0 (2024-04-24)
8.22.0 (2024-04-19)
8.21.1 (2024-04-17)
8.21.0 (2024-03-19)
- Correct threading around user notification log (#261) (456160b)
- Refactor MPUploadBuilder to attempt to eliminate rare crash in withLocation: method (#262) (60cd0c8)
8.20.0 (2024-03-05)
8.19.0 (2024-02-23)
- Add Privacy Manifest and Tracking Domain Logic (#249) (d88acde), closes #248
- Add privacy manifest to build artifacts (#255) (aaeb8e4)
8.18.0 (2024-01-16)
8.17.0 (2023-11-30)
- 5343 Refactor Kit Filter Hash Functions (#228) (5c26a9e)
- Begin Implementation MPSideloadedKit Filtering Methods (#231) (ad543fb)
- Finish Implementation of MPSideLoadedKits (#239) (96e62f5)
- Improve background batch uploading and session management (#238) (dc6a9cb)
8.16.0 (2023-10-11)
8.15.1 (2023-10-04)
8.15.0 (2023-09-07)
8.14.2 (2023-07-31)
8.14.1 (2023-07-06)
8.14.0 (2023-06-27)
- Add Sideloaded Kit Filtering Support to API (#202) (6f0339c)
- Add Sideloaded Kit flag to Batches (#200) (6756d8a)
- Upload build artifacts to S3 for SPM (#199) (923838a)
8.13.0 (2023-04-24)
- Port first Obj-C file to Swift (#186) (18b1e1c)
- Use Apple Search Ads for Attribution (#187) (e2bb3bc)
- Use SPM binary targets and update release scripts (#188) (e482df0)
8.12.0 (2023-03-14)
8.11.2 (2023-02-10)
- Add missing MPIdentityErrorResponseCode values (#181) (7afd66a)
- Add missing no location target for SPM (#182) (d265e8a)
8.11.1 (2023-02-07)
8.11.0 (2023-01-23)
8.10.0 (2023-01-10)
- Add wrapper sdk info setter (#174) (c2ca247)
- Allow uploadInterval to be set manually (#175) (8d2c5cf)
8.9.2 (2022-12-06)
8.9.0 (2022-11-30)
- Add class checks to initialize methods (#165) (065df46)
- Add Hash Methods where isEqual called (#167) (7302e0d)
- Allow null event attributes (#163) (5fd25c6)
- Move dyld register callback to initialize (#170) (49d3660)
- Remove unnecessary calls to removeObserver (#168) (a288ba4)
- Remove Unnecessary Synchronize in Dealloc (#169) (624891b)
- match android type support for custom attributes (#157) (c9a34cd)
- Remove depreciate MPSegment code (#171) (1c04262)
- Update Sample App for iOS 16 (#158) (fed8131)
8.8.1 (2022-07-15)
- Add filtering check to legacy code path (#155) (0212944)
- remove undefined hasher behavior (#152) (a82b928)
8.8.0 (2022-05-17)
- Fix Dereferenced Garbage Pointer (#148) (d2c58e1)
- property memory annotations (#146) (c95ddf6)
- update active kits header (#147) (d196723)
- add conformsToProtocol forwarding to MPAppDelegateProxy (#144) (40e517a)
- add support for client side rules (#151) (6a93096)
8.7.0 (2022-01-31)
- Add configMaxAgeSeconds to MParticleOptions (cbf9464)
- add custom logger (62e830d)
- add MPKitInstance enum value for GA4 kit (a81c871)
8.6.0 (2022-01-13)
8.5.4 (2021-10-04)
8.5.3 (2021-09-20)
- Calling -[MParticle reset] doesn't clean up our app delegate proxy (d7932da)
- Mapped screen events forwarding to kits (86e7c75)
8.5.2 (2021-09-10)
- Revert commit e91a9a3 Update Conversion for Number Value in NSDictionary helper class (a2280fe)
8.5.1 (2021-09-09)
- Gracefully Handle Invalid Message Data (b618e5b)
- Preserve attributes when mapping commerce events (0ff8414)
- Remove duplicate key in dictionary literal (b1ecb17)
8.5.0 (2021-07-29)
- Ensure accurate app/device info after restart (match Android SDK behavior) (e1fdc94)
- Transaction attributes revenue logic differs from Android (c274e42)
- Event upload bypass option (e58ae23)
This release adds a new API allowing kits to consumed batched data. This allows you to create custom kits that process uploaded mParticle data and e.g. send it to your own server.
- Fix app fore thread logic if not awaiting kits
This release resolves an issue where if automatic session tracking was enabled, the SDK could potentially block the main thread when handling app foreground notifications, if those resulted in a new session being started and the SDK was not waiting for kits to set integration attributes.
- Fix Filtering for MPBaseEvent. Resolves an issue where MediaEvents where not properly forwarded to kits
- Add Crash Logging for PLCrashReporter
- Accept Custom Flags from WebView JS Bridge
- Add previous foreground time to app_fore messages
-
Ensure the latest ATT status is included with every upload. Uploads are typically immutable once stored. For ATT status and IDFA, the SDK will update pending, stored uploads with the latest ATT status and remove IDFA based on ATT status prior to upload
-
Block asserts for SPM in release mode. This prevents crashes in production apps if e.g. an NSNull value is set as an event attribute
This release adds support for collecting a device’s App Tracking Transparency authorization status for improved iOS 14 compatibility.
You can call setATTStatus:withTimestampMillis:
on the MParticle sharedInstance to specify the result of prompting the user. If you pass nil for the timestamp, the SDK will use the current date and time.
- Support for Xcode 12.5 beta
- Update the sample app to set ATT status, as well as login and logout support
- Fix unused return values
- Use ARCHS
- Change imports to modular for sqlite
- Fix MPConnector for MPURL
- Improve UA for Number Values
This resolves an issue where signature headers could be computed improperly with certain network configuration settings.
This release includes a number of bugfixes:
- Fix incrementUserAttribute UAC Message
- Refactor UserAttributes
- Fix potential DB access on main, add finalize
- Add MPURL to support custom endpoints and overriding subdirectories
- Fix Other6 Identity Login Issue This resolves an issue where identity login requests that included certain MPIdentities were always returning a 400 response.
This release adds support for Data Blocking to Kits!
To enable blocking, ensure you are specifying your data plan ID (and optionally version) in MParticleOptions.
This will enable the SDK to download your data plan and use it to block unplanned data from going to kits based on your blocking settings in the platform.
You can also specify blocking settings locally during SDK init using a new property MPDataPlanOptions
on your MParticleOptions
object.
If you specify local settings, these will override configuration sent by the server.
Note: the current implementation of blocking does not include validation logic to handle e.g. regex
, or min
/max
keywords.
This release includes changes to improve the timing with which MParticle.sharedInstance.currentSession becomes available after starting the SDK, as well as introducing new APIs for managing sessions.
When starting the SDK, you now have the option shouldBeginSession
which allows you to easily start a session on SDK init even if you are using manual session tracking otherwise.
This release also introduces the same logic when you log an event. By default, sessions will be created when logging events, but you can set shouldBeginSession to false on the event to prevent this. In most cases, you will want to ensure shouldBeginSession is false if the SDK is launched into the background from e.g. a content-available
push notification.
Several additional bugfixes are included in this release:
- Add Action Identifier to Notifications
- Add String Support For Product Price
- Update JSON Format of User Attributes
- Remove Deprecated Cart State from Commerce Event Data
- Fix Content Available Notification Bug
- Update MPCustomModulePreference
Note: If you have filters that currently depend on the fact that the SDK was previously encoding boolean values as Y
and N
, you will need to update those to look for true
and false
before updating to this version of the SDK, otherwise your filters will not take effect.
This release updates the SDK for iOS 14.
Important behavioral and API changes:
-
The SDK no longer queries for IDFA. You must provide the IDFA to the SDK if desired
-
Introduction of the
MPIdentity
enum, allowing for both device and user identities to be supplied to the identity API -
Kits have been updated to use the latest iOS 14 betas of their respective SDKs:
Partner SDK Apple SDK v7 Apple SDK v8 Airship ~> 12.0 ~> 14.0.0 AppsFlyer ~> 5.0 ~> 6.0 Apptentive ~> 5.2 ~> 5.3 Apptimize ~> 3.0 ~> 3.2 Branch ~> 0.31.2 ~> 0.35 Braze ~> 3.20 ~> 3.27 Crittercism '5.6.7' ~> 5.0 Leanplum ~> 2.6 ~> 3.0 Localytics ~> 5.2 ~> 6.0 Primer '3.2.3' ~> 3.6 -
The above are using wildcard dependencies, see here for how to interpret these: https://guides.cocoapods.org/using/the-podfile.html#specifying-pod-versions
-
If you don't see a kit listed here, it was probably already using a wildcard dependency. It has been released as is, as version 8.0.1, and will automatically pull in the latest version of the partner's SDK.
To learn more, please reference the migration guide.
This beta release updates the SDK for iOS 14.
Important behavioral and API changes:
- The SDK no longer queries for IDFA. You must provide the IDFA to the SDK if desired
- Introduction of the MPIdentity enum, allowing for both device and user identities to be supplied to the identity API
- Braze, Branch and AppsFlyer kits have been updated to use the latest iOS 14 betas of their respective SDKs
To learn more, please reference the migration guide.
- Fix Device Token Format
This resolves an issue on iOS 13 where an invalid device token could be sent.
- Adobe - Update to Media SDK 1.3.0
- None
- AppsFlyer - Update to AppsFlyer SDK 5.4
- Branch - Make CommerceEvent customAttributes Strings Values Only
- Clevertap - Update to CleverTap SDK 3.8.0
- Add other5-10 and phone number identity types
- Appboy - Add type detection
- Optimizely - Remove Carthage build phase
- Branch - Include Custom Attributes for Commerce Events
This release adds support for the new Blueshift kit!
- AppsFlyer - Update Carthage binary manifest URL
This release fixes a bug in the processing of consent filtering rules in cases when no consent state has been set.
- Iterable - Integrate Iterable SDK 6.2
- Appboy - Expose ABKURLDelegate
- Radar - Update to Radar SDK 3.0
- Guard against NSNull properties in identity requests
- Add MPUploadBuilder precautions
- Adjust - Update Adjust SDK to 4.20.0
- Appboy - Support ABKURLDelegate
- Apptimize - Update Apptimize SDK to 3.0
- Branch - Update docs link, Branch SDK to 0.33.0
- Fix CocoaPods warning
- None
- Add support for Swift Package Manager
- Cleanup deprecated UIApplication calls
- Optimizely - Fix constant naming
- Guard against NSNull values in events from webview
- Optimizely - Add support for other ids
- None
- Appboy - Update transaction attributes
- Apptentive - Guard against non-product-action commerce events
- Optimizely - Update to Optimizely Swift SDK
- Fix bug where session start timestamps included time spent waiting for message queue.
- Appboy - Fix dob parsing Bug
- Fix bug where data plan id and version would be sent as zero if not specified
- None
- Use default URL path to generate x-mp-signature
- Kochava - Add support for enhanced deeplinking
This release fixes a critical issue in 7.15.0 where invalid modify requests could be created by the SDK.
- AppsFlyer - Fix custom attribute being set incorrectly in commerce event
This release introduces support for compliance with the California Consumer Privacy Act (CCPA).
- Appboy - Respect dob user attribute
This release fixes an issue where kit dependencies on the core SDK were not properly updated by the release automation.
No code changes are included.
This release introduces support for Data Planning!
When initializing the SDK, you can now specify your data plan ID and version in MParticleOptions.
For more details, please see the documentation: https://docs.mparticle.com/guides/data-master/#data-plans
- Braze - Respect user identification type in kit config
- AppsFlyer - Update to AppsFlyer to version 5.0.0
- Branch - Update Branch to version 0.31.2
This release addresses an issue where the SDK might crash when logging commerce events, if certain recently-updated kits that support commerce are included.
In addition, a change has been included that should improve SDK responsiveness and prevent the SDK from inadvertently showing up in unrelated stack traces due to unnecessarily waiting to run on the main queue when processing network responses.
- Adobe - Update to prevent multiple defined symbol linker error
This release includes a number of targeted bug fixes to the SDK.
- Set device token on message queue
- Add handling for webview commerce attributes
- Exclude config endpoint from upload retry logic
- Deprecate
logCommerceEvent:
method--please calllogEvent:
instead.
- Adobe - Update for Media SDK beta 3
This release resolves an issue where user agent collection may not work correctly for certain app configurations.
This is due to a behavior change by Apple that appears to be isolated to Swift projects, where the application state within didFinishLaunching is set to background instead of inactive.
Also included is a change to allow user agent collection in iOS extensions.
- None
-
This release restores support for automatic collection of browser user agent by the SDK.
-
This release also deprecates the Cart API. The Cart API was originally designed to maintain and hold on to product objects to be appended automatically to Commerce events. Over time we have found it to be better practice for the hosting app to maintain shopping cart state rather than the mParticle SDK. In place of the Cart API, please include all of the applicable product objects with each Commerce event.
- Updates for iOS 13
- This release fixes a typo that caused
MPEvent
attributes to return nil if the deprecatedinfo
property was used. Due to our kits not yet having been updated to use the new property name, this was resulting in empty event attributes dictionaries being forwarded to kits.
- This release fixes Commerce events collected over the WKWebView bridge. Previously, the mapping of Web SDK-defined product-actions to Apple SDK product-actions was incorrect.
-
This release rolls back a change to the
MPEventType
enum that caused problems with Swift compatibility and adds Swift unit tests to ensure this API remains stable going forward. -
Guard against potential crash if null product array is received from JS webview integration
- None
This release introduces support for the mParticle Apple Media SDK!
Media tracking capabilities have been added by creating a separate module that you can add to your project in addition to the core SDK.
For more details, see the Media SDK repository: https://github.com/mParticle/mparticle-apple-media-sdk
-
You may notice that our main
MParticle#logEvent:
API has been changed to take a different type of parameter. This should not affect your code, except you can now pass commerce events to that method in addition toMPEvent
objects. -
This release also includes a change to improve session management in cases where the background timer was not allowed to run by the OS.
If you are collecting push registration tokens and using them for server-side integrations, this is a critical update. If you are only registering for push via kits (such as Braze), you can use iOS Braze kit 7.10.7 or later with iOS 13.
Support for UIWebView has been removed. User agent collection has been disabled in this release. You may manually supply the user agent to the MParticleOptions object on SDK initialization if required.
- Ensure user attributes are filtered on FilteredMParticleUser
- Simplify APIs and options used to start the SDK
- Braze - Update API usage for endpoint and location
- Firebase - Standardize custom attribute keys and values
- Adobe - Fix linker error if modules are disabled
This release fixes a critical bug in SDK versions 7.8.6 and later where uploads could be prematurely deleted if the network request failed due to the device being offline.
This release also fixes a crash while migrating the SDK's internal database. The crash occurs for apps that had opted into manual-session tracking in a previous version of the SDK, and then upgraded to the latest version of the SDK.
- Bugfix for upload response processing
- Fix session id migration for messages and uploads
- Appboy - Update endpoint override logic
Note: To ensure proper validation, this release updates the userIdentities property of MPIdentityApiRequest to be an immutable dictionary.
If you happened to be modifying this dictionary directly, you will need to update your code to call setUserIdentity:identityType: instead.
- Don't allow direct mutation of request identities
- Guard against nil events
- Button - Update kit to use Button Merchant Library
- Update for Xcode 11
- Respect max age expiration for configuration requests
- Update Urban Airship import statements
This release introduces support for user alias requests.
Aliasing allows you to copy data from one user to another, typically for the purpose of building audiences that include actions a user may have taken before they logged in.
This release also adds properties to a user that indicate when this user was first or last seen by the SDK. Getting the list of all users known to the SDK now sorts by the last time each user was seen.
- Add support for sending user alias requests
- Move sessionTimeout to MParticleOptions
- Guard against unexpected radio technology values
- Implement Inspector protocol
- Reachability improvements
- Apptentive - Add ability to delay Apptentive SDK initialization
- Radar - Minor tracking updates
Minor changes have been made across the kits to bring source indentation and license/readme/podspec files into consistency.
- Fix legacy openURL method forwarding to kits
- Fix static code analytics warnings
- None
- None
We've released an integration with Foursquare Pilgrim! Docs will be published soon--in the meantime you can check out the source code here.
We have also released an integration with OneTrust! Check out the docs here and the source code here.
- Leanplum - Add device id setting
- Optimizely - Update Optimizely SDK to 3.0
This release updates the mechanism whereby the SDK tracks user sessions.
Previously the SDK would start a session whenever an event was received, even if the event was triggered when processing a background push or location update.
The SDK now measures sessions based on user engagement i.e. when the app is in the foreground and visible to the user.
In the past the SDK would make special accommodations for apps that have long running background sessions due to use of location or background audio, in that sessions would continue even when the app remained in the background for an extended period of time. As of this release, this behavior has changed so that the session ends when the app is backgrounded even if, for example, background audio is still playing.
We have also introduced new APIs to manually begin and end sessions, so that you may customize this behavior if necessary.
Finally, this release also addresses an issue where session end messages may not have been created after the app was forcibly killed.
- Update kit configuration validation
- Update Modify API Response
- Cleanup unused macros and update setting for extensions
- Appboy - Update configuration error checking
- Clevertap - Update CleverTap SDK to 3.4.1
- Iterable - Fix crash if no webpage URL from continueUserActivity
- UrbanAirship - Update UrbanAirship SDK to 10.1
- Add new webview bridge support
- Fix kit queue log messages when no kits included
- Fix potential crash when uploading a large backlog of messages
- Optimizely - Update data file interval key
- None
We've released an integration with Google Analytics for Firebase! Check out the docs here and the source code here.
This release helps make our AppDelegate proxy mechanism more transparent by allowing KVO/KVC messages to pass through to the original AppDelegate as expected. It also cleans up a few analyzer warnings that were introduced and removes some validation code that could interfere with partner kit development or certain customer use cases.
- Fix analyzer warnings
- Fix AppDelegate KVO when proxying is enabled
- Remove MPKitInstanceValidator
- ComScore - Add tvOS support
-
Add new and updated existing integration attribute APIs
- Allow integration attributes to be set for any ID (not just known kit IDs)
- Add a public query API for specific integration attributes by ID
- Rename the private usages and APIs from kitCode to integrationId
-
Fix a potential hang that could occur if Apple Search Ads timed out
- None
- Fix kit identity forwarding
If the mpid did not change, we were not forwarding identity events to kits. This change ensures that we are always forwarding identity events to our kits by removing the early return and restructuring the code for clarity in the future.
- Optimizely - Update for tvOS
- Updates retry logic for collecting Apple Search Ads and introduces an option to disable collection.
We've released an integration with Oracle Responsys! Check out the docs here and the source code here.
We've marked several kits as static frameworks to make them usable with CocoaPods use_frameworks!
:
- Appsee
- Apteligent/Crittercism
- Instabot
- Kahuna
- Kochava
- Radar
- Taplytics
- Introduced an API to query for the "Device Application Stamp":
MParticle.sharedInstance.identity.deviceApplicationStamp
- Added Custom Flag support to
MPCommerceEvent
We've released an integration with Optimizely! Check out the docs here and the source code here.
This release contains a bug fix for a regression present in SDK versions 7.7.3 and 7.7.4. The issue only affects customers using client-side "kit" integrations. For these customers, events are sent as duplicates to each integration. If your app is on an impacted SDK, you can use mParticle's server-side filtering features to prevent events from being sent until you can upgrade to SDK 7.7.5 or later.
In addition to directly attaching binary artifacts to GitHub releases, we will be providing Carthage json manifest files in the root of each repo that supports Carthage.
This helps support the use of some command line flags (like --no-use-binaries) that may not otherwise work properly with certain kits (e.g. Braze/mParticle-Appboy)
Please note that due to the required sequence of steps for the release process, the json files will be generated and published prior to the artifacts being uploaded, so the links in the json files may be invalid for a short period of time after initially being committed.
The SDK no longer limits the size of non-array event attribute values to 255 characters, lengths of up to 4096 characters are now supported.
Some obsolete limits have been removed.
Add limits for message, batch size
This release results in messages larger than 100K being dropped.
If your log level is set to Error or higher, a message will be logged when this occurs.
This release also limits the total message bytes and total number of messages that can be packed into each batch.
However, these batch-level limits will not result in dropped data since the SDK will enforce the limits by producing smaller batches.
You can now control which kits are enabled and disabled based on a user's "logged in" state. A common use case would be to initialize a given kit for non-anonymous (logged in) users. Navigate to a kit's connection settings in your mParticle dashboard to give this a try.
- Mark user segments API deprecated
- Fix kit location forwarding
- Appboy - Bugfix for in app message delegate
- AppsFlyer - Mark as static_framework to support
use_frameworks!
- Update Taplytics to 2.33.0
- Fix a bug where webview events with an encoded slash in the event info were being dropped
- Fix retain cycles in MPConnector
- Ensure log level from config is always respected, not overridden by environment
- Don't set Kochava delegate unless retrieveAttribution setting is turned on
- Remove use of undocumented isNewUser flag
- Fix Reachability bug where we were incorrectly reporting users as being on wifi when they were actually using mobile data
- Kochava - Add support for mParticle Attribution API
- We've cleaned up and addressed several bugs around automatic push-notification event tracking.
- Several new APIs have also been introduced to control the tracking of push notifications. You can now manually log that a push has been received or opened. You can also disable the automatic collection of those two events via the MParticleOptions "trackNotifications" property.
- We've also addressed an issue whereby NSNull is passed to the legacy, pre-IDSync kit APIs as several kits, such as Branch, were unable to handle NSNull.
The Taplytics kit has been released with much help from the Taplytics team!
- Updates for better iOS 12 and Xcode 10 support. We upgraded to NSSecureCoding and silenced other deprecation warnings to maintain support for older iOS versions.
- Code cleanup and additional unit tests for session notifications
- Update Radar kit
- Add Appsee kit
- Simplify backend attribute tests
- Update readme for Localytics Carthage support
- Prevent non-modular include error
- Fix potential crash if called with nil identity
- None
- Update JS snippet to initialize webview
- Enable undefined behavior sanitizer for unit tests
- Silence sanitizer for hashing
- Fix validation for set user tag
- Allow disabling location tracking using ifdef
- Branch: Fix mapping of events to Branch events
- Allow querying the SDK for session ID
- Branch: Handle deep links at app startup
- Update the order of forwarding identities to kits
- Braze (mParticle-Appboy): Implement modify and login MPKitProtocol methods. This ensures that users are assigned the correct email address when sharing the same device.
Warning: You must be using version 7.3.0 or later of the core SDK in order to use this version of the Braze kit.
- None
- AppsFlyer: Map MPCommerceEvent product SKUs to af_content_id
- Localytics: Add Carthage support
- This release updates the
mParticleSessionDidBeginNotification
andmParticleSessionDidEndNotification
notifications to contain the session GUID rather than the SQLite autoincrement ID. This GUID will match the GUID that is communicated via mParticle's server-to-server integrations. - This release also updates the UIApplication
openURL
signature exposed by the SDK to be more compatible with Swift.
- This release completely removes the SDK's primary UIApplication termination listener. Prior to this change, the SDK could prevent process termination while it was performing several cleanup activities.
This release updates the SDK to handle several changes present in the latest beta builds of Xcode 10 and iOS 12.
- This releases addresses several synchronization issues with internal SDK properties that could lead to crashes.
- This releases updates the SDK's UIAppication termination handler to perform operations sychronously. This handler is used to capture the latest device state prior to app force-closes such that subsequent uploads are accurate. Doing this sychronously on the main thread is required to avoid undefined behavior due to iOS process destruction.
- This release is a follow up to version 7.3.11 and moves all kit APIs invocations to the main thread rather than the mParticle SDK's message queue.
- This release updates the timing of when user identities are set on the MParticleUser object. This makes it so that once an identity callback is returned, the provided MParticleUser object has the most up-to-date identities present and queryable.
- This release addresses a migration-crash for customers upgrading from version 6 of the SDK and who are using the SDK's crash-detection APIs.
- This release also adds an appledoc plist to source such that the Appledocs can be generated more easily. We also host the Appledocs on the mParticle documentation site: https://docs.mparticle.com/developers/sdk/ios/appledocs/index.html
- This release ensures that kits are always started on the main thread rather than the SDK's internal serial queue. Kits will still not be started sychronously when calling
MParticle.start
, but they will be initialized on the main thread on a later run-loop.
- This release updates the SDK's app extension support. The
MPARTICLE_APP_EXTENSIONS
flag is no longer necessary and the SDK will determine if it's running in an app extension based off theappex
suffix in the app bundle.
- This release addresses warnings due to the Xcode main thread checker and adds additional synchronization for internal properties that are accessed acrossed threads.
- This release fixes an issue where uploads could be delayed until app background
- Kochava: Fix user identity usage to conform to the latest
FilteredMParticleUser
APIs
The SDK can now dynamically enable and disable kits based on the current user's ConsentState, for GDPR and any other regulation. This lets you enable or disable individual kits only if a given Consent purpose or purposes have been granted or rejected by the user.
- New NetworkOptions API letting you customize SSL pinning and SDK endpoints.
- Ability to query for all users that the SDK has tracked locally on the device.
- Bugfix to address simulator reachability issues
- Leanplum: Fix user identity query to conform to the latest
FilteredMParticleUser
APIs
- This release updates the SDK's SQLite connection to allow for full multi-threaded access. The SDK does not generally access SQLite outside of a single serial queue, but in certain situations it will and could have potentially caused a crash due to simultanous access.
- This release fixes potential SQLite crashes caused by multi-threaded SQLite access caused by the SDK's significant time-change listener.
- This release addresses a potential crash or error log caused by kits that implement the attribution API and return a nil attribution result.
- This is a critical bug fix release. Prior to this, the SDK would upload duplicate kit forwarding statistics. These statistic do not impact forwarding - but they populate the mParticle Event Forwarding dashboard. This change is crucial for proper reporting as well as reducing the amount of SDK SQL storage and upload payload size.
- This release makes a change to the KitProtocol to remove the
onUserIdentified
API.
This release replaces the previous release 7.3.1, addressing a crash that can occur on startup when certain configuration settings are present.
The following changes from 7.3.1 are also included:
Addresses an issue where configuration could be purged by the OS on low disk space devices and cleans up some compiler warnings.
Updates the Branch kit with support for Branch's v2 event tracking APIs, collecting search ads attribution and various other improvements.
- This release moves kit configuration cache into NSUserDefaults to ensure it is not deleted on devices with low storage space.
- This release introduces a series of enhancements to the SDK to ensure that all database and filesystem operations are performed off of the main thread. The SDK's internal message queue is now relied on for all operations.
This release optimizes SDK startup time by deferring or avoiding expensive operations that otherwise were taking place during SDK start.
In addition, it introduces an option to start kits asynchronously.
Here are a few important notes about this release:
- If you are using the Adjust kit, you must update to version 7.2.1 of the kit in coordination with this update to the core SDK. Otherwise your Adjust environment will not be set properly.
- The SDK no longer automatically disables logging in production. The default log level is now set to "none". If you increase the log level for your development builds, please ensure that change does not get compiled into the release version of your app.
- App delegate proxying was incorrectly disabled by default. This has been fixed.
- The SDK now collects user agent by default
This is a high priority update for all users of SDK v7. This update:
- Ensures database migrations from v6 to v7 occur on a background thread.
- Reduces the amount of data that is migrated.
- Simplifies batch upload creation and session deletion logic to ensure the SDK's database is fully cleared when appropriate.
- Avoid blocking the main thread while migrating the database
- Clean up analyzer warnings
- None
- None
- Leanplum
The Leanplum kit has been updated to set "email" as a user attribute on the Leanplum SDK to enable Leanplum email campaigns. If you would not like to send email to Leanplum, you may filter email to Leanplum via the mParticle Filters UI.
This SDK release is a required update for all customers who are migrating from v6.
It fixes an issue where migrated user identities were not being included when building the initial identity request.
- None
- Cache user agent until OS version changes
- Fix Nil User Identity Issue
This release optimizes the capture of user agent to only happen when the OS version changes.
- None
- Avoid requesting config before start
This release fixes a bug where the SDK could trigger a call to config before start was called.
- None
Version 7.1.0 is the first non-beta release of the new mParticle IDSync framework. It contains many new features as well as breaking changes:
- New Identity APIs allowing custom IDSync "strategies" per customer.
- Included in the new APIs is a
MParticleUser
object, as well as the new APIs forlogin
,logout
,modify
, and more! You can read more about the new Identity APIs here. MParticleOptions
object for explicit SDK configuration.- New "Attribution" API, which replaces the former "deferred deeplink" API.
Prior to upgrading to version 7, your mParticle org must be provisioned with an Identity Strategy. Please contact the mParticle Customer Success team at [email protected].
The new SDK contains multiple breaking API changes. To learn how to migrate your existing code, please reference the iOS migration guide.
This release updates MPIdentityApiRequest by removing the copyUserAttributes setting, and adding an optional onUserAlias block. By setting this block on your request, you can copy user attributes per your business logic from one user to the next. You can also copy object from the user's cart.
- Update AppsFlyer with new attribution API
- Update BranchMetrics with new attribution API
- Update Button with new attribution API
- Update Iterable with new attribution API
- Update Singular with new attribution API
- Update Tune with new attribution API
- Update BranchMetrics SDK to 0.20.2
- Update UrbanAirship kit with named user support
- [NEW] Introduce new deeplinking API
- [FIX] Allow concurrent internal modify requests
- [FIX] Ensure Identifying flag is flipped on API timeout
- [FIX] Fixes and enhancements to Identity API error callbacks
- [FIX] Remove MPUtils.h/m
- [FIX] Ensure the correct mpid is used in batches
- [FIX] Fix device application stamp
- [FIX] Propagate Identity API errors to original caller
- [NEW] New identity APIs
- Disable code coverage settings
- Limit how often config requests can be sent
- Update Appboy kit with simplified endpoint logic
- Update ComScore SDK to 5.0
- Delay deeplinking call to kits if necessary
- Update AppsFlyer kit to support onAppOpenAttribution
- Update AppsFlyer SDK to 4.8.0
- Update Branch SDK to 0.18.8
- None
- Fix Localytics SDK version
- None
- Update Localytics SDK version
- Set transaction attributes on kit purchase events
- Add Adobe kit
- None
- Update AppsFlyer kit to support checking for deep links
- Update UrbanAirship kit to add transaction id to purchase events
- Prevent deprecation warnings for iOS 11 deployment target
- Update Singular and Apptentive kits to support Carthage
- Remove Git submodules from the repo to address #49
- Update Singular kit with fixes from the Singular team: mparticle-integrations/mparticle-apple-integration-singular#4
- All kits repos are now git submodules within the core repository
- mParticle now support Singular (formerly Apsalar) via both a Kit and server-side integration!
- This release introduces a class method to
MPKitAppsFlyer
such that implementing apps can set the AppsFlyer tracker delegate. - Update Kochava SDK to 3.2.0
- Update Appboy SDK to 3.0.0
- Update Branch SDK to 0.17.6
- [FIX] Fixes for Xcode 9 / iOS 11 and main thread checker
- [NEW] Remove category on NSUserDefaults
- [FIX] Ensure all server-side configuration settings are reloaded on every app-launch
- [FIX] Revert main thread error fix
- [FIX] Fix main thread error
- [FIX] Fix clang pragma
- [FIX] Remove check for notification hash
- [FIX] Retry and increase timeout for search ads
- [NEW] Add support for Skyhook
- [NEW] Add support for Iterable
- [FIX] Capture user agent in start, never in background
- [FIX] Fix clang static analyzer warnings
- [FIX] Support for Radar as a kit
- [FIX] Support for forcing SDK Environment on start-up
- [NEW] Handle eCommerce events from embedded js sdk
- [NEW] Optimize user identity and user attribute change messages
- [NEW] Sync user attributes and identities only once per kit
- [FIX] Force refresh the config cache when a kit configuration is absent
- [NEW] Use mutable copy of string when setting a user attribute key
- [NEW] Include latitude and longitude in session start events
- [NEW] Allow for environment override even for prod apps
- [FIX] Reporting of commerce events when originated from a custom mapping
- [FIX] Execute projection when the commerce event has no mapped attributes
- [NEW] Remove eTag when app version or build changes
- [FIX] Enumeration to generate upload batches is done non-concurrently
- [FIX] A try/catch block added to serialization of MPMessage. Moreover, further conditions were added to assure the values being handled by the MPUploadBuilder are valid
- [NEW] Support for Radar as a kit
- [NEW] Retrieve kit instance asynchronously with a block. Use
- (void)kitInstance:(NSNumber *)kitCode completionHandler:(void (^)(id _Nullable kitInstance))completionHandler;
to retrieve a kit instance. The block will be called immediately if the kit is already initialized, or will be called asynchronously as soon as the kit becomes initialized - [NEW] Lighter SDK. New Year, new resolution, the core SDK has gone on a diet. Stay tuned, more to come
- [FIX] Fix location getter and nullability notation
- [NEW] Set location without the need to call
beginLocationTracking
- [FIX] Upload data immediately on first application launch
- [NEW] Queue launch parameters. The app notification handler now takes advantage of the forwarding queue mechanism. If kits have not been initialized yet (config not received from server), the data will be held in a queue and once the configuration has been received and kits initialized, the queued items are replayed to kits
- [NEW] Support for Reveal Mobile as a kit
- [NEW] Wrap the capture of the user-agent in a try/catch
- [FIX] Adjust CommerceEvent property serialization: currency, screen name, and non-interactive are now located at the root of serialized CommerceEvent messages
- [FIX] Simplify session management when app becomes active
- [FIX] Increment user attribute when not set previously
- [FIX] Runtime iOS 10 verification of push notifications
- [FIX] Fix potential race condition beginning sessions
- [FIX] End background task when batches are finished
- [FIX] Fix crash when an app is being force quit.
- [FIX] Remove the use of generics from the
checkForDeferredDeepLinkWithCompletionHandler:
method. The received parameter signature is nowNSDictionary
, previously it wasNSDictionary<NSString *, NSString *>
- [NEW] Collect attribute details from search ads
- [FIX] Compare custom mapping keys in a case insensitive manner
- [FIX] Convert event attributes to <string, string> prior to matching custom mappings
- [FIX] Generate the upload batch when the app is terminated by the user or OS. This way app version and build will always be correctly attributed to app events
- [NEW] Support for Apptimize as a kit
- [NEW] Collect whether Daylight Savings Time is enabled
- [NEW] Add notification for when the SDK has finished initializing. Add a flag property indicating whether the SDK has been initialized (KVO compatible)
- [NEW] Support for Leanplum as a kit
- [NEW] When a user identity changes a new type of message is added to the batch to be uploaded to the server. This allows for greater control to inform partners about which user identities were set/present at the moment an app event is logged
You will need for this SDK update:
- Xcode 8 or later
- CocoaPods 1.1.0.rc.2 or later
- [FIX] When a user attribute changes (new, update, or delete) a new type of message is added to the batch to be uploaded to the server. This allows for greater control to inform partners about which user attributes were set/present at the moment an app event is logged
- [FIX] Timing of logged events: Events (both app events and commerce events) now have a timestamp property, which gets populated automatically by the SDK, when an event is logged prior to the SDK being fully initialized. If set, this property will override the timestamp of messages when they are about to be persisted
- [NEW] Custom mappings now support more advanced matching schemes
- [NEW] Support for Urban Airship as a kit
- [FIX] A newly introduced class was missing from the tvOS Xcode target
- [NEW] Kits can now pass integration attributes back to the core SDK
- [NEW] Support for Primer as a kit
- [NEW] Support for Apptentive as a kit
- [NEW] MParticleConfig.plist option to opt in/out of automatic silent notification registration. See mParticle Docs for details
- [NEW] Add the customerId user identity as an event attribute when forwarding to AppsFlyer
- [NEW] Add new methods to the kit protocol to forward user notification related info to kits
- [NEW] Config optional flag to send the session history batch (reducing the amount of data sent over to mParticle)
- [NEW] Opt-in to always try to collect the IDFA
- [NEW] Add continueUserActivity to the public SDK API (Pull Request submitted by twobitlabs)
- [FIX] Guarantee that launch options in AST messages to contain only string parameters
- [NEW] Support for Button as a kit
- [FIX] Server configuration override of crash report initialization is restored
- [NEW] User attributes can now take arrays as values. The array of values is associated with a user attribute key. The list of all user attributes can be retrieved using the new
userAttributes
property
- [FIX] Filter transaction attributes in commerce events
- [FIX] Expand the scope of MPAppDelegateProxy to handle protocol conformance and class hierarchy matching
- [FIX] Fix static analysis flags
- [FIX] Add clang pragmas to remove warnings
- [FIX] Using a string constant (iOS 9 or above) or a string literal (iOS 8 or below) to log a deep-linking event
- [FIX] Add additional checks for iOS 9 symbols
- [FIX] More consistent handling of kit initialization and sampling
- [FIX] Expose some files for use by kits
- [FIX] Add nil check and prevent modifying while enumerating
- [FIX] Set the kits initialized flag only if persisted kits have been initialized
- [FIX] Correct a condition determining whether variables were valid
- [NEW] We are introducing the ability to implement extensions for the mParticle SDK. Kits have been the first component to take advantage of this new and more powerful architecture
- [NEW] A queue was added to hold events to be forwarded to kits until the first configuration is received from the server and kits are initialized
- [NEW] Added support for Carthage
- [NEW] Maximum user attribute value length has been extended to 4096 characters
- [FIX] Restored unit tests for each of the platforms
- [NEW] Stripping
$
from event attributes when forwarding to Appboy - [FIX] Updated the
podspec
to include paths and flags required to build kits
- [NEW] Added Branch Metrics support for received push notifications
- [NEW] Renamed the
MPLogLevel
enum toMPILogLevel
. The renamed values are:MPILogLevelNone
,MPILogLevelError
,MPILogLevelWarning
,MPILogLevelDebug
, andMPILogLevelVerbose
- [NEW] Unification of the SDKs. Now the iOS and tvOS SDKs are combined into one single SDK. Support for more platforms will be coming in the future
- [NEW] Updated Kahuna kit
- [NEW] Conforming to the RFC 6585 HTTP status code 429,
Retry-After
response header
- [NEW] Validating the data type in event custom flags. Making sure that the array of flags is an array and that it only contains string items in it
- [FIX] Do not forward push information to Kahuna if the app was launched as a result of a user tapping on a push notification, since their SDK is already capturing the contents of the notification. There is no impact on data forwarding/counting/reporting, this just prevents a Kahuna delegate method from being called twice
- [NEW] Expanded the Branch Metrics kit to handle
openURL
andcontinueUserActivity
- [NEW] Custom mapping between mParticle and Appboy user attributes
- [FIX] Fixed duplicate forwarding of a push notification when launching an app by tapping on a remote notification
- [FIX] Fixed the representation of custom attributes in commerce event product impressions
- [FIX] Fixed the predicate filtering active kits
- [FIX] Fixed the formatting of event attributes in
logError
- [FIX] Correct the expected data type for configuring custom dimensions in Localytics
- Support for Tune as a kit
- Verifying whether obtained 3rd party custom module values are a supported data type
- Updated the nullability notation for handleActionWithIdentifier
- Deferring the execution of the code in the ApplicationDidFinishLaunching to the next run-loop as a workaround to a bug in the Sqlite implementation
- Determining whether to forward an app delegate call to the old deep-linking method
- Forwarding event attributes as user attributes to Appboy
- Support for AppsFlyer as a kit
- Implementation of filter by event attribute value
- Preventing session history batch being sent when data is ramped
- Indirect instantiation of Kochava to allow it to work in the mParticle SDK with dynamically linked frameworks,
use_frameworks!
, bitcode, and static libraries
- Updated the podspec and README to allow for the utilization of
use_frameworks!
and the mParticle SDK - Fixed an overloaded start method that was overriding the running environment parameter
- Fixing the location of the Wootric subspec
- Support for Wootric as a kit
- Broadcast of the session start notification may incur a delay if the SDK is being started
- Renamed MPConstants to MPIConstants
- Verifying the boundaries of eCommerce currency values to avoid numbers represented using scientific notation
- Early detection of kit configuration change when migrating from SDK 4.x to 5.x
- Reporting the app key in the request header
- Replaced NSTimer with dispatch_source_t with positive results minimizing the use of energy
- Refactored class files adding the MP prefix
- Adopted Lightweight Generics
- Fixed a bug reporting active kits
- Enforcing the data type of eCommerce numeric values
- Adopted the Objective-C Nullability syntax
- Serializing kit configurations rather than kit instances
- Defined default subspecs
- New and updated unit tests
- Using asynchronous validation for authenticity of certificates
- Each commerce event action is dealt with in an action-by-action basis for Kahuna
- Fixed a bug expanding and forwarding events to kits with no support to eCommerce events
- Support for Crittercism as a kit
- Crash reporter has been implemented as an optional subspec
- Validating the authenticity of network requests by alternative means to avoid errors raised by 3rd party SDKs mutating and proxying mParticle's original object performing the request
- Removed legacy semaphores from network connections
- Fixed a bug referencing commerce event names
- Fixed a bug about events with no attributes not being forwarded to kits
- Migrated Unit Tests from SDK version 4.x to 5.x
- Added support to the new iOS 9 application:openURL:options: app delegate method
- Fixed a bug migrating data when the database structure changes