Access the new iOS SDK and documentation here.

We redesigned the SDK to make it easier to integrate than ever before. The version 5.0.0 January 2018 release includes a slimmer API that makes it easier to add Marketing Cloud features to your app. Existing users can upgrade their version to take advantage of the improved SDK. New users can follow the existing Getting Started directions to get the SDK up and running.

Get Started

  1. Provision Apps with Apple.
  2. Create your apps in the MobilePush Marketing Cloud app.
  3. Download the SDK.
  4. Implement the SDK.
  5. Add Feature Implementation to your apps.
  6. Add optional purchased features, such as CloudPages and Location Services, to your apps.

Additional Resources

iOS Version

SDK version 4.6.0 and higher: Build your app for iOS version 8.1 or higher.

SDK version 4.5.1: Build your app for iOS version 7 or higher.

Release History

For releases prior to 4.5.0, see: Prior Release Documentation

Version 4.9.7

Released April 03, 2018

  • Fixed database upgrade issue – We fixed an issue where upgrading from an SDK version before 4.9.5 to 4.9.5 or 4.9.6 resulted in lost data.

Version 4.9.6

Released October 30, 2017, correlating with the Marketing Cloud October 2017 release

  • This release adds support for rich notifications. Rich notifications include images, audio, video, and titles and subtitles from MobilePush. Host your files with a public URL and use that address to include rich media in your notifications.

  • Marketing Cloud now offers a plug-in to enable Cordova functionality in our Android and iOS SDKs. Review our GitHub repo for plug-in files and more information.

Version 4.9.5

Released August 28, 2017, correlating with the Marketing Cloud August 2017 release.

  • App Inbox Enhancements – Send a push message to the Inbox at the same time. On iOS, this feature comes with support of unread message count badging on the app icon. The new enhancements also come with additional analytics so you can track the engagement on opened and downloaded messages.
  • Predictive Intelligence Cart Tracking – Interested in tracking shopping carts from within your app? Track unique SKUs, which makes it possible to track all of your products through to conversion. Tracking cart events can be used to drive abandoned cart journeys to drive sales.
  • We fully tested the JB4A version 4.9.5 SDK with Xcode 8 and Xcode 9 using all supported base SDK and deployment target versions, including iOS 11 as both base SDK and minimum deployment versions in Xcode 9. If you build your application with Xcode 9 and target the iOS 11 SDK, note that SDK 4.9.5/209 and earlier versions display at least one static analyzer warning at debug time in Xcode. These versions also display at least one application log message at app runtime indicating that requestAlwaysAuthorization and registerForRemoteNotifications need to be called on the main thread:
    • Use [UIApplication registerForRemoteNotifications] from the main thread only.
    • This error is not fatal.
    • Our October 2017 release corrects this error.

Version 4.9.0

Released June 19, 2017, correlating with the Marketing Cloud 208 release.

  • Added ability to get inbox messages and counts – We added new convenience methods to get all CloudPage inbox messages and the count of read, unread and all inbox messages.

Version 4.8.0

Released April 3, 2017, correlating with the Marketing Cloud 207 release.

  • Updated CloudPage inbox data source – We now ensure that the CloudPage inbox refreshes for the entire lifecycle of the data source object.
  • Corrected nullability annotation warning – We corrected an annotation that generated a warning in Swift projects.
  • Updated push tokens – We now ensure that apps send new or refreshed push tokens back to Marketing Cloud.
  • Improved thread safety – We improved the SDK’s behavior with multiple concurrent network connections, which makes the SDK more thread safe.

Version 4.7.0

Released January 30, 2017, correlating with the Marketing Cloud 206 release.

  • Improved internal database – We resolved a potential error in our internal database to ensure proper app function.
  • Improved network error handling – We improved network error handling to prevent CloudPage inbox messages from being incorrectly deleted.

Version 4.6.0

Released November 2, 2016, corresponding to the Marketing Cloud 2016-06 release

  • iOS 10 Support – Users can now use the SDK with iOS 10. This update changes the handling of push notifications on iOS devices running version 10 or greater. The SDK remains compatible with previous versions of iOS. On devices running version 10, the SDK now uses the new user notification framework. View details here: Use iOS 10 Notifications.

  • Collect API Update – If SubscriberKey contains a value, the Collect API payload includes that value whether or not it’s in the format of an email address.

  • New Minimum Deployment Target Version: iOS 8.1 – Build your app for iOS 8.1 or higher to be compatible with the SDK.

  • Upgrade SDK to have ATS supported – The JB4A SDK version 4.4.0 or higher supports App Transport Security (ATS). Apple announced that ATS will be required for all apps by January 2017. Upgrade the JB4A SDK and build your app for iOS 9 or higher. See ATS Considerations.

  • Improved error handling – We improved the error handling in the ETPush class method -(void)applicationLaunchedWithOptions:(nullable NSDictionary *)launchOptions.

Version 4.5.1

Released October 6, 2016

  • Keychain error handling improvements - We made improvements to keychain error handling.

Version 4.5.0

Released September 12, 2016, correlating with the Marketing Cloud 2016-05 release.

  • MobilePush Beacons Support - The SDK supports MobilePush Beacons.
  • Use Multiple Push Providers Cautiously - If you use multiple push providers, there are several things you should be aware of: Troubleshooting.

Version 4.4.0

Released July 18 2016, correlating to the Marketing Cloud 2016-04 Release

Version 4.3.0

Released May 23 2016, correlating to the Marketing Cloud 2016-03 Release

  • MOBILESDK-371 - Remove deprecated functions from public interfaces.
  • MOBILESDK-379 - Adjust iOS to be Swift compatible.
  • MOBILESDK-604 - Create Event Bus.
  • MOBILESDK-779 - Include Appledocs docset file with release code and documentation.
  • MOBILESDK-790 - Inaccurate horizontal accuracy may prevent location downloads from occuring.
  • MOBILESDK-821 - Reusing a beacon with the same UUID/Major/Minor will result in lookup errors in the SDK.
  • MOBILESDK-822 - Do not display geofence or beacon message with an empty alert.
  • MOBILESDK-829 - Implement retry logic for beacons, cloudpages and geofences.
  • MOBILESDK-830 - Getting OpenDirect delegate crashes app unless has been set.
  • MOBILESDK-832 - Add missing fields to PiWama Analytics.
  • MOBILESDK-848 - Implement bitcode enabled.
  • MOBILESDK-851 - Once a day updates should renew the location fix before getting data.

Version 4.2.1

Released April 06 2016, correlating to the Marketing Cloud 2016-02.1 Release

  • MOBILESDK-760 - Remove expired Mobile Inbox Cloud Pages from the SDK.
  • MOBILESDK-711 - Cloud Page sync for iOS. Cloud pages removed from web app are also removed from SDK.

Version 4.2.0

Released March 21 2016, correlating to the Marketing Cloud 2016-02 Release

  • MOBILESDK-063 - Fix Geofence and Beacon analytics for region entry, exit, and message displayed.
  • MOBILESDK-258 - Improvements to beacon detection and message display.
  • MOBILESDK-268 - Package registration data updates with each update method (such as setTag(), addAttribute()) by issuing REST call 1 minute after first call. If REST call fails, retry in background until REST call succeeds or app is suspended.
  • MOBILESDK-375 - Update the default landing page used to display OpenDirect and CloudPage+Alert URLs when these notifications are tapped, to use WKWebView rather than UIWebview.
  • MOBILESDK-376 - Set CLLocationManager allowsBackgroundLocationUpdates to YES for iOS9 builds (required for Beacons support).
  • MOBILESDK-387 - Improve downloading of new Geofences and Beacons. New plist entry if you would like a daily refresh of regions and messages.
  • MOBILESDK-389 - Ensure SQL DB is constrained to at most 1000 rows of Marketing Cloud Analytics.
  • MOBILESDK-413 - Make sure device ranges for locations after device reboot.
  • MOBILESDK-417 - Add boolean in configureSDK() to turn on Beacon ranging (if you are part of the Beacon Beta Test).
  • MOBILESDK-481 - Attribute names that conflict with Contact record attribute names will be rejected. Check returned boolean if attribute is accepted.
  • MOBILESDK-509 - Reject subscriberKey, Tags and attributes that are null. Trim leading and trailing blanks before sending. Blank subscriberKey and Tags will also be rejected. Check returned boolean to determine if the values were accepted.
  • MOBILESDK-550 - Fix open and time in app sent for Marketing Cloud analytics.
  • MOBILESDK-580 - Implement getSDKState() method to return a JSON string with key SDK values for debugging purposes.
  • MOBILESDK-616 - Make the device id persistent across app installs.
  • MOBILESDK-634 - Add custom logging handler.
  • MOBILESDK-674 - Add getTags() and getAttributes() and deprecate allTags() and allAttributes().
  • MOBILESDK-727 - Change updateET() so that it sends Registration data immediately on the first call (after app enters foreground state) and in 1 minute intervals for subsequent calls.

Version 4.1.0

Released February 2, 2016, correlating to the Marketing Cloud 2016-01 Release

  • MOBILESDK-502 - Create an ETAnalytics class to have parity with Android.
  • MOBILESDK-493 - Swift unable to resolve LocationManager.
  • MOBILESDK-492 - Library has possible issues with debug symbols.
  • MOBILESDK-474 - Registration Opt-In Process incorrectly sends TRUE.
  • MOBILESDK-444 - Add Retry logic - iOS.
  • MOBILESDK-269 - Make end point configurable for WAMA in SDK.
  • MOBILESDK-231 - Add constraints to WAMA Analytics.
  • MOBILESDK-217 - Update Analytics

Version 4.0.3

Released November 4, 2015, correlating to the Marketing Cloud 2015-06.HF Release

  • MOBILESDK-439 - iOS SDK returning latitude/longitude with commas instead of decimal points for certain locales.
  • MOBILESDK-428 - Database corruption following VACUUM
  • MOBILESDK-427 - Fix for ETEvent analytics to handle Array of dictionaries.

Version 4.0.2

Released October 2, 2015, correlating to the Marketing Cloud 2015-06 Release

  • MOBILESDK-327 - Fix for missing keychain item when applications are restored from an unencrypted backup.
  • MOBILESDK-326 - Only send registration data if different from the last one sent
  • MOBILESDK-311 - Application crashing in iOS SDK
  • MOBILESDK-310 - Reduce Location REST call traffic to Marketing Cloud
  • MOBILESDK-300 - Application crashing in iOS SDK

This version of the JB4A SDK introduces iOS Keychain usage. To ensure that your app retains any relevant data across user backups and restores, encourage your app users to implement encrypted backups for their devices. Otherwise, information (such as tags, attributes, and subscriber keys) will not persist.

Version 4.0.1

Released July 23rd, 2015

  • MPUSH-3856 - SUPPORT - Upgrade to MobilePush iOS SDK 4.0.0 from SDK 3.4.2 Causes App to Freeze

Version 4.0.0

Released June 24th, 2015, correlating to the Marketing Cloud 2015-04 Release

  • MPUSH-3605 - SDK iOS: Modify payload to always send english datetime
  • MPUSH-3472 - Change iOS location_enabled registration field to user location opt-in status
  • MPUSH-3442 - Remove Access Token from REST Route Body - iOS
  • MPUSH-3885 - iOS app crashes after viewing Cloud Page Inbox
  • MPUSH-3341 - SDK Updates & Changes
  • MPUSH-3259 - iOS: Encrypt data on device
  • MPUSH-3717 - Timing issue with ExactTargetEnhancedPushDataSource
  • MPUSH-3713 - Added ability to utilize unicode characters in Rich Push subject lines

Required Coding Changes

The following are changes that must be made in order to upgrade from previous releases of the SDK:

The latest configureSDKWithAppID has some additional parameters and can be found at Implement the SDK.

You will need to update your configSDK registration call to now read: