Important TLS Update

The Android SDK now supports only TLS 1.1 and higher. You must use SDK version 5.5.x to ensure communication with Marketing Cloud. See the SDK Compatibility section for details.

Get Started

Integrate MobilePush into your mobile app using the Journey Builder for Apps SDK:

  1. Provision Apps with Google.
  2. Create your apps in MobilePush.
  3. Implement the SDK for Google.
  4. Test your push messages.
  1. Add additional features included in the SDK for all accounts.
  2. Add optional purchased features such as Rich Push and Location Services.

This documentation contains all of the information required to integrate the Journey Builder for Apps SDK in your mobile apps.

Additional Resources

Use the Learning App as your reference for working sample code that illustrates available functionality for your mobile apps. You can also review implementation and troubleshooting advice on stackexchange.

Review the Java docs for the SDK:
Android SDK Java Docs

Learn how to use the SDK with the Marketing Cloud Learning App:
Android Learning App

Sign up for email updates about the Android SDK:
Subscribe here

View the iOS MobilePush SDK documentation:
iOS SDK docs

SDK Compatibility

For Android SDK version 5.5.x and higher, the minimum compatible Android API version is 16. Compile with Android API version 27. The Android SDK has dependencies on Google Play Services and the Android Support v4 library.

Important: The Android SDK now supports only TLS 1.1 and higher. You must use SDK version 5.5.x to ensure communication with Marketing Cloud. After upcoming TLS 1.0 disablement, most Marketing Cloud functionality won’t work in your app on devices running API version 19 or below if your app uses SDK version 5.4.4 or below.

Android O Support

  • We introduced Android O support in version 5.3.1 of the Android SDK.
  • You must update to at least version 5.3.1 to prevent crashes.
  • Android O introduced significant changes to notifications and background processing. To get the latest improvements and fixes, upgrade to version 5.6.2 of the Android SDK.

Hybrid Mobile Apps

We provide support for plugins, such as Cordova, to implement the MobilePush SDK for your Android applications.

Deprecations

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

Release History

For releases prior to v4.9.4, see: Prior Release Documentation

Version 5.6.2

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

Version 5.6.2 of the Android SDK depends on Google Play Services version 11.8.0 and AltBeacon Library version 2.12.4. The minimum compatible Android API version is 16. Compile with Android API version 27.

  • Added and deprecated methods – We deprecated setApplicationName and added setNotificationDefaultTitle to replace it. setNotificationDefaultTitle clarifies what this method does.
  • Inbox updated when app is in foreground – The app inbox is now updated immediately when a Inbox+Alert message arrives, even when the app is in the foreground. That way, app users who ignore the notification see the full inbox message.
  • Removed deprecated code – We removed code that we deprecated in version 5.4.2:
    • Message#hasEntered()
    • CloudPageListAdapter
    • CloudPageMessageManager#getCloudPageMessages()
    • CloudPageMessage#getLegacySubject()
    • NotificationMessage#pictureUrl()
  • Fixed a reason for crashes – We removed the potential for a rare crash when accessing database objects.
  • Prevented listener renaming – We added InboxRefreshListener and InboxResponseListener to Proguard rules to prevent the listeners from being renamed incorrectly.

Version 5.5.2

Released June 26, 2018, correlating with the Marketing Cloud 213.2 release.

Version 5.5.2 of the Android SDK depends on Google Play Services version 11.8.0 and AltBeacon Library version 2.12.4. The minimum compatible Android API version is 16. Compile with Android API version 27.

  • Fixed a reason for crash – Fixed a reason for occasional crashes that occurred in apps running Android 8.0+ when customers opened a notification.

Version 5.5.1

Released May 30, 2018, correlating with the Marketing Cloud 213.1 release.

Version 5.5.1 of the Android SDK depends on Google Play Services version 11.8.0 and AltBeacon Library version 2.12.4. The minimum compatible Android API version is 16. Compile with Android API version 27.

  • Removed internal dependency obfuscation – To prevent conflicts with third-party libraries, the SDK no longer obfuscates one of its internal dependencies.

Version 5.5.0

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

Version 5.5.0 of the Android SDK depends on TLS 1.1+, Google Play Services version 11.8.0 and AltBeacon Library version 2.12.4. The minimum compatible Android API version is 16. Compile with Android API version 27.

  • Increased minimum supported API version to 16 – To ensure that the SDK includes the latest features and security patches, we increased the minimum supported Android API version from 15 to 16.
  • Removed TLS 1.0 support for improved security – For security reasons, we now support only TLS 1.1 or higher. After upcoming TLS 1.0 disablement, most Marketing Cloud functionality won’t work in your app on devices running API version 19 or below if your app uses SDK version 5.4.4 or below. Upgrade to SDK version 5.5.x as soon as possible to ensure communication with Marketing Cloud.
  • Added data privacy compliance modes – This version of the Android SDK 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.
  • Deprecated Attribute class and added map support – We deprecated any methods and classes that dealt with Attributes. Instead, to match the iOS MarketingCloudSDK, we added methods to represent attribute data and custom keys in a map.
  • Deprecated CloudPage methods – We deprecated methods with the name CloudPage and added comparable methods with the name Inbox Messages.
    • CloudPageManager becomes InboxMessageManager
    • CloudPageMessage becomes InboxMessage
    • MarketingCloudConfig#cloudPagesEnabled() becomes MarketingCloudConfig#inboxEnabled()
    • MarketingCloudConfig.Builder#setCloudPagesEnabled becomes MarketingCloudConfig.Builder#setInboxEnabled
  • Deprecated methods in InitializationStatus class – We deprecated the following methods in the InitializationStatus class to make the methods more general and not specific to location:
    • locationsMessage() becomes playServicesMessage()
    • locationsPlayServicesStatus() becomes playServicesStatus()
  • Added new convenience method – To match the iOS MarketingCloudSDK, we added the refreshInbox() convenience method. Call this method to refresh the list of inbox messages. See the javadocs entry for more information.
  • Consolidated wake-up alarms – To prevent multiple SDK wake-ups, we consolidated geofence and proximity (beacon) daily alarms into a single daily alarm.
  • Improved registration – We improved registration to prevent duplicate tags and attributes.
  • Added previously removed method – We added back the isMarketingCloudPush method, which was removed from the public API in the 5.4.x release.
  • Made startDateUtc nullable – Previously, the startDateUtc method in the InboxMessage class was non-nullable. Now it is nullable to ensure that the download analytic is logged. Check whether startDateUtc is null before using it.
  • Fixed region messages occasionally displaying twice per month – For region messages that are restricted to display once per month, the SDK previously showed them once every 30 days. Now, the SDK accounts for months that have 31 days.

Version 5.4.4

Released February 15, 2018, correlating with the Marketing Cloud 212.1 release.

Version 5.4.4 of the Android SDK depends on Google Play Services version 11.0.1 and AltBeacon Library version 2.12.3

  • Fixed a reason for Android O crashes – Removed Google’s JobIntentService and replaced with custom internal implementation that prevents the exceptions thrown by JobIntentService. See Google’s Issue Tracker for more information.

  • Improved code used to check for network connectivity that could, in rare cases, throw an exception while the app is in the background.

Version 5.4.2

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

Version 5.4.2 of the Android SDK depends on Google Play Services version 11.0.1 and AltBeacon Library version 2.12.3

  • Android O introduced significant changes to notifications and background processing. Version 5.4.2 of the Android SDK provides the latest improvements and fixes.

  • The requestSdk method now returns the SDK instance on the looper provided. If no looper is provided, the method uses the current looper, or the main looper if the current value is null.

  • If more than one notification is active in the system tray from the SDK, then they all open to the correct message, even if they arrived concurrently.

  • This release deprecates these methods.

    • Message#hasEntered()
    • CloudPageListAdapter
    • CloudPageMessageManager#getCloudPageMessages()
    • CloudPageMessage#getLegacySubject()
    • NotificationMessage#pictureUrl()

Version 5.3.2

Released November 30, 2017, correlating with the Marketing Cloud 210.2 release.

Version 5.3.2 of the Android SDK depends on Google Play Services version 11.0.1 and AltBeacon Library version 2.12.3

  • Inbox Message Upgrade Issue — This release fixes a 5.3.0 to 5.3.1 upgrade issue for Inbox Message customers where retrieving or interacting with Inbox Messages cause a crash.

    Upgrades from versions less than v5.3.0 to v5.3.1 are unaffected. New installations with v5.3.1 are unaffected.

Version 5.3.1

Released November 1, 2017, correlating with the Marketing Cloud 210.1 release.

Version 5.3.1 of the Android SDK depends on Google Play Services version 11.0.1 and AltBeacon Library version 2.12.3

  • Inbox Message Payload Update – This release fixes an issue with the download of Inbox Messages not persisting portions of the payload.

  • SDK Initialization Improvements – This release safeguards against a crash caused by an initialization failure followed by a call to the SDK’s getInstance() method.

  • Android O (Oreo) Beacon Support – This release re-introduces Beacon support for applications targeting Android O with applications running on devices running Android O.

Version 5.3.0

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

  • This release adds support for rich notifications. 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 5.2.0

Released September 21, 2017, correlating with the Marketing Cloud 209.1.0 release.

We advise developers who rely on beacon notifications to avoid targeting Android Oreo in their apps due to current lack of Bluetooth library support. This issue affects only apps specifically targeting Android Oreo on Oreo devices.

Version 5.2.0 of the Android SDK is built on Google Play Services version 11.0.1 and Beacon Library version 2.9.2

  • Added support for Android O (Oreo, API 26) Support
  • Our new SDK update allows developers targeting Android Oreo to use the new notification channels feature. When targeting your Android Oreo channels, choose one of these options:
    • The SDK provides a default channel with a name you provide. All push messages sent use only this channel. You do not need to specify the channel used to send messages with this option, as the SDK only sends using the default channel.
    • Create multiple channels with unique names for your app. Override the SDK channel callback to assign a given message to a channel. Ensure you include a channel with your message. Otherwise, the app does not display the message to the recipient.

You can customize channel priority, colors, and sounds. Custom sounds do not work with the SDK’s default channel. To use Custom Sounds you must provide your own channel configuration for each sound.

Version 5.1.3

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

Version 5.1.3 of the Android SDK is built on Google Play Services version 11.0.1 and Beacon Library version 2.9.2.

  • App Inbox Enhancements – Send a push message to the Inbox at the same time. The new enhancements also come with additional analytics so you can track the engagement on opened and downloaded messages.
  • Multiple Push Provides for Android – Use our Android SDK to receive and display messages from Marketing Cloud and other providers. Implement the latest version of the SDK to access this feature. This feature requires that other providers support multiple provider capabilities.
  • 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.

Version 5.0.6

Released August 4, 2017, correlating with the Marketing Cloud 208.4.8 release.

Version 5.0.6 of the Android SDK is built on Google Play Services version 10.2.4 and Beacon Library version 2.9.2.

  • Fixed region frequency and region monitoring – Fixed two bugs introduced in 5.0.4.
  1. Corrected issue where geofence messages are sent without consideration of the frequency limit that is optionally set on the message.

  2. Corrected issue where region messages not re-monitored after process restart (device reboot).

Version 5.0.5

Released August 3, 2017, correlating with the Marketing Cloud 208.4.7 release.

  • Fixed PushStatisticType 3 Bug – Corrected bug introduced in 5.0.4 causing erroneous statistic type sent to marketing cloud for non geofence and beacon messages. This could lead to double counting for the Mobile Push ‘Sent’ statistic and billing.

Version 5.0.4

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

Version 5.0.4 was removed due to the PushStatisticType 3 bug. Please upgrade to version 5.0.5.

  • Rebranded SDK method names – We rebranded all ETPush methods, which stands for ExactTargetPush, to MarketingCloudSdk. See Upgrading for a full list of updated methods.
  • Added ability to reconfigure the SDK at any time – You can now call configureSDK from your running app, which allows you to reconfigure the SDK at any point after initial configuration.
  • Improved logging – To make logging less verbose, the SDK no longer logs unless you provide an implementation of MCLogListener.
  • Added new method for accessing the SDK – To prevent performance issues, we introduced a requestSDK method. This method gives back an instance of the SDK that won’t block the calling thread.
  • Made registration updates more concise – We now use an Editor pattern to modify registration. You can make multiple changes to the registration in a single method call before sending an update, which makes registration updates cleaner and more concise.
  • SubscriberKey renamed to ContactKey – We renamed SubscriberKey to ContactKey in order to match the rest of the Marketing Cloud servers and services.
  • Added ability to launch any intent when overriding notifications – Previously, you had to provide an Intent for an activity when overriding the notification’s default behavior. Now, you can pass the SDK any valid PendingIntent, which allows your notification to launch an activity, service, receiver, and others.
  • Added ability to separately disable geofences and beacons – You can disable beacons or geofences or both. Previously, you could only disable both.
  • Added ability to cancel a notification – Previously, there was no way to cancel a notification. Now, you can cancel a notification at any time.
  • Added ability to get inbox messages and counts – We added new convenience methods to get all inbox messages, only read inbox messages, only unread inbox messages, and the count of inbox messages.
  • Improved notification of events – To prevent errors, we removed the EventBus and replaced it with separate calls to notify you of events in the SDK, such as geofence message updates.
  • Deprecated methods – The following are some of the methods that have been deprecated and will be removed from the SDK. See Upgrading for a full list.
    • CloudPageListAdapter – With the addition of the CloudPageInbox helper methods, we recommend that you create your own data adapters to better fit your business needs. For example, use the new getMessages() call to populate a RecycleView.Adapter.
    • PushConfig.setLogLevel()MarketingCloudSdk provides a static convenience method for this functionality.
    • PushConfig.setLogListener()MarketingCloudSdk provides a static convenience method for this functionality.

Version 4.9.4

Released June 8, 2017, correlating with the Marketing Cloud 207.2 release.

  • Fixed Duplicate Attribute Bug — SDK versions 4.9.3, 4.9.2 and 4.9.1 allowed you to set duplicate attributes; however, Marketing Cloud processed only the first occurrence of an attribute. If you use attributes and one of the affected versions of the SDK, upgrade to version 4.9.4 or later.

SDK version 4.9.4 de-duplicates attributes stored in local storage by using the last-set value of the attribute.

  • Fixed a Rare Encrypted Data Migration Crash — We fixed a rare crash that could happen during data migration while upgrading from version 4.8.6 of the SDK to version 4.9.3, 4.9.2 or 4.9.1.

Version 4.9.3

Released May 23, 2017, correlating with the Marketing Cloud 207.1 release.

  • Fixed SDK Initialization Bug — In rare cases the SDK did not finish initializing before it tried to display a push notification, which caused a NullPointerException. Now, the SDK waits to finish initialization before displaying notifications.

Version 4.9.2

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

  • Removed version 4.9.1 – We removed SDK version 4.9.1 to remediate an extremely rare encryption issue. Update to version 4.9.2.
  • Changed DeviceID handling – We changed the way we generate the SDK’s DeviceID to ensure uniqueness within the Marketing Cloud.
  • Updated encryption – We updated the SDK’s encryption class to address an issue with Android Marshmallow.
  • Improved SDK initialization time – On some devices, the SDK took several seconds to initialize. This has been resolved.

Version 4.8.6

Released April 13, 2017, correlating with the Marketing Cloud 206.3 release.

  • Fixed Database Upgrade Issue Related to Application ID Changes – Previously, if you updated your Application ID, the database upgrade could have encountered a silent but unrecoverable error. We fixed this issue.
  • Removed version 4.8.5 – We removed version 4.8.5 from the public repository due to the database upgrade issue fixed in version 4.8.6. Update to version 4.8.6.

Version 4.8.5

Released February 9, 2017, correlating with the Marketing Cloud 206.2 release.

We removed version 4.8.5 from the public repository due to the database upgrade issue fixed in version 4.8.6. Update to version 4.8.6.

  • Corrected time zone misalignment – We corrected a misalignment between the local device’s time zone setting and the Marketing Cloud server, which could cause geofence message start times to be delayed.

Version 4.8.4

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

  • Errant log entries removed – We removed errant log entries that should not be in release builds.
  • Corrected overridden notifications issue – We corrected an issue with overridden notifications that could cause a crash.
  • Fixed potential analytics issue – We fixed an issue that may have prevented notification open analytics from working properly.
  • Reduced number of registration alarms – We added a duplicate check to the registration REST route’s wake-up alarm to reduce the number of alarms.
  • Improved logging – We included a default message for any empty or null logging message that occurs when catching exceptions. We also now provide the exception instance through the logging interface. The SDK will not throw new exceptions. We just previously did not provide them for logging.
  • Removed deprecated methods – As stated in the October 2016 release notes, we removed the following previously deprecated methods from the SDK. Make sure that you removed them from your app because they will no longer function.

    • Method: activityPaused() call – We removed this method because API 15+ no longer required it. We replaced this method with automated lifecycle management in version 4.1.0.

      • Action Required: Remove the old method from your app.
    • Method: activityResumed() call – We removed this method because API 15+ no longer required it. We replaced this method with automated lifecycle management in version 4.1.0.

      • Action Required: Remove the old method from your app.
    • Method: setNotificationAction() and getNotificationAction() call – We replaced this method with an interface allowing notification overrides in version 4.0.0. The interface allows for more streamlined integration and removes common implementation pitfalls.

      • Action Required: After removing the old methods from your app, follow the instructions to [override notifications](/JB4A-SDK-Android/features/override-notifications.html].
    • Method: setNotificationActionUri() call and getNotificationActionUri() call – We replaced this method with an interface allowing notification overrides in version 4.0.0. The interface allows for more streamlined integration and removes common implementation pitfalls.

      • Action Required: After removing the old methods from your app, follow the instructions to [override notifications](/JB4A-SDK-Android/features/override-notifications.html].
  • Deprecated methods to be removed – The following methods are deprecated and will be removed in future releases.

    • ETException

      • RAF_INITIALIZE_EXCEPTION will be removed – Use instead: CONFIGURE_SDK_INITIALIZE_EXCEPTION

      • RAF_INITIALIZE_ENCRYPTION_FAILURE will be removed – Use instead: CONFIGURE_SDK_INITIALIZE_ENCRYPTION_FAILURE

      • RAF_INITIALIZE_ENCRYPTION_OPTOUT_FAILURE will be removed – Use instead: CONFIGURE_SDK_INITIALIZE_ENCRYPTION_OPTOUT_FAILURE

    • ETPush

      • All readAimFire methods will be removed – Use instead: void configureSdk(ETPushConfig, ETPushConfigureSdkListener)

      • setNotificationRecipientClass(Class<?>) will be removed – Use instead: ETPushConfig.Builder#setNotificationRecipientClass(Class)

      • setNotificationResourceId(Integer) will be removed – Use instead: ETPushConfig.Builder#setNotificationResourceId(int)

      • setOpenDirectRecipient(Class<?>) will be removed – Use instead: ETPushConfig.Builder#setOpenDirectRecipientClass(Class)

      • setCloudPageRecipient(Class<?>) will be removed – Use instead: ETPushConfig.Builder#setCloudPageRecipientClass(Class)

    • ETPushConfig

      • setPiAnalyticsEnabled(boolean) will be removed – Use instead: setWamaEnabled(boolean)

      • suppressGooglePlayServicesErrorNotifications(boolean) will be removed – There is no direct replacement for this method. See release notes for 4.3.2.

    • ReadyAimFireInitCompletedEvent will be removed – Use instead: com.exacttarget.etpushsdk.ETPushConfigureSdkListener

    • ReadyAimFireInitCompletedEventListener will be removed – Use instead: com.exacttarget.etpushsdk.ETPushConfigureSdkListener

Version 4.7.3

Released January 18, 2017

  • Errant log entries removed – We removed errant log entries that should not be in release builds.
  • Corrected overridden notifications issue – We corrected an issue with overridden notifications that could cause a crash.

Version 4.7.1

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

  • Interactive Notification Setup Updates – This release updates the interactive notifications setup steps. View the changes: Display Interactive Notification Messages.
  • Method Removal – We will remove the following methods from the JB4A SDK in the release corresponding with the Marketing Cloud January 2017 release. Plan to remove these methods from your app by January 30, 2017. _ activityPaused() call - Replaced by automated lifecycle management in version 4.1.0. _ activityResumed() call - Replaced by automated lifecycle management in version 4.1.0. _ setNotificationAction() and getNotificationAction() call - Replaced by interface allowing notification overrides in version 4.0.0. _ setNotificationActionUri() call and getNotificationActionUri() call - Replaced by interface allowing notification overrides in version 4.0.0.

  • Descriptions added to Learning App – We added descriptions for tags and attributes to the Learning App settings screen.
  • Eliminated build warnings – We eliminated build warnings caused by a missing Proguard flag.

Version 4.6.3

Released January 18, 2017

  • Errant log entries removed – We removed errant log entries that should not be in release builds.
  • Corrected overridden notifications issue – We corrected an issue with overridden notifications that could cause a crash.

Version 4.6.1

Released September 21, 2016, correlating with the Marketing Cloud 2016-05.2 release.

  • JB4A SDK takes action only when your app is updated - We replaced the PACKAGE_REPLACED intent filter in the manifest with a MY_PACKAGE_REPLACED intent filter. This ensures that the JB4A SDK takes action only when your application is updated.
  • Use Subscriber Key for any info - If SubscriberKey contains information, it is included in the Collect API payload, whether or not it’s in the format of an email address.

Important update on October 14, 2016

  • Add uses-feature statement to manifest – As of October 15, 2016, if your application targets Android 5+ (Marshmallow and above) and you use geolocation, Google Play Services requires that you add a uses-feature statement to the AndroidManifest.xml file. See details on the Adding Geolocation page and details sent directly to you from the Google Play team.

Version 4.6.0

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

  • MobilePush Beacons Support - The SDK supports MobilePush Beacons.
  • Adjust Beacons Logging - You can control the amount of logging for MobilePush beacons by setting the log level.
  • Use Multiple Push Providers Cautiously - If you use multiple push proviers, there are several things you should be aware of: Troubleshooting.

Version 4.5.0

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

  • MOBILESDK-907 - Add PI Analytics track_cart and track_conversion convenience methods.
  • MOBILESDK-494 - Force an immediate Marketing Cloud Registration call.

Version 4.4.1

Released June 1 2016, correlating to the Marketing Cloud 2016-03.1

  • MOBILESDK-938 - Gracefully handle devices without Google Play Services installed.

Version 4.4.0

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

As of the current SDK release (2016-03, Version 4.4.0 of the JB4A SDK), we no longer support apps built using Eclipse. This end-of-life activity includes removal of JAR files, documentation, and all other forms of support. Ensure you can continue your development activities by switching to the Google development platform. For additional information on Google’s support of Android Eclipse tools, please view the Google official announcement.

  • MOBILESDK-707 - Add developer convenience method for getDeviceId().
  • MOBILESDK-712 - Ensure proper expiry of CloudPage messages.
  • MOBILESDK-713 - Replace readyAimFire() with configureSdk().
  • MOBILESDK-826 - Do not show a notification for a message with an empty alert.
  • MOBILESDK-833 - Send Subscriber Key in PI Analytics Payload.
  • MOBILESDK-839 - Allow Application Label to be set in PushConfig.Builder().
  • MOBILESDK-845 - Retry for failed GET REST requests.
  • MOBILESDK-894 - Provide Google Play Services status in configureSdk() callback.

Version 4.3.3

Released June 1 2016, correlating to the Marketing Cloud 2016-02.3

  • MOBILESDK-938 - Gracefully handle devices without Google Play Services installed.

Version 4.3.2

Released May 9 2016, correlating to the Marketing Cloud 2016-02 MR2

Version 4.3.1

Released April 6 2016, correlating to the Marketing Cloud 2016-02 MR1

  • MOBILESDK-797 - Fix app transfer to new Android devices. Unable to decrypt Android Device ID.
  • MOBILESDK-794 - Validate “Location” and “Proximity” are enabled before calling state variables in getSdkState().
  • MOBILESDK-761 - Ensure the data adapter for SDK Cloud Pages only returns active Marketing Cloud messages

Version 4.3.0

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

  • MOBILESDK-721 - Deprecate activityPaused() and activityResumed() as those are only required by Android Gingerbread which is no longer supported.
  • MOBILESDK-719 - Remove BATTERY_LOW and BATTERY_OKAY intent-filters from our receivers and let Android handle the location services on/off in those states.
  • MOBILESDK-669 - Do not send null Tags to the Marketing Cloud
  • MOBILESDK-666 - Resolved NPE and IllegalState errors in ETLocationManager.
  • MOBILESDK-659 - Improve timeliness of downloading of Geofence and Beacon messages.
  • MOBILESDK-642 - Failed GCM Registrations now implement an exponential back-off retry.
  • MOBILESDK-639 - Location messages with OpenDirect URLs now correctly launch the ETLandingPagePresenter Class.
  • MOBILESDK-634 - Added a Logging interface.
  • MOBILESDK-632 - Remove unnecessary ACCESS_WIFI_STATE permission.
  • MOBILESDK-601 - For those in the Beacon Beta Test Group: Beacon messages, if enabled, will update at least every 24 hours while the application is in the background.
  • MOBILESDK-594 - Updated Google Play Services dependency to version 8.4, Support-v4 to version 23.1.1 and the Android Beacon Library to version 2.7.
  • MOBILESDK-580 - Implement getSdkState() developer convenience method.
  • MOBILESDK-559 - Ensure inter-platform consistency and predictability for location analytics.
  • MOBILESDK-531 - Remove Amazon’s ADM support.
  • MOBILESDK-509 - Never send a null Subscriber Key to the Marketing Cloud.
  • MOBILESDK-481 - Restrict Reserved Words from being used as Attribute Keys.
  • MOBILESDK-437 - Verify Android Beacon Library, if required, during SDK configure.
  • MOBILESDK-397 - Replace legacy GCM.register() with InstanceId.getToken() for GCM registration.
  • MOBILESDK-330 - Verify Google Play Services Location library, if required, during SDK configure.

Version 4.2.0

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

  • MOBILESDK-501 - Resolved “Format Conversion Error” in ETLocation Logging
  • MOBILESDK-487 - Display Google Play Services Version in the Logs
  • MOBILESDK-484 - Implemented trackPageView()
  • MOBILESDK-480 - Update Google Play Services references in Documentation
  • MOBILESDK-479 - Completed Manifest Updates
  • MOBILESDK-478 - Updated getAttributes() and getTags()
  • MOBILESDK-477 - Implement permissions check for location when using Marshmallow versions 23 or greater
  • MOBILESDK-465 - Resolved Lint warning regarding unchecked type casts
  • MOBILESDK-456 - Resolved NPE in RegistrationSQL Attributes getKey()
  • MOBILESDK-432 - Review and update Javadocs for all other packages within the SDK
  • MOBILESDK-408 - ANDROID SDK Integration Simplification
  • MOBILESDK-364 - Compile & Test SDK w/Google Play Services v8.1
  • MOBILESDK-361 - Resolved ANDROID SDK Incompatible w/Google Play Services v8.1
  • MOBILESDK-329 - Resolved Permission Issue w/Marshmallow
  • MOBILESDK-257 - Replace deprecated org.apache.Http with UrlConnection

Version 4.1.1

Released January 8 2016, correlating to the Marketing Cloud 2015-07.2-HF1 Release

  • MSDK-501 - Fix for format conversion error in ETLocationManager

Version 4.1.0

Released November 20 2015, correlating to the Marketing Cloud 2015-07.2 Release

  • MSDK-238 - Make sure latitude/longitude values send with proper formatting regardless of the device language.
  • MSDK-248 - Add Retry logic for all data POSTed to the Marketing Cloud including Registrations and Analytics. If the initial POST fails, then the POST REST call will be retried in a logarithmic fashion.
  • MSDK-292 - Make sure app monitors Location regions after a device reboot.
  • MSDK-295 - Remove unnecessary GET_ACCOUNTS permission. You may remove this permission from your AndroidManifest.xml file.
  • MSDK-297 - Replace CONNECTIVITY_CHANGE Receiver with AIRPLANE_MODE Receiver. Update your AndroidManifest.xml file.
  • MSDK-298 - Return an instance of ETPush in ReadyAimFireCompletedEvent
  • MSDK-299 - Make sure that if any problems in POSTing analytics data occur, that the local database saves at most 1000 entries so as not to add excessive database content.
  • MSDK-307 - Remove ET Logger
  • MSDK-312 - Throw RuntimeException for configuration errors in debug builds to highlight errors before releasing.
  • MSDK-406 - Consolidate Receiver Intent Filters. Update your AndroidManifest.xml file.
  • MSDK-407 - Simplify Geolocation Implementation. Update your AndroidManifest.xml file.
  • MSDK-431 - Deprecate URL and Action Notification method. If your app uses these methods, move to the indicated alternates.
  • MSDK-189 - Update SDK with newest Beacon library. Companies testing as part of a Beacons Beta test should switch to using this library in your Gradle dependency: org.altbeacon:android-beacon-library:2.5.1@aar.

    Remove requirement for Beacons library when Location is turned on. If you’re not part of the Beacons Beta Test and you use Locations, you can remove the beacons library from your build.

Version 4.0.9

Released November 20 2015

  • MSDK-453 - Fix for Java ConcurrentModificationException when modifying Tags & Attributes

Version 4.0.7

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

  • MSDK-82 - Only check classes for the SDK’s enabled features
  • MSDK-237 - Display Page Title or URL when showing a CloudPage
  • MSDK-239 - Only require the beacon library if Location is enabled
  • MSDK-243 - Fix for Java ConcurrentModificationException when modifying Attributes
  • MSDK-252 - Apply PRNG encryption fix only if it hasn’t previously been applied
  • MSDK-253 - Correctly transmit UTF-8 characters in Registration POST REST calls
  • MSDK-272 - Replace StringBuilder() with thread-safe StringBuffer() to resolve IndexOutOfBounds Exception
  • MSDK-322 - Do not send Location History
  • MSDK-324 - Remove GET_ACCOUNTS permission
  • MSDK-328 - Never send “null” as a String in a Registration payload
  • MSDK-332 - Disable Proximity (beacons) for API < 18
  • MSDK-334 - Validate PRNG fix required Proguard statements during SDK configure
  • MSDK-336 - Fix for NPE during WakefulBroadcastReceiver.completeWakefulIntent()

Implementing the PRNG fix requires reflection. Please ensure your Proguard config file contains the correct statements found here.

Version 4.0.6

Released September 9th 2015

  • MSDK-305 - Replace RuntimeException thrown during manifest inspection with LogCat Log.ERROR output

Version 4.0.5

Released August 25th 2015

  • MSDK-243 - Fix for Java ConcurrentModificationException

Version 4.0.4

Released July 22nd 2015

  • MSDK-11 - Group Registrations that are sent to the Marketing Cloud when updating Tags, Attributes, and other contact data to reduce traffic and improve throughput.

Version 4.0.3

Released July 9th 2015, correlating to the Marketing Cloud 2015-04.3 Release

  • MPUSH-3809 - Wipe data from device if encryption fails.
    Note: Encryption of data was added in 4.0.0. This change will prevent a device from integrating with the SDK if encryption fails. See Encryption Trouble Shooting for more information.
  • MPUSH-3824 - Throw a RunTimeException if ProGuard statements obfuscated required classes within the SDK.
  • MPUSH-3841 - Pushes without an alert key in the payload will not result in a notification being shown to the user.
  • MPUSH-3822 - Make sure SDK respects a sound key value of none which results in a notification without a sound.
  • MPUSH-3828 - SDK was reporting locationEnabled as true to the Marketing Cloud even when it was disabled.
  • MPUSH-3782 - Allow for Background Push messages via content-available flag.

Version 4.0.0

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

  • MPUSH-3377 - Implement multi-threaded support so SDK will not block UI thread.
    Note: Code changes required for ETPush.activityResumed() and ETPush.activityPaused() for apps targeting earlier than API level 14.
  • MPUSH-3379 - Ensure push and location (if turned on in readyAimFire()) is enabled by default and any updated registration data is sent each time readyAimFire() is called.
    Note: Code should be changed to remove the call for enablePush() and startWatchingLocation() in your home launcher Activity.
  • MPUSH-3380 - Publish AAR to SDK’s gh-pages branch.
    Note: Change app/build.gradle to use com.exacttarget.etpushsdk:etsdk:4.0.0@aar. See Implement the SDK for Google.
  • MPUSH-3441 - Remove Access Token from payload and add to REST header.
  • MPUSH-3444 - Implement Builder Pattern for ETPush Initialization.
    Note: Change call to readyAimFire() to use this builder pattern. See Implement the SDK for Google.
  • MPUSH-3445 - Add industry accepted standard getInstance() and deprecate getDefault().
    Note: Change code to use getInstance()
  • MPUSH-3411 - SDK will no longer set a subscriber key by default. This change will ensure that any imported contacts will not be overridden by SDK.
    Note: The subscriber key will be set by the Marketing Cloud instead. This matches what happens with iOS devices now. See Subscriber Key.
  • MPUSH-3396 - Create separate AndroidManifest.xml for Amazon devices.
    Note: You can create an Amazon product flavor within Android Studio and include this manifest for Amazon builds. See Implement the SDK for Google.
  • MPUSH-3378 - Improve verification of incorrect AndroidManifest.xml setup for both Amazon and Google devices.
  • MPUSH-3580 - Change verification of incorrect AndroidManifest.xml setup to throw a RunTimeException to ensure critical errors are fixed early in development process.
  • MPUSH-3390 - Post an Event to the EventBus when readyAimFire() finishes with success or failure status.
    Note: You can implement the ReadyAimFireInitCompletedEvent in your code to execute code after readyAimFire() has completed in order to avoid UI blocks in your app. Implement the SDK for Google.
  • MPUSH-3374 - Add information about the SDK, app version and other pertinent information to error logging in ADB logcat.
  • MPUSH-3356 - Send registration data when network becomes available including changes to tags/attributes that were made when network was unavailable.
  • MPUSH-3321 - Consolidate broadcast receivers and ensure proper use of Wakeful services.
    Note: Code changes required to implement ETPushReceiver and ETPushService. See Implement the SDK for Google.
    Note: Code changes may be required if you use location to use ETLocationReceiver and ETLocationService. See Location Services
    Note: In order to change how notifications are overridden, you must now use interfaces within ETNotifications class. See Override Notifications
  • MPUSH-3330 - Obfuscate sensitive data such as App Id, Access Token, and GCM Sender Id from ADB logcat.
  • MPUSH-3423 - Add customer facing log capturing to assist with debugging when not connected to ADB.
    Note: APIs available to start capture, stop capture, save log, and email log. See ET Logger
  • MPUSH-3160 - Remove Jackson third party library and use Android internal classes to reduce Dex count of SDK.
    Note: SDK no longer depends on this JAR. It may be removed if your application does not require it.
  • MPUSH-3218 - Remove Ormlite third party library and use Android internal classes to reduce Dex count of SDK.
    Note: SDK no longer depends on this JAR. It may be removed if your application does not require it.
  • MPUSH-3156 - Remove Joda third party library and use Android internal classes to reduce Dex count of SDK.
    Note: SDK no longer depends on this JAR. It may be removed if your application does not require it.
  • MPUSH-3333 - Change payload to properly send SDK Version and GCM Sender Id which are saved in pushAddressExtension table in the Marketing Cloud.
  • MPUSH-3322 - Ensure database used in SDK is initialized at beginning of readyAimFire().
  • MPUSH-3313 - Implement registerActivityLifecycleCallbacks() to handle onResume() and onPause() detection for Activities.
    Note: You can remove ETPush.activityResumed() and ETPush.activityPaused() for apps targeting API level 14 or later.
  • MPUSH-3256 - Encrypt all data within the SDK SharedPreferences file and all sensitive data in the SDK SQLite database.
    Note: If you use ProGuard in your production app, you must not obfuscate the SDK. See ProGuard Implementation
  • MPUSH-3402 - Obfuscate non-public methods and attributes.
  • MPUSH-3233 - Support Google Play Services v6.5.87 and up.
  • MPUSH-3150 - Update license for SDK to use Salesforce.com.
  • MPUSH-3320 - Ensure that Location work within the SDK is not executed when location turned off in readyAimFire().
  • MPUSH-3293 - Build SDK with latest Android SDK, support, and appcompat libraries.
  • MPUSH-3285 - Make sure CloudPage Inbox downloads occur whether Analytics are turned on or not.
  • MPUSH-3485 - Fix crash in serializing/deserializing blank Attributes.