iOS SDK Version History

v6.2.0 Changes (2019-September-12)

  • Replace UIWebView with WebKit.
  • Remove unused dependencies from Cocoapods.

v6.1.0 Changes (2019-March-5)

  • Ensure that no PII data is sent to Branch Servers.  Methods that were sending PII data have been deprecated and will be removed in v7.0.0.
    • The Tune iOS SDK no longer sends:
      • User Email
      • User Name
      • Facebook User ID
      • Twitter User ID
      • Google User ID
      • Gender
      • Age
      • Latitude
      • Longitude
      • Altitude

v6.0.4 Changes (2019-January-2)

  • Added the Branch domain ( to the default list within the TUNE SDK to support attribution of links by the TUNE SDK.

v6.0.3 Changes (2018-10-01)

  • Updated handleContinueUserActivity method signature.
  • Removed md5 and sha1 hashing algorithm usage for PII fields (user email, user phone and username).
    • Note: Only sha256 hashing algorithm available.

v6.0.1 Changes (2018-08-21)

  • Fix for C++ code compatibility.
  • Removal of old debug methods.

v6.0.0 Changes (2018-08-02)

  • IAM has been fully removed from the SDK.
  • Smartwhere Integration has been removed.
  • Debug logging API simplification.
  • Removal of deprecated APIs.
  • Stability enhancements and code cleanup.

v5.2.1 Changes (2018-06-07)

  • Hotfix to resolve a tvOS compilation error.

v5.2.0 Changes (2018-06-04)

  • Marked all IAM functionality as Deprecated. All IAM will be removed in iOS v6.0.0
  • Marked AppToApp tracking (i.e. tracking ad served by TUNE sending the user to a third party) as Deprecated.
  • Fixed bug with Reachability check.

v5.1.1 Changes (2018-04-25)

  • Fix issue with install date check.
  • Fix issue with connection type check.
  • Fix issue with smartwhere integration.
  • Improve header documentation.

v5.1.0 Changes (2018-04-11)

  • Improve Swift compatibility by adding collection typing and nullability.
  • Fix potential iOS 8 crash related to CoreSpotlight.

v5.0.3 Changes (2018-03-21)

  • Fixed potential warnings due to MainThreadChecker.

v5.0.2 Changes (2018-03-06)

  • Fixed rare crash due to shallow copy before data serialization.
  • Added static library option when manually building the Tune SDK.
  • Added getIAMDeviceIdentifier and getIAMAppId to iOS SDK public API.

v5.0.1 Changes (2018-Feb-19)

  • Fixed potential iOS 9 crash when installed via Cocoapods.
  • Bug fixes:
    • Decrease referral link max size.
    • Increase initialization wait time.

v5.0.0 Changes (2018-Feb-02)

  • Converted the iOS SDK to a dynamic framework.
    • Available as of Xcode 6.
    • Minimum supported platform is iOS 8.0.
  • Removed Smartwhere combined framework for iOS
    •  The Tune SDK will include all the code for working together with Smartwhere if present (Smartwhere SDK required), but without the hard dependency/bundling.

v4.15.0 Changes (2018-January-24)

  • Added support for the new generation of In-App Messaging Campaigns for IAM. For more information or access to this feature in the Tune Marketing Console, please contact your CSM!

v4.14.2 Changes (2017-December-19)

  • Added client-side redaction of known personal information for devices that have been automatically or manually flagged as privacy protected to complement our existing server-side protections.
  • Removed deprecated debug server endpoint.

v4.14.1 Changes (2017-Nov-28)

  • Fix issue with reserved profile variable name capitalization.
  • Add debug method that includes network request and response, if available.

v4.14.0 Changes (2017-Oct-19)

  • Allow manual flagging of device users for Children's Online Privacy Protection Rule (COPPA).
  • Move cached data from Documents.
  • Upgrade Smartwhere SDK version.
  • Bug Fixed: Out parameter use in network calls.

v4.13.4 Changes (2017-Sept-12)

  • Optimized Apple Search Ads integration timing.
  • This release officially adds support for iOS 11 addressing warnings and compiler issues.

v4.13.3 Changes (2017-Aug-7)

  • Bug Fixed: Fixed Smartwhere header.
  • Bug Fixed: Resolved conflicting constant name issue.

v4.13.2 Changes (2017-Aug-3)

  • Bug Fixed: Fixed upload to Cocoapods issue.

v4.13.1 Changes (2017-Aug-2)

  • Added the Smartwhere SDK as a dependency to the Tune SDK. Customers can opt-in to connecting their TUNE account with Smartwhere for location-based attribution analytics.
  • Additionally, customers can opt-in to sharing Tune SDK event data with Smartwhere for location-based message triggering.
  • See our iOS Quick Start and Smartwhere Integration articles for more information.

v4.12.5 Changes (2017-June-28)

  • Bug Fixed: Patched JSON parser to handle bad NSUserDefaults data.
  • Bug Fixed: Fixed invoke_id retrieval latency.

v4.12.4 Changes (2017-Mar-29)

  • Bug Fixed: Moved Reachability check off main thread.

v4.12.3 Changes (2017-Mar-15)

  • Bug Fixed: Fixed takeover messages for upside-down portrait mode on iPhone.

v4.12.2 Changes (2017-Feb-16)

  • Bug Fixed: Fixed slide-in messages for landscape mode on iOS8+.

v4.12.1 Changes (2017-Feb-9)

  • Bug Fixed: Fixed compilation error when developing in Xcode 7 (removed reference to newer enum type). This bug was introduced in 4.12.0.
  • Bug Fixed: Prevent crashes on iOS 6 and iOS 7 when tracking deep link opens. This bug was introduced in 4.12.0.

v4.12.0 Changes (2017-Jan-19)

v4.11.0 Changes (2017-Jan-12)

  • Added Smartwhere integration
  • Bug Fixed: Fix bug related to detecting jailbroken devices

v4.10.1 Changes (2016-Dec-15)

  • AA: Improved SearchAds attribution measurement reliability by fine-tuning SearchAds API call timings
  • AA: Included two additional request url params locale and build
  • IAM: Improved debug logging to notify about push registration success
  • Bug Fixed: Avoided possibility of App Store rejections by splitting string constant values that match Apple private class names

v4.10.0 Changes [Critical] (2016-Oct-27)

  • Bug Fixed: AA: Improved iAd/Search Ads attribution measurement reliability by delaying initial check by 10+ seconds and retrying every minute up to 5 minutes after app install to account for Apple iAd/SearchAds Attribution API response latency
  • Bug Fixed: IAM: Fixed in-app message portrait/landscape interface orientation changes when device orientation is Face Up, Face Down

v4.9.2 Changes [Critical] (2016-Oct-11)

  • Bug Fixed: Possible app crash due to thread deadlock in TuneUserProfile.m
  • Includes iAd/SearchAds campaign attribution info in the very first "session" request to avoid separate "install" post-conversion request

v4.9.1 Changes [Critical] (2016-Sep-21)

  • Bug Fixed: IAM: Handled remote push notifications on iOS 10+ when host project relies on UserNotifications.framework.
  • UserNotifications.framework reference can be optionally included if being utilized by the host app
  • Host project can be built in Xcode 7/8
  • Known Issue: Possible app crash due to thread deadlock in TuneUserProfile.m.

v4.9.0 Changes [Critical] (2016-Sep-13)

  • Bug Fixed: AA: Updated optional Facebook SDK activityApp method call to make sure it does not cause issues during App Store submission
  • Bug Fixed: Make sure original install date is collected even after app update by using NSDocumentDirectory creation date instead of NSBundle creation date
  • IAM: Added public method in Tune class to allow immediate execution of previously registered deep action code-block:
    + (void)executeDeepActionWithId:(NSString *)deepActionId andData:(NSDictionary *)data;
  • Known Issue: IAM: Remote push notifications not supported on iOS 10+ when host project relies on UserNotifications.framework.
  • Known Issue: Possible app crash due to thread deadlock in TuneUserProfile.m.

v4.8.0 Changes (2016-Aug-30)

  • AA: iAd/SearchAds campaign attribution info is forwarded to TUNE Measurement Engine as part of request post data
  • AA: Trying to measure an event with an empty event name will cause TuneDelegate error callback to be fired
  • IAM: Automatically fire IAM events "Push Enable" / "Push Disabled" when push enabled status change is detected
  • IAM: Removed hookId property from TunePowerHookExperimentDetails, since the experiment may be associated with multiple power hooks.
  • Known Issue: Possible app crash due to thread deadlock in TuneUserProfile.m.
  • Known Issue: IAM: Remote push notifications not supported on iOS 10+ when host project relies on UserNotifications.framework.

v4.7.0 Changes (2016-Aug-10)

  • AA: Deprecated measurement using TUNE event IDs. Events should only be measured by name. Please use measureEventName: or measureEvent: instead.
    + (void)measureEventId:(NSInteger)eventId; // DEPRECATED
  • AA: Ignores fake campaign attribution data returned by iAd/SearchAds API in non-AppStore builds
  • AA: Handles "iad-keyword" param included by iAd/SearchAds API with Apple Search Ads campaign attribution data
  • IAM: Allows warnings related to missing *DelegateClassName properties to be disabled by setting TuneConfiguration.plist "ShowDelegateWarnings" boolean property
  • IAM: Persist custom profile variables across sessions
  • IAM: Allows checking if current user belongs to certain TUNE IAM segment(s)
    + (BOOL)isUserInSegmentId:(NSString *)segmentId;
    + (BOOL)isUserInAnySegmentIds:(NSArray *)segmentIds;
  • Known Issue: Possible app crash due to thread deadlock in TuneUserProfile.m.
  • Known Issue: IAM: Remote push notifications not supported on iOS 10+ when host project relies on UserNotifications.framework.
  • Known issue: Some measurement logs incorrectly have an app_version of 0.

v4.6.0 Changes (2016-Jul-22)

  • Adds support for Xcode 8 Beta / iOS 10 Beta
  • When using Xcode 8, project needs to reference an additional framework UserNotifications.framework
  • Omits IFA from request data if it contains all zeros when Limit Ad Tracking privacy setting is enabled on iOS 10+
  • AA: Allows better debugging thru a new TuneDelegate callback that includes network request url and data
  • - (void)tuneEnqueuedRequest:(NSString *)url postData:(NSString *)post;
  • AA: Modified automatic IAP measurement to avoid duplicate events; when enabled, measures a "purchase" event only after SKPaymentTransaction finishTransaction: is called by the host app
  • IAM: Personal data fields — phone number, user name, user email — are now hashed — MD5, SHA-1, SHA-256 — for ePrivacy compliance
  • IAM: Fixed config server sync: When running TestFlight builds, used deviceId instead of IFA
  • Known Issue: IAM: Remote push notifications not supported on iOS 10+ when host project relies on UserNotifications.framework.
  • Known issue: Some measurement logs incorrectly have an app_version of 0.

v4.5.0 Changes [Critical] (2016-Jun-30)

  • Fixed iOS 6-only app crash
  • IAM: removed IAM-only custom geo-location tagging for events
  • removed TuneEvent method:
    - (void)addTag:(NSString *)name withGeolocationValue:(TuneLocation *)value;
  • AA: requests include app release-version-number string CFBundleShortVersionString thru app_version_name param
  • Known issue: TestFlight builds: IAM configuration server sync may fail when IFA changes
  • Known issue: Some measurement logs incorrectly have an app_version of 0.

v4.4.0 Changes (2016-Jun-27)

  • IAM: Make sure Tune swizzled UIApplicationDelegate methods do not hide any callback methods in host app AppDelegate class
  • IAM: Expose push info thru TunePushInfo public class
  • AA: Make sure TuneDeferredDplinkr uses IFA updated thru setter
  • AA: When auto measurement of IAP is enabled, measure "purchase" event only when finishTransaction: is called by the host app, to make sure that duplicate events are not fired
  • AA: When auto measurement of IAP is enabled, include IAP transactionIdentifier, productIdentifier and "tune_iap_auto_event" flag in auto-generated "purchase" events
  • Known issue: requires minimum iOS 7, crashes on iOS 6
  • Known issue: TestFlight builds: IAM configuration server sync may fail when IFA changes

v4.3.1 Changes (2016-Jun-02)

  • IAM: Fixes possible crash related to TuneAnalyticsManager NSOperationQueue
  • IAM: During SDK integration, presents Tune alert popups on a separate UIWindow to avoid potential conflicts with other animations
  • IAM: SDK requests include "app_version_name" param to provide access to app version string in Segment Builder
  • Known issue: requires minimum iOS 7, crashes on iOS 6

v4.3.0 Changes (2016-May-19)

  • IAM: Improves handling of OnFirstPlaylistDownloaded events
  • IAM: Swizzles application:openUrl:options: and application:openUrl:sourceApplication:annotation: methods only if implemented by AppDelegate
  • IAM: Makes sure configuration is downloaded on each application foreground
  • AA: iOS requests automatically include bundle_id param with value set to iOS Bundle Identifier
  • AA: iOS requests automatically include is_testflight_build param with value set to 1 for TestFlight builds
  • Includes latest Apple Reachability helper class v5.0
  • Known issue: requires minimum iOS 7, crashes on iOS 6

v4.2.1 Changes (2016-Apr-27)

  • Added 3.0 sec default timeout to onFirstPlaylistDownloaded: IAM callback method
  • Do not overwrite an existing Power Hook due to duplicate public setter calls to registerHookWithId:friendlyName:defaultValue:
  • Fixed pre-compiled header related warning

v4.2.0 Changes (2016-Apr-13)

  • Adds Tune_tvOS framework to support Attribution Analytics on tvOS
  • Note: In-App Marketing is NOT supported on tvOS
  • Fixes automatic collection of iAd campaign info for iAd attributed installs
  • Automatically calls Tune applicationDidOpenURL:sourceApplication: params when app is opened thru Spotlight search on iOS
  • Requires CoreSpotlight framework to be referenced in the Xcode iOS project
  • Fixes attribution thru deferred deep links in cases where the app shows an alert on first app launch causing duplicate measureSession call(s) to be fired from applicationDidBecomeActive: callback
  • Allows only one measureSession call per app session; duplicate calls result into TuneDelegate error callbacks
  • Removed Cross-Promo Ad classes:

v4.1.0 Changes (2016-Mar-14)

  • Updates SDK to automatically turn off the ability to send Push Notifications to users who are age 13 or under
  • Updates IAM Capabilities to be less chatty on the network
  • Updates to not default to automatic collection of In-App Purchase events
  • Fixes IAM tracking of Events created from AA Event IDs
  • Updates SDK to always respond with success/failure callbacks when checkForDeferredDeeplink: is called

v4.0.14 Changes [Critical] (2016-Mar-01)

  • Fixes an issue which caused network requests to remain enqueued on iOS 6 devices

v4.0.13 Changes (2016-Feb-22)

  • Fixes issue with NSDateFormatter not being thread safe
  • Fixes issue with UIPasteboard not being thread safe
  • Fixes issue revolving around Reachability object not being released
  • Removes setShouldAllowDuplicateRequests method
  • Updates location tracking code to better support IAM

v4.0.12 Changes (2016-Jan-21)

  • Fix for invoking Facebook SDK’s activateApp upon measureSession if Facebook event logging enabled
  • Fix for updating TMA configuration debug mode

v4.0.10 Changes (2016-Jan-18)

  • Disable warnings in builds with DWARF with dSYM File.
  • Do not trigger App Store warning for apps that do not have push enabled.
  • Use CocoaPods version 4.0.11 for this version

v4.0.8 Changes (2016-Jan-8)

  • Fixed warning that appeared if you did not have push enabled.
  • Renamed some internal methods to prevent conflicts with other libraries.
  • Use CocoaPods version 4.0.9 for this version

v4.0.7 Changes (2015-Dec-18)

  • added bitcode support to SDK binary to match Xcode 7 default “Enable Bitcode” setting

v4.0.6 Changes [Critical] (2015-Dec-16)

  • fixed an app crash related to threading during Tune init
  • stopped reporting non-In-App-Marketing push notifications
  • allow Swift files for AppDelegateClassName

v4.0.5 Changes (2015-Dec-11)

  • adds support for In-App Marketing:
    • Targeted push notifications
    • Rich in-app messaging
    • Auto event collection and analytics
    • User segmentation and profiling
    • Mobile A/B testing
  • the target Xcode project needs to include the following framework under Build Phases “Link Binary With Libraries”:
    • AdSupport
    • CoreTelephony
    • iAd
    • libz.dylib / libz.tbd
    • MobileCoreServices
    • Security
    • StoreKit
    • SystemConfiguration
  • the target Xcode project needs to include the following flags under Build Settings “Other Linker Flags”:
    -ObjC -lz
  • if using In-App Marketing, create TuneConfiguration.plist and set the TurnOnTMA flag to True
  • to access the framework, import the Tune module or Tune.h header
  • replaced MobileAppTracker class with Tune class
    • replace @import MobileAppTracker with @import Tune
    • replace #import <MobileAppTracker/MobileAppTracker.h> with #import <Tune/Tune.h>
  • if using In-App Marketing, optionally include UIViewController+NameTag category,
    #import <Tune/UIViewController+NameTag.h>
  • replaced MobileAppTrackerDelegate protocol with TuneDelegate protocol
  • replaced +(NSString *)matId getter with +(NSString *)tuneId

v3.17.1 Changes [Critical] (2016-Mar-01)

  • Fixes an issue which caused network requests to remain enqueued on iOS 6 devices

v3.17.0 Changes (2016-Feb-22)

  • Fixes location updating not being on the main thread
  • Adds requesting location for tvOS

v3.15.0 Changes [Critical] (2015-Dec-01)

  • fixed an app crash related to immutable NSDictionary modification when a deferred deep link is set and the SDK tries to update existing enqueued request objects with referral_url param info
  • deprecated +(NSString *)matId; please use +(NSString *)tuneId instead
  • deprecated iAd display helper methods

v3.14.1 Changes [Critical] (2015-Nov-12)

  • fixes an issue where referral urls got truncated when using deferred deep linking (TUNE and third party)
  • fixes an issue due to which the MAT SDK could not be used with apps having bitcode enabled (in Xcode 7+)

v3.14.0 Changes (2015-Nov-03)

  • update latest enqueued requests with deferred deep link info set through applicationDidOpenURL:sourceApplication:
  • do not auto-collect location on sdk init to let disable flag take effect
  • deprecated setSiteId:, please use setPackageName: instead

v3.13.0 Changes (2015-Sep-29)

  • collect new iAd attribution info starting with iOS 9:

v3.12.0 Changes (2015-Sep-16)

  • enabled “bitcode” support for iOS 9 Xcode 7
  • updated minimum deployment target to 6.0 from 5.1.1 — required when “bitcode” is enabled
  • dropped armv7s architecture — not supported by Xcode 7

v3.11.1 Changes (2015-Sep-10)

  • fixed functionality to disable auto-collection of device geo location
  • fixed broken ad caching related to TuneAdView
  • included transaction date when in-app-purchase auto-measurement is enabled
  • re-added missing armv7s architecture support

v3.11.0 Changes (2015-Aug-26)

  • changed Tune init method signatures
    + (void)initializeWithTuneAdvertiserId:(NSString *)aid tuneConversionKey:(NSString *)key;
    + (void)initializeWithTuneAdvertiserId:(NSString *)aid tuneConversionKey:(NSString *)key tunePackageName:(NSString *)name wearable:(BOOL)wearable;
  • added methods to allow control over auto-collection of IFA and device geo location
    + (void)setShouldAutoCollectAppleAdvertisingIdentifier:(BOOL)autoCollect;
    + (void)setShouldAutoCollectDeviceLocation:(BOOL)autoCollect;
  • changed geo location setter to use TuneLocation
  • method added
    + (void)setLocation:(TuneLocation *)location;
  • methods removed
    + (void)setLatitude:(double)latitude longitude:(double)longitude;
    + (void)setLatitude:(double)latitude longitude:(double)longitude altitude:(double)altitude;
  • sdk does not auto-open the deferred deep link anymore, the app needs to implement delegate methods and handle the deferred deep link as appropriate
  • changed deferred deep link method signature to require delegate object instead of timeout
    + (void)checkForDeferredDeeplink:(id)delegate;
  • removed timeout param from deferred deep link success delegate callback
    - (void)tuneDidReceiveDeeplink:(NSString *)deeplink;
  • updated TuneAdDelegate delegate callbacks
    - (void)tuneAdDidFetchAdForView:(TuneAdView *)adView placement:(NSString *)placement;
    - (void)tuneAdDidStartActionForView:(TuneAdView *)adView willLeaveApplication:(BOOL)willLeave;
    - (void)tuneAdDidEndActionForView:(TuneAdView *)adView;
    - (void)tuneAdDidCloseForView:(TuneAdView *)adView;
    - (void)tuneAdDidFailWithError:(NSError *)error forView:(TuneAdView *)adView;
    - (void)tuneAdDidFireRequestWithUrl:(NSString *)url data:(NSString *)data forView:(TuneAdView *)adView;
  • Fixed ad view request fired delegate callback
    - (void)tuneAdDidFireRequestWithUrl:(NSString *)url data:(NSString *)data forView:(TuneAdView *)adView;


v3.10.0 Changes (2015-Jul-21)

  • added support for showing banner and interstial ads for cross-promo
  • new classes:
  • auto-collects IFA when AdSupport.framework is available
  • auto-collects device location only if end-user has already permitted location access
  • added new init method to support event measurement from Apple Watch view controllers
  • new method:
    + (void)initializeWithTuneAdvertiserId:(NSString *)aid TuneConversionKey:(NSString *)key TunePackageName:(NSString *)name wearable:(BOOL)wearable;
  • added timeout flag to deferred deep link delegate callback
  • new method:
    - (void)tuneDidReceiveDeeplink:(NSString *)deeplink didTimeout:(BOOL)timeout;
  • deprecated MobileAppTracker/MAT classes; existing measurement code should work fine without change; use of Tune classes recommended going forward
  • new classes:
  • deprecated classes:

v3.9.3 Changes [Critical] (2015-Jun-18)

  • bug fixed: possible app crash issue when using auto-measurement of in-app-purchase events on iOS < 8
  • bug fixed: url-encoding of user-agent query param in session/event requests and url-encoding of query params in deferred deep-link requests
  • updated MATEvent — added public string constants for pre-defined events to be used with measureEvent calls

v3.9.1 Changes [Critical] (2015-May-15)

  • bug fixed: possible app crash issue related to MATEvent introduced in v3.9
  • changed attributes of MATEvent properties — date1, date2 — to ‘strong’

v3.9 Changes (2015-May-11)

  • simplified event measurement method signatures
  • new methods:
    + (void)measureEventName:(NSString *)eventName;
    + (void)measureEventId:(NSInteger)eventId;
    + (void)measureEvent:(MATEvent *)event;
  • deprecated measureAction methods
  • removed setEventXXX methods
  • added option to auto-measure in-app-purchase events
  • new method:
    + (void)automateIapEventMeasurement:(BOOL)yesorno;
  • requires StoreKit.framework
  • added Facebook 4.0 SDK support for Facebook event logging
  • added ability to set publisher info through the SDK
  • new method:
    + (void)setPreloadData:(MATPreloadData *)preloadData;
  • removed internal method from public header:
    + (void)setPluginName:(NSString *)pluginName;
  • known bug: possible app crash when using MATEvent date1, date2 properties


v3.8.1 Changes [Critical] (2015-Mar-31)

  • bug fixed: crash related to nil values in phone number, user name, user email setters
  • bug fixed: rare cases of null garbage values in user-agent strings

v3.8 Changes (2015-Mar-06)

  • Personal data fields — phone number, user name, user email — are now hashed — MD5, SHA-1, SHA-256 — for ePrivacy compliance

v3.7 Changes [Critical] (2015-Jan-14)

  • added support for opening deferred deep-links on first app launch
  • added method:
    + (void)checkForDeferredDeeplinkWithTimeout:(NSTimeInterval)timeout;
  • bug fixed: possible app crash related Base64 encoding on iOS versions prior to 7.0
  • always uses Base64 methods provided by NSData

v3.6.1 Changes [Critical] (2014-Dec-19)

  • bug fixed: possible app crash related to CTTelephonyNetworkInfo
  • bug fixed: possible app crash related to threading when using Facebook event logging
  • calls all Facebook event logging methods on the main thread

v3.6 Changes (2014-Dec-02)

  • added setter method to optionally enable automatic event logging using Facebook SDK, disabled by default
  • to use this feature:
    • a corresponding Facebook app must exist
    • include Facebook SDK framework
    • add “-ObjC” or “-all_load” to project build settings “Other Linker Flags”
    • define FacebookAppID and FacebookDisplayName keys in the project Info.plist
  • when the option is enabled and Facebook SDK framework is included, measureSession and measureAction will automatically log corresponding events on Facebook
  • added method:
    + (void)setFacebookEventLogging:(BOOL)logging limitEventAndDataUsage:(BOOL)limit;

v3.5.4 Changes [Critical] (2014-Nov-17)

  • fixed possible NSXMLParser memory related crash if the stored MAT request queue gets too big (~500 KB), only affects apps released with MAT SDKs prior to v3.5

v3.5.3 Changes (2014-Oct-06)

  • re-added support for Xcode 5.1.1

v3.5.2 Changes [Critical] (2014-Oct-06)

  • fixed network request retry logic

v3.5.1 Changes (2014-Sep-24)

  • included armv7s along with armv7 and arm64 architectures
  • updated lowest deployment target to iOS 5.1.1

v3.5 Changes (2014-Sep-17)

  • created MAT module to be used when target project has “Enable Modules” set to Yes (requires Xcode 6.0)
    @import MobileAppTracker;
  • send iAd impression time for iAd attributed installs on iOS 8
  • improved request queuing logic
  • prefixed all internal constants to avoid symbol clash with other external libraries
  • requires Xcode 6.0+

v3.4.1 Changes (2014-Jul-29)

  • fixed possible duplicate symbol error when using Reachability class
  • when available use Base64 methods provided by NSData

v3.4 Changes (2014-Jul-23)

  • separated measureAction methods to accept string event names or int event ids
  • added multiple measureActionWithEventId:(NSInteger) methods

v3.3 Changes (2014-Jul-21)

  • collect and send device screen size and screen density values

v3.2.5 Changes (2014-Jun-25)

  • removed CoreLocation.framework dependency

v3.2.3 Changes (2014-Jun-18)

  • send request retry count for failed queued requests
  • lower retry frequency for subsequent failures
  • requires CoreLocation.framework to be included

v3.2.1 Changes [Critical] (2014-May-09)

  • bug fixed: rare app crash when collecting the user agent string
  • bug fixed: iAd attribution collected but not always sent to MAT servers

v3.2 Changes (2014-Apr-04)

  • persist userId, userName, userEmail to disk to make re-engagement attribution easier
  • add setEventContentType, setEventContentId, setEventLevel, setEventQuantity, setEventSearchString, setEventRating, setEventDate1, and setEventDate2 methods
  • enable iAd attribution on iOS 7.1, requires Xcode 5.1.1

v3.1.3 Changes (2014-Mar-26)

  • started collecting App Store receipt for fraud detection

v3.1.2 Changes [Critical] (2014-Mar-20)

  • bug fixed: background thread related app crash introduced in v3.1

v3.1.1 Changes (2014-Mar-14)

  • does not reference iAd.AdClient
  • does not collect iad_attribution on iOS 7.1
  • works with Xcode 5.0

v3.1 Changes (2014-Mar-10)

  • changed trackSession to measureSession
  • changed trackActionWithEventIdOrName: to measureAction:
  • collect and send iad_attribution on iOS 7.1
  • send is_paying_user=1 if the user has ever produced revenue (measureAction with revenue > 0)
  • all methods executed on an internal background thread
  • requires Xcode 5.1

v3.0.6 Changes (2014-Feb-25)

  • allowed public access to mat_id and open_log_id parameters
  • added methods:
    + (NSString*)matId;
    + (NSString*)openLogId;

v3.0.5 Changes (2014-Feb-20)

  • send system times in Unix epoch format
  • retry (enqueue) HTTP connections with almost all error states

v3.0.4 Changes (2014-Feb-17)

  • added methods:
    + (void)displayiAdInView:(UIView *)view;
    + (void)removeiAd;

v3.0.3 Changes (2014-Feb-10)

  • added methods:
    + (void)setUserEmail:(NSString *)userEmail;
    + (void)setUserName:(NSString *)userName;

v3.0.2 Changes [Critical] (2014-Feb-10)

  • does not require AdSupport framework
  • bug fixed: event name double url-encoding bug introduced in 3.0
  • removed method:
    + (void)setAppleAdvertisingIdentifier:(NSUUID *)advertising_identifier;
  • added method:
    + (void)setAppleAdvertisingIdentifier:(NSUUID *)advertising_identifier

v3.0.1 Changes [Critical] (2014-Feb-06)

  • critical: restored support for builds that target arm64 architecture (64-bit devices)
  • known bug: event names get double url-encoded in sdk, ex. event name “level finished” is recorded as “level%20finished” in reports

v3.0 Changes [Critical] (2014-Feb-05)

  • added setExistingUser: and trackSession methods to take care of tracking install, update and open events
  • removed methods:
    + (void)trackInstall;
    + (void)trackUpdate;
  • added methods:
    + (void)setExistingUser:(BOOL)existingUser;
    + (MATActionResult)trackSession;
  • added enum MATActionResult used for the return type of trackSession method
  • replaced existing methods with equivalent class methods, sharedManager not provided anymore
  • the sdk automatically assumes that an event name is an id when it contains all numbers
  • sdk uses in-built json api, thus requires minimum iOS version of 5.0
  • removed class property:
    NSDictionary *sdkDataParameters;
  • renamed method:
    setTRUSTeTPID: to setTRUSTeId:
  • similar to eventItem attributes, now all events support upto 5 attributes to be set
  • list of methods added:
    + (void)setEventAttribute1:(NSString*)value;
    + (void)setEventAttribute2:(NSString*)value; 
    + (void)setEventAttribute3:(NSString*)value; 
    + (void)setEventAttribute4:(NSString*)value; 
    + (void)setEventAttribute5:(NSString*)value;
  • changed MobileAppTrackerDelegate method signatures to:
    + (void)mobileAppTrackerDidSucceedWithData:(NSData*)data;
    + (void)mobileAppTrackerDidFailWithError:(NSError*)error;
  • bug fixed: incorrect truncation of urls if the app title contained non-English unicode characters
  • code change: replace all occurrences of “[[MobileAppTracker sharedManager]” with “[MobileAppTracker”
  • code change: when the app starts always call setExistingUser: and trackSession
  • code change: remove calls to trackInstall, trackUpdate
  • code change: remove calls to trackAction:”open” events
  • code change: remove eventIsId param from existing trackAction method calls
  • code change: rename MobileAppTrackerDelegate callback method signatures
  • code change: remove calls to class property:
    NSDictionary *sdkDataParameters;
  • code change: rename method call:
    setTRUSTeTPID: to setTRUSTeId:
  • known bug: event names get double url-encoded in sdk, ex. event name “level finished” is recorded as “level%20finished” in reports

v2.7.1 Changes

  • sdk does not auto­generate IFA, only provides a setter for the same
  • adds support to display iAd banners
  • requires iAd.framework
  • sdk uses in-built json api, thus requires minimum iOS version of 5.0
  • list of new methods:
    - (void)displayiAdInView:(UIView *)view;
    - (void)removeiAd;
  • list of new delegate callback methods:
    - (void)mobileAppTrackerDidDisplayiAd;
    - (void)mobileAppTrackerDidRemoveiAd;
    - (void)mobileAppTrackerFailedToReceiveiAdWithError:(NSError *)error;
  • list of deleted methods:
    - (void)setShouldAutoGenerateAppleAdvertisingIdentifier:(BOOL)yesorno;

v2.7 Changes

  • added setter methods that allow collecting user’s Facebook, Google, Twitter Ids
  • list of new methods:
    - (void)setFacebookUserId:(NSString *)facebookUserId;
    - (void)setGoogleUserId:(NSString *)googleUserId;;
    - (void)setTwitterUserId:(NSString *)twitterUserId;
  • list of deprecated methods:
    - (void)setMATAdvertiserId:(NSString *)advertiserId;
    - (void)setMATConversionKey:(NSString *)conversionKey;
    - (void)setMACAddress:(NSString *)macAddress;
    - (void)setODIN1:(NSString *)odin1;
    - (void)setOpenUDID:(NSString *)openUDID;
    - (void)setUIID:(NSString *)uiid;

v2.6.1 Changes

  • added support for builds that target arm64 architecture (64-bit devices)

v2.6 Changes

  • added simulator support for Xcode 5, iOS 7

v2.5.3 Changes [Critical]

  • fixed applicationDidOpenURL:sourceApplication: method
  • always use HTTPS, removed setUseHTTPS: method

v2.5.2 Changes [Critical]

  • fixed applicationDidOpenURL:sourceApplication: method

v2.5.1 Changes [Critical]

  • critical: fixed request queuing used in case there is no network connectivity
  • renamed helper methods that could possibly cause duplicate symbol errors
  • replaced enum MATGender with corresponding integer constants

v2.5 Changes

  • added support for iOS7
  • added trackAction method that accepts iTunes IAP transaction receipt to allow MAT server-side IAP transaction verification
  • added setter to enable/disable App Level Ad-Tracking
    - (void)setAppAdTracking:(BOOL)enable;
  • added setter for UIID, an alternative for UDID
    - (void)setUIID:(NSString *)uiid;
  • stopped auto-generating device unique identifiers in SDK, added corresponding setter methods — MAC, ODIN1, OpenUDID, TRUSTe TPID, UIID
  • removed methods:
    Note: please remove the following setShouldAutoGenerateXXX method calls
- (void)setShouldAutoGenerateMacAddress:(BOOL)yesorno;
- (void)setShouldAutoGenerateODIN1Key:(BOOL)yesorno;
- (void)setShouldAutoGenerateOpenUDIDKey:(BOOL)yesorno;


  • added setter methods:
    - (void)setMACAddress:(NSString *)macAddress;
    - (void)setODIN1:(NSString *)odin1;


v2.4.2 changes

  • fixed build to not necessitate CoreGraphics framework

v2.4.1 changes

  • fixed user agent collection logic
  • require CoreGraphics framework inclusion

v2.4 changes [Critical]

  • added support for recording user info – age, gender
  • added support for recording user location – latitude, longitude, altitude
  • event items now provide 5 additional attributes
  • blocked tracking calls for “close” event
  • removed error parameter from start method
  • Deprecated Method:
    - (BOOL)startTrackerWithMATAdvertiserId:(NSString *)aid MATConversionKey:(NSString *)key withError:(NSError **)error;
  • Added Method:
    - (BOOL)startTrackerWithMATAdvertiserId:(NSString *)aid MATConversionKey:(NSString *)key;
  • deprecated the use of event item dictionaries in trackAction methods; use MATEventItem objects instead

v2.3 changes [Critical]

  • critical: fixed issue where offline queued installs/events were lost when app was killed and restarted
  • fixed setAdvertiserIdentifier: to use the NSString representation of the NSUUID
  • fixed issue where event items with non-English unicode characters would not get logged, e.g. ü, ç
  • to count daily unique users allow only one “open” event on any given date
  • the SDK now fires all asynchronous network requests on the main thread
  • the SDK makes sure that the data stored by the sdk is not backed up to iCloud
  • route debug requests to domain
  • show warning alert dialog when debug mode is enabled
  • added methods setJailbroken: and setShouldAutoDetectJailbroken:
  • removed method setDeviceId: that allowed you to set the Apple device uniqueIdentifier
      Note: Code change needed: Please remove any setDeviceId: method calls.
  • List of deprecated methods:
    - (BOOL)startTrackerWithAdvertiserId:(NSString *)aid advertiserKey:(NSString *)key withError:(NSError **)error;
    - (void)setAdvertiserId:(NSString *)advertiser_id;
    - (void)setAdvertiserKey:(NSString *)advertiser_key;
    - (void)setAdvertiserIdentifier:(NSUUID *)advertiser_identifier;
    - (void)setVendorIdentifier:(NSUUID * )vendor_identifier;
    - (void)setShouldAutoGenerateAdvertiserIdentifier:(BOOL)yesorno;
    - (void)setShouldAutoGenerateVendorIdentifier:(BOOL)yesorno;
    - (void)setShouldDebugResponseFromServer:(BOOL)yesorno;
    - (void)setShouldAllowDuplicateRequests:(BOOL)yesorno;
  • List of new methods:
    - (BOOL)startTrackerWithMATAdvertiserId:(NSString *)aid MATConversionKey:(NSString *)key withError:(NSError **)error;
    - (void)setMATAdvertiserId:(NSString *)advertiser_id;
    - (void)setMATConversionKey:(NSString *)conversion_key;
    - (void)setAppleAdvertisingIdentifier:(NSUUID *)advertising_identifier;
    - (void)setAppleVendorIdentifier:(NSUUID * )vendor_identifier;
    - (void)setShouldAutoGenerateAppleAdvertisingIdentifier:(BOOL)yesorno;
    - (void)setShouldAutoGenerateAppleVendorIdentifier:(BOOL)yesorno;
    - (void)setDebugMode:(BOOL)yesorno;
    - (void)setAllowDuplicateRequests:(BOOL)yesorno;

v2.2 changes [Critical]

  • before trying to send up data to the tracking engine on the server, check for reachability. If the server is not available, then the execution is queued for retry later
  • changed MobileAppTracker delegate return data from id to NSData to enable strong typing of the return data
  • added delegate callbacks when app-to-app tracking request returns
  • bug: event name casing was not preserved when sending the event to the server. Example: event name of “Purchase” was being changed to lowercase “purchase”
  • bug: reference id was not being sent with install or update. trackInstallWithReferenceId and trackUpdateWithReferenceId were not sending up reference id to the server and reports were not showing Advertiser Ref Id values because of this.
  • change: NSURL timeout for connection changed to 60 seconds as a default.

v2.1 changes [Critical]

  • new trackInstall and trackUpdate methods replacing the trackInstallWithUpdateOnly method
  • new in app purchase tracking
  • supports both compilers — Apple LLVM and LLVM-GCC
  • fixed: removed revenue amount from parameters after a track action method call so revenue does not get inadvertently sent with other actions
  • fixed: updated app to app tracking to support only one set tracking method and fixed a bug with setting package name
  • fixed: defaulting to HTTPS was not working
  • *NOTE* the Bundle Identifier for your app target in Xcode must match the Bundle Name in the MAT console. Otherwise, event tracking will not work.
  • new optional site id parameter to identify your app to the tracking engine

v2.0 changes [Critical]

  • *NOTE* You must call trackInstall or trackUpdate in your code. These methods are new for V2.0. Previous versions of the SDK implicitly called trackInstall or trackUpdate
  • Simplified set methods for passing in data and setting options
  • Simplified start method, just pass in advertiser id, key
  • Control auto generation of data like mac address and other identifiers
  • Improved and simplified track action methods
  • Create custom track action events with event items to track in-app purchases
  • New support for Re-Engagement
  • Consolidation to a single download for the framework static library file, support for arc and non-arc projects in one framework file
  • Sample Xcode project
  • Support for iOS® 4.3 and above
  • Support for iPhone 5 and iOS 6
  • Uses new iOS 6 Advertiser Identifier and Vendor Identifier
  • App to App Tracking, track an install from your app to other apps you’ve integrated with MAT SDK