MobilePush SDK: Important Forward-Compatibility Statement

In early 2024 Marketing Cloud MobilePush SDK support for older iOS versions will be removed from the SDK. Requirements for the SDK to compile:

  • iOS minimum deployment target of 12.0
  • Xcode 15.0

iOS 13 Support

  • The MobilePush SDK version 6.4.0 and up has been tested against and is compatible with iOS 13.
  • Our LearningApp for iOS using CocoaPods and Swift Package Manager has been tested against and is compatible with iOS 13.
  • Building with XCode11 or greater requires SDK version 5.x or later in order to continue receiving push notifications on iOS 13 devices.

iOS 14 Support

  • No changes required to support iOS 14 devices.
  • AppTrackingTransparency: Apple introduced a new permission setting called Asking Permission to Track. With iOS 14.5, you must obtain a user’s permission through the AppTrackingTransparency (ATT) framework to access their device’s advertising identifier (IDFA) and track them across multiple apps. By default, MobilePush SDK does not collect IDFAs nor do we use such values to track users across multiple apps. As such, at the moment, there are no changes required for MobilePush customers. If your organization plans to capture IDFA, you must explicitly obtain user’s permission through ATT in your app. To submit this value to the Marketing Cloud, set it as an attribute within the MobilePush SDK.

iOS Data Protection

  • The MobilePush SDK version 6.4.1 includes new troubleshooting information and code examples to demonstrate proper configuration and usage when iOS Data Protection is in use. See iOS Data Protection.
  • The LearningApp for iOS using CocoaPods and Swift Package Manager has been modified to show proper usage.

Requirements

  • Xcode 15.0 or later
  • Minimum deployment target of iOS 12.0

Get Started

  1. Download and set up the SDK Integrate the SDK into your app and configure the SDK to send push notifications.
  2. Test your setup Send your first push notification to test your initial SDK setup.
  3. Implement additional optional features of the SDK to take full advantage of Salesforce Marketing Cloud.
    • Add custom sounds, media, custom keys, and interactions – Use these features to further customize push notifications for your apps.
    • Use a contact key to set the unique identifier used to aggregate a contact’s devices within Marketing Cloud. Set the contact key to a specific value provided by your customer or to another unique identifier for the contact, such as mobile number, email address, customer number, or another value.
    • Add attributes and tags – Enhance your ability to segment your push message audiences.
    • Add predictive intelligence using Einstein Recommendations – Track cart and cart conversions. Purchase this feature separately.
    • Add other features – Send push notifications along with your inbox messages, use OpenDirect for deep linking, and trigger location-based messages with location and beacon messaging.

Contact Us

Post on our Stack Exchange. Example tags: marketing-cloud, salesforcemobilesdk-ios, mobilesdk, and mobilepush-ios

Additional Resources

Hybrid Mobile Apps

We provide support for the plugins below to implement the MobilePush SDK for your iOS and Android applications.

Deprecations

We remove deprecated methods from the SDK two releases after the initial deprecation announcement.

3rd Party Product Language Disclaimers

Where possible, we changed noninclusive terms to align with our company value of Equality. We retained noninclusive terms to document a third-party system, but we encourage the developer community to embrace more inclusive language. We can update the term when it’s no longer required for technical accuracy.

Release History

For releases prior to 5.0.0, see: Prior Release Documentation

Releases

Version 8.1.2

Released February 27th, correlating with the Marketing Cloud February 2024 release.

  • Privacy Manifest – Adds a privacy manifest that declares the default data collected by the SDK as per Apple. See documentation for more details.
  • SFMCSDK version 1.1.2 (compatible with Push Module >= 8.1.2)

Version 8.1.1

Released January 18th, correlating with the Marketing Cloud January 2024 release.

  • Bug Fixes and Performance Improvements – This release includes bug fixes and SDK improvements.
  • Framework Code Signatures – Code signatures have been added to all frameworks.
  • Alert + Inbox “Tap To Read” – You can now configure the SDK to mark an Inbox Message as “read” when a user taps the Push Notification for an Alert + Inbox message. See documentation for more details.
  • Dropping iOS 11 Support – iOS 11 is no longer supported as of this release.

Version 8.1.0

Released October 30th, correlating with the Marketing Cloud October 2023 release.

  • Bug Fixes and Performance Improvements – This release includes bug fixes and SDK improvements.
  • Runtime Toggles – Enable/disable Analytics, Inbox, Geofence Messaging, and Proximity Messaging at runtime. See documentation.
  • MarketingCloudSDK.bundle Integration – The need for manual addition of MarketingCloudSDK.bundle as an application resource has been eliminated, streamlining the integration process.
  • requestPushSdk – Added a new API, requestPushSdk, which guarantees access to the Push module when it becomes available.
  • MarketingCloudSDK Integration via SPM – Integration via Swift Package Manager (SPM) now automatically includes SFMCSDK, simplifying integration efforts.
  • Improved Logging for Multiple Push Providers – Introduced enhanced log messages to warn users about multiple push providers, aiding in proactive implementation decisions.
  • Initialization Issue on Locked Devices - Fixed an issue where the SDK failed to initialize when the device was locked and keychain/data protection was available.
  • Compatibility Fix for iOS 11 – Addressed initialization issues specific to iOS 11, ensuring seamless integration and functionality on this platform.
  • Enhanced Diagnostic Tooling – MobilePush module now detects and logs SDK implementation issues, providing guidance in the log output for smoother implementations.

Version 8.0.13

Released May 3rd, correlating with the Marketing Cloud May 2023 release.

  • Bug Fixes and Performance Improvements – This release includes bug fixes and SDK improvements.

Version 8.0.12

Released March 27th, correlating with the Marketing Cloud March 2023 release.

  • Bug Fixes and Performance Improvements – This release includes bug fixes and SDK improvements.
  • Adds registration callbacks – Ability to pass a single callback to listen to registration events.
  • Adds configurable filesystem protection types – Ability to configure the SDK’s protection values. See Learning App for an example.
  • Fixes crashes due to Xcode archive overriding default CFBundleShortVersionString within framework.
  • Addresses crashes caused by back-to-back initialization of the SDK.
  • Deprecates tearDown methods – tear downs will be handled internally by the SDK moving forward.
  • Improves performance on data merge tool
  • SFMCSDK version 1.0.8 (compatible with Push Module >= 8.0.12)

Version 8.0.10

Released January 24th, correlating with the Marketing Cloud January 2023 release.

  • Bug Fixes and Performance Improvements — This release includes bug fixes and SDK improvements.

    Please note that this version deprecates support for:

    • iOS 10.0 and below
    • Xcode 13.x and below

Version 8.0.9

Released December 7th, correlating with the Marketing Cloud December 2022 release.

  • Bug fix for push open reporting and Inbox message retrieval

Version 8.0.8

Released September 29th, correlating with the Marketing Cloud October 2022 release.

  • Support for ENS
  • Bug Fixes and Performance Improvements — This release includes bug fixes, SDK and performance improvements.
  • SFMCSDK version - 1.0.6

Version 8.0.7

Released August 18th, correlating with the Marketing Cloud August 2022 release.

  • Bug Fixes and Performance Improvements — This release includes fixes for Objective-C compatibility
  • SDK Data Merge — This release includes a tool that facilitates the reconciliation of the data set associated with the v7.x SDK and the current data set for v8.x SDK users. See guide for details

Version 8.0.6

Released April 14th, correlating with the Marketing Cloud March 2022 release.

  • Bug Fixes and Performance Improvements — This release includes bug fixes and performance improvements.

Version 8.0.5

Released March 31st, correlating with the Marketing Cloud January 2021 release.

  • Bug Fixes and Performance Improvements — This release includes fix for 1) Swizzling ViewDidAppear 2) Keychain crash in iOS 15.* 3) Add namespacing to Encryption files in SFMCSDK 4) Library Evolution with Xcode 12.5 as minimum Xcode compatibility

Version 8.0.4

Released February 4th, correlating with the Marketing Cloud January 2021 release.

  • Bug Fixes and Performance Improvements — This release includes fix for 1) Open Direct URL 2) Swizzling ViewDidAppear 3) Version conflict when uploaded to TestFlight and similar apps
  • Re-enabling CocoaPods Support - support for CocoaPods along with Swift Package Manager

Version 8.0.3

Released January 3rd, correlating with the Marketing Cloud January 2021 release.

  • Bug Fixes and Performance Improvements — This release includes fix for the validation process (Bundle Collision and Structure)

Version 8.0.2

Released December 14th, correlating with the Marketing Cloud December 2021 release.

  • Bug Fixes and Performance Improvements — This release includes fix for profile attributes API

Version 8.0.1

Released October 28th, correlating with the Marketing Cloud October 2021 release.

  • Bug Fixes and Performance Improvements — This release includes open attributes API and InboxMessage UI support fixes

Version 8.0.0

Released October 14th, correlating with the Marketing Cloud October 2021 release.

  • Bug Fixes and Performance Improvements — This release includes bug fixes and performance improvements.
  • Introducing Swift Packages - Discontinuation of CocoaPods support in favor of Swift Package Manager
  • See migration guide for upgrading to version 8.x

Version 7.6.0

Released June 2nd, correlating with the Marketing Cloud June 2021 release.

  • Bug Fixes and Performance Improvements — This release includes bug fixes and performance improvements.

Version 7.5.1

Released May 25th, correlating with the Marketing Cloud May 2021 release.

  • In App Banner Message Bug Fix — Fixes an issue where banner In-App messages were crashing on iOS 14.

Version 7.5.0

Released March 17th, correlating with the Marketing Cloud March 2021 release.

  • Packaged SDK as an XCFramework — The SDK is now packaged as an XCFramework providing support for arm64 simulators on Macs with M1 Chipsets.

Version 7.4.0

Released February 11th, correlating with the Marketing Cloud February 2021 release.

  • Improve Inbox Messages Sync When Force Closing App — Improves the chances of syncing inbox message status with the server for end users who force close the app.

  • Bug Fixes and Performance Improvements — This release includes bug fixes and performance improvements.

Version 7.3.1

Released December 22nd, correlating with the Marketing Cloud November 2020 release.

  • Added Support for arm64e —Explicitly added arm64e architecture to enable reading debug symbols on arm64e devices

Version 7.3.0

Released November 11th, correlating with the Marketing Cloud November 2020 release.

  • Bug Fixes and Performance Improvements —Fixes for rare race conditions linked to customer reported crash reports showing crash during SDK tear down following the successful deletion of data prompted by a GDPR request.

  • Fix possible naming collisions with Objective-C Classes - Renamed Event class to minimize potential naming collisions for customers using Objective-C.

Version 7.2.2

Released August 31st, correlating with the Marketing Cloud June 2020 release.

  • Bug Fixes and Performance Improvements – This release includes bug fixes and performance improvements.

Version 7.2.1

Released July 6th, correlating with the Marketing Cloud June 2020 release.

  • Bug Fixes and Performance Improvements – Fixes an issue where the custom data field was not present in inbox messages.

Version 7.2.0

Released June 1st, correlating with the Marketing Cloud June 2020 release.

  • Bug Fixes and Performance Improvements – This release includes bug fixes and performance improvements.

Version 7.1.1

Released May 18th, correlating with the Marketing Cloud March 2020 release.

  • Added armv7 support – We had previously removed armv7 support, only providing armv7s and arm64 architecures. This release provides armv7, armv7s, and arm64 support.

Version 7.1.0

Released March 23rd, correlating with the Marketing Cloud March 2020 release.

  • Image Fill for Full-Page In-App Messages – Currently, the full-page in-app message template crops images to a 16:9 aspect ratio. With this update, images can fill a larger portion of the screen and drive engagement with your app. Update to the March release of the MobilePush SDK to support image fill for full-page in-app messages. Image fill is available to customers with MobilePush and Journey Builder.

Version 7.0.1

Released January 25th, correlating with the Marketing Cloud January 2020 release.

  • JSON Configuration Method Removal – The sfmc_configure and sfmc_configureWithURL SDK configuration methods, using the MarketingCloudSDKConfiguration.json file, have been removed. If you are upgrading to this version of the SDK, see Configure the SDK for an example of using our ConfigBuilder for simple, code-based SDK configuration.

  • Required minimum deployment target of iOS 10.0 – Existing mobile applications will continue to function, without change. Mobile applications may continue to reference older SDK versions, without change. Applications which adopt the January, 2020 MobilePush SDK release may require a project change if your application build still supports iOS 9).

Version 6.4.2

Released December 27th, correlating with the Marketing Cloud October 2019 release.

  • Bug Fixes and Performance Improvements – This release includes bug fixes and performance improvements for iOS13 devices.

Version 6.4.1

Released November 22nd, correlating with the Marketing Cloud October 2019 release.

  • Bug Fixes and Performance Improvements – This release includes bug fixes and performance improvements.

  • Updated LearningApp for iOS Data Protection – This release includes an updated, simplified, and modern sample app using the MobilePush SDK - see our LearningApp for iOS.

Version 6.4.0

Released October 28th, correlating with the Marketing Cloud October 2019 release.

  • JSON Configuration Method Deprecation – The sfmc_configure and sfmc_configureWithURL SDK configuration methods, using the MarketingCloudSDKConfiguration.json file, have been deprecated. These methods will be removed in the next SDK release. If you are upgrading to this version of the SDK, see Configure the SDK for an example of using our ConfigBuilder for simple, code-based SDK configuration.

  • Immediate Registration After Install—To more effectively establish a Marketing Cloud contact, a MobilePush registration will be sent immediately following the first SDK configuration after a new app install. Subsequent registrations will be deferred for up to 60 seconds, as described in Device and Contact Registration.

Version 6.3.6

Released September 26th, correlating with the Marketing Cloud June 2019 release.

  • Bug Fixes and Performance Improvements—This release includes bug fixes and performance improvements.
  • In-App Message Layout Improvements—When In-App Messages are displayed on an iPad in Split View modes, messages are sized appropriately on iOS 13 devices.

Version 6.3.4

Released July 25th, correlating with the Marketing Cloud June 2019 release.

  • New LearningApp—This release includes an updated, simplified, and modern sample app using the MobilePush SDK - see our LearningApp.
  • Inbox Message Status—This release better reflects the read or deleted state of an inbox message in Marketing Cloud.

Version 6.3.3

Released June 17th, correlating with the Marketing Cloud June 2019 release.

  • Deliver in-app Messages—Deliver relevant, personalized messages to your app’s users. You can now send messages without relying on users having enabled push notifications. Engaging full-screen, modal, or banner messages are presented while your users are interacting with your app. See In-App Messaging for more.

Version 6.2.3

Released May 21st, correlating with the Marketing Cloud April 2019 release.

  • Fixed issue with Inbox start date—Inbox messages now will respect startDateUtc payload value in all cases.

Version 6.2.2

Released May 2nd, correlating with the Marketing Cloud April 2019 release.

  • Removed SDK test code from library—Test code associated with SDK development was removed from the public release.

  • Fixed Location Messaging Date Calculation—When calculating a “next show date” for a location message, fixed a case where the day may have been off by one.

Version 6.2.0

Released April 23rd, correlating with the Marketing Cloud April 2019 release.

  • Required app endpoint (tenant-specific endpoint)—To pass the SDK’s configuration, an app endpoint is now required. Find the app endpoint for your app under Administration in MobilePush. Review Configuration Requirements for details.

  • Added application badging override—A new SDK configuration value gives you full control of your app’s badge value. Review Application Badging for details.

  • Added ability to delay registration until contact key is set—Use a new SDK configuration value to delay registrations to Marketing Cloud until a contact key is set via sfmc_setContactKey:. Review Delay Registration for details.

  • Inbox messages support sendDateUtc for Sorting—Inbox messages delivered to your app now include the date that the message was sent. App users can sort their inbox based on this value. Review Inbox for details.

  • Better tracking of open from push analytics—The tracking of “open from push” analytics when an application is not running will now be captured more effectively if the SDK is configured asynchronously.

  • Fixed issue with the ConfigurationBuilder—There was an issue with using the builder method of configuring the SDK which may have caused an authorization error when contacting Marketing Cloud.

Version 6.1.4

Released February 28th, correlating with the Marketing Cloud January 2019 release.

  • **Location – Corrected an issue that prevented a location or proximity CloudPage+Alert message from displaying.

Version 6.1.3

Released February 11th, correlating with the Marketing Cloud January 2019 release.

  • Implemented location message segmentation—The SDK now supports app control over which geofence and beacon messages are displayed. Use the region information provided for geofence and beacon messages in your notification presentation logic. Review Location Message Segmentation.

  • Implemented predictive intelligence identifier (PIID) configuration options and APIs—You can configure the identifier for predictive intelligence analytics according to how you use Personalization Builder. Configure your applications to use either existing contact key data or a PI-specific identifier. Review Einstein Recommendations and Collect API Integration.

  • Added time for iOS file protection transitions—To ensure that iOS file protection transitions are complete before the SDK completes configuration, we added a guarding mechanism. Now, to accommodate these transitions, the SDK waits up to 5 seconds, without blocking other functions. If UIApplication’s isProtectedDataAvailable returns NO, configuration will fail.

  • Fixed predictive intelligence analytics issues—Fixed issues related to sending predictive intelligence analytics if the MID configuration value is used.

  • Fixed location messaging issue—Previously, reloading location messages from the server could show a display-limited message again, contrary to the message setting. This has been fixed.

Version 6.0.1

Released December 5th, correlating with the Marketing Cloud 215.1 release.

  • Analytics – Addressed an issue sending analytics to Predictive Intelligence if the MID configuration value is used.

  • Networking – Reduced number of network calls made to Marketing Cloud servers during lifecycle of the SDK.

Version 6.0.0

Released October 22nd, correlating with the Marketing Cloud October 2018 release.

  • Implemented Tenant-Specific Endpoint support for Marketing Cloud Accounts – New Marketing Cloud MobilePush applications will be configured with account-specific settings. See Configure the SDK for instructions on configuring your SDK’s values.

  • Removed SDK-provided web view for URLs – We removed the SDK’s built-in URL presenter to remove security concerns. As such, you must provide the SDK with a delegate and implementation of the MarketingCloudSDKURLHandlingDelegate protocol if your message will redirect to a web URL, resource, file or other business logic driven custom application schema. See Handling URLs for more information.

SDK API REMOVAL MarketingCloudSDKCloudPageMessagesNotificationHandlerDelegate, MarketingCloudSDKOpenDirectMessagesNotificationHandlerDelegate and MarketingCloudSDKInboxMessagesNotificationHandlerDelegate protocols and protocol methods have been removed from the SDK. Please change your code to implement the MarketingCloudSDKURLHandlingDelegate protocol.

  • Inbox Functionality Improvements – When an Alert+Inbox push notification arrives with the app in the foreground, Inbox messages will be reloaded from the server automatically.

  • Inbox Functionality Improvements – Inbox message handling better tracks “active” messages in the inbox (according to start and end date values).

  • SDK Configuration – Added option to configure SDK via runtime values passed to SDK (sfmc_configureWithDictionary:)

Version 5.2.1

Released August 27th, correlating with the Marketing Cloud July 2018 release.

  • Stability – We addressed issues related to multithreading and Core Data concurrency.

Version 5.1.1

Released July 31st, correlating with the Marketing Cloud 213.1 release.

  • Corrected issues with multi-threading – We corrected issues related to multi-threading in the SDK.

  • Added i386 slice for simulator builds – We updated the build process to include i386 ARCH, which allows you to run 32-bit simulators.

  • Addressed issue loading resources on armv7s devices – We corrected an issue related to loading resources on armv7s devices.

Version 5.1.0

Released July 23rd, correlating with the Marketing Cloud April 2018 release.

  • Added iOS 9 support – The iOS MarketingCloudSDK framework now supports iOS 9. Use conditional coding via Apple’s available attributes. For notes on using conditional coding for push registration and handling push notifications, see the iOS 9 documentation.

  • Added synchronous configuration calls – To prevent developers from trying to set a contact key, tag, or attribute before configuration is complete, we added synchronous configuration calls to the API as the default.

  • Added data privacy compliance – This version of the iOS MarketingCloudSDK supports three privacy modes that may affect your application’s use of MobilePush: 1) Right to be Forgotten, 2) Restriction of Processing, and 3) Do Not Track. These changes assist you in preparing for data compliance regulations, such as the European Union’s General Data Protection Regulation (GDPR). For more details, visit our SDK-specific data privacy compliance documentation.

  • Throttled inbox message calls – To match the Android SDK, we now prevent the iOS MarketingCloudSDK from calling sfmc_refreshMessages too often. Reference the headers for more information.

  • Allowed Predictive Intelligence to be set separately – When you configure the iOS MarketingCloudSDK, you can now enable or disable Predictive Intelligence separately from Analytics. If your app uses the iOS MarketingCloudSDK version 5.0.0 framework and if Analytics is enabled, Predictive Intelligence is also enabled. To control Predictive Intelligence separately, add the config flag.

  • Improved registration – We improved registration to prevent duplicate tags and attributes.

  • Fixed isPushEnabled override issue – Previously, disabling push notifications in the Notification Center overrode the setPushEnable property. We fixed this issue so that the SDK uses setPushEnable.

Version 5.2.0

Released July 11th, correlating with the Marketing Cloud July 2018 release.

  • Added checks to prevent exceptions – We added nil checks to prevent potential exceptions that could happen when users swipe to close an app.

  • Improved log string initializers – To help prevent Xcode Address Sanitizer warnings, we improved the SDK’s use of log string initializers.

  • Device ID migration – The SDK attempts to migrate the deviceId from versions of JB4ASDK 4.x.x, if possible.

Version 5.0.0

Released January 22nd, correlating with the Marketing Cloud January 2018 release.

  • We redesigned the SDK to make it easier to integrate than ever before. This 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.

  • We updated the SDK for full support of iOS 11.