Android SDK releases

Release notes and asset downloads

Latest version

The easiest way to use the Xtremepush SDK is to include the repository as described in the guide to Import the Android SDK. In cases where that's not possible, you can download the latest release here.

9.1.4

2022-11-25
Download

  • Improved location functionality
  • Fixed issue on integration from non ui thread

Previous versions

9.1.1

2022-11-25
Download

  • Improved inbox control and handling

9.1.0

2022-08-19
Download

  • Android 13 compatibility
  • Added notification permission handling

9.0.3

2022-03-04
Download

  • Improved inboxList handling

9.0.2

2021-12-15
Download

  • Added message context to delivered and actionHit endpoint
  • Dependency update
  • Minor bugfix

9.0.0

2021-11-03
Download

  • Android 12 compatibility
  • Location permissions removed from SDK by default

8.2.1

2021-09-30
Download

  • Added functionality to disable notification dots

8.1.1

2021-04-23
Download

  • Removed LegacyStorage permission
  • Added additional handling around location functionality

8.1.0

2020-12-21
Download

  • Added functionality for encrypted push messages

7.9.0

2020-08-10
Download

  • Added functionality for delivery receipts

7.8.4

2020-04-27
Download

  • Updated task affinity to empty string

7.8.3

2020-02-25
Download

  • Minor bugfix

7.8.2

2020-01-27

  • Added additional handling around opening URLs

7.8.1

2019-12-09

  • Added functionality to persist list of recently received push messages to prevent possibility of duplicate sends

7.8.0

2019-09-25

  • Added functionality to allow for custom network configurations
  • Minor bugfix

7.6.2

2019-09-11

  • Additional edge-case handling
  • Minor bugfix

7.6.1

2019-08-06

  • Improved handling of beacon functionality
  • Minor bugfix

7.6.0

2019-08-02

  • Added import user function

7.5.0

2019-07-24

  • Added client facing function to call location prompt when required
  • Added functions to manage channel preferences and subscriptions
  • Minor bug fixes

7.4.0

2019-06-17

  • Delete inbox message functionality added
  • InboxListListener has callback should api fail

7.2.2

2019-04-24

  • Added bugfix in lifecycle listener

7.2.1

2019-04-02

  • Added senderID update
  • Improved google-services.json utility

7.2.0

2019-03-01

  • Migrated from GCM to FCM
  • Added addition handling for multiple firebase push providers
  • Minor bug fixes

6.4.2

2018-12-06

  • Added credential update listener interface
  • Minor bug fixes

6.3.1

2018-11-12

  • Improved inbox handling

6.3.0

2018-11-02

  • Added InboxListListener interface
  • Minor bug fix

6.2.2

2018-08-29

  • Minor bug fix

6.2.1

2018-08-17

  • Minor bug fix

6.2.0

2018-08-07

  • Included functionality to allow for notification sounds in android Oreo

6.1.1

2018-07-26

  • Minor update to improve location functionality in Oreo and greater devices

6.0.0

2018-02-20

  • Major performance update for geo-fence and iBeacon functionality for use when targeting Android Oreo
  • Notification channel support for use when targeting Android Oreo
  • User profile functions added, for tying in with server-side profile support
    • setUser(String userId)
      • For the persisting user identifier of the primary login in an app
    • setTempUser(String userId)
      • For a secondary login in the app which temporarily overrides the primary app login

5.0.0

2017-09-26

  • DeeplinkListener Interface added
  • Added functionality for handling and reporting notification action clicks
  • Improved MessageResponseListener callback. Current parameters are:
    • messagePayload : The Message object containing all the message details
    • responsePayload : A HashMap outlining the current action
    • uiReference : A reference to the current context registered with PushConnector
  • PushMessage now Message
  • immediatePushProcessing has been deprecated, showForegroundNotification added.
  • Improved reporting capability added
    • reportMessageClicked function added
    • reportMessageDismissed function added
  • Minor bug fix

4.3.1

2017-07-24

  • setExternalId(String) function added
  • Added hitEvent(String, HashMap<String, String>) function to allow key value params to be sent with event hits
  • Extra debug logging added
  • Minor bug fix

4.2.0

2017-07-10

  • PushMessage to JSON function added
  • Inbox badge update when app comes into the foreground

4.1.1

2017-06-28

  • Improved notification handling
  • Minor bug fix

4.1.0

2017-06-22 

  • hitEvent method simplified
  • Handling added to prevent malformed beacon UUID from being added to list
  • Improvements made to beacon functionality
  • Improved InApp messages rotation
  • Added setSubscription function, which allows for the push messages to be toggled on or off programatically
  • Added method addToExclusionList, which allows for certain Activities to not instantiate PushConnector
PushConnector.addToExclusionList(ClassName.class.getSimpleName());
  • Minor bug fixes added

4.0.2

2017-03-29

  • Minor regression bug fix to prevent edge-case NullPointerException

4.0.1

2017-03-21

  • Inbox badge updates when a push is received
  • Minor regression bug fix based on inbox close

4.0.0

2017-02-22

  • Improved integration mechanisms
  • SDK can be imported from Maven repository
  • SDK has own manifest which contains all necessary Xtremepush classes and permissions, so no additions are needed in app manifest
  • Features added to allow for interactive notifications
  • PushListener interface has been deprecated, replaced with MessageResponseListener interface
  • PushReceived callback in PushListener has been replaced by messageClicked in MessageResponseListener
  • New interface handles in-app, inbox, and push message callbacks.

3.5.2

2016-12-14
Download

  • Additional support for multi-window mode (Android N)
  • Minor update to accommodate mipmaps

3.5.1

2016-08-25

  • Minor update to location functionality
  • Improved handling of runtime permission requests

3.5.0

2016-06-22

  • Feature added for including an inbox in you app to persist notifications. Please go to the Android app inbox page for more information.
  • Feature added for setting a background image for notifications on Android wear devices. This can be used by calling the .setWearNotificationBackground() function, passing in the name of the image to use from the res/drawable folder:
mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GCM_APP_NUMBER)
                .setWearNotificationBackground("image_name_no_file_extension")
                .create(this);
  • Feature added for setting a single activity to use as the entry point for all notification clicks. This can be used by calling the .setNotificationHandlerActivity() function, passing in the Activity class:
mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GCM_APP_NUMBER)
                .setNotificationHandlerActivity(MyPushActivity.class)
                .create(this);

3.4.0

2016-03-03

  • Feature added to allow rich push message notifications, with LargeIcon and/or BigPicture 
  • Feature added to allow Heads-up notifications
  • Feature added to allow low-powered geo location monitoring. This can be used by calling the .setLowPowerGeo(true) function when initialising the mPushConnector object:
mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GCM_APP_NUMBER)
                .setEnableGeo(true)
                .setLowPowerGeo(true)
                .create(this);

3.3.0

2016-02-17

  • Feature added to allow customisation and localisation of the Android location permission requests in Android 6.
  • By default, the system's permission request dialog will be localised to the device's language settings
  • There is a second dialog that is shown if the user denies the first dialog and then reopens the app. This provides more context around the permission request
  • The title and message for the second dialog can be customised or localised by passing in strings to the .setRequestPermissions() function as shown here:
mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GCM_APP_NUMBER)
                .setEnableGeo(true)
                .setRequestPermissions(true, "title", "message")
                .create(this);
  • Feature added so that the prompt, that shows when location services are not enabled on the device, can be disabled: 
mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GCM_APP_NUMBER)
                .setEnableGeo(true)
                .setEnableLocationDialog(false)
                .create(this);
  • Fixed issue where XP service was not getting initialised on some devices on boot. This requires a minor change in the integration in AndroidManifest.xml to add in the 5 lines in blue (the second intent-filter element):
<receiver android:name="ie.imobile.extremepush.receivers.GCMReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
 <intent-filter>\ <action android:name="com.google.android.c2dm.intent.RECEIVE" />
 <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
 <action android:name="ie.imobile.extremepush.BEACON_SERVICE_STARTED" />
 <!-- MODIFICATION NEEDED - Replace YOUR_PACKAGE_NAME with your package name --> <category android:name="YOUR_PACKAGE_NAME" />
 </intent-filter>\ <intent-filter>
 <action android:name="android.intent.action.BOOT_COMPLETED" />
 <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
 </intent-filter>\
</receiver>

3.2.0

2016-01-29

  • Feature added to completely separate push, In-app, Geo and Beacon functionality so that each one can be enabled without dependence on any of the others.
  • To provide the above feature, an additional service was added to the library, which changes the integration in AndroidManifest.xml. The following entry needs to be added into the Application element in AndroidManifest.xml
 <service android:name="ie.imobile.extremepush.location.GeoLocationService" />
  • In order to enable/disable each of the four options, the following methods can be used during the initialisation of the PushConnector object. Below shows the default settings of each option. Please note, that if the GCM_APP_NUMBER is omitted, i.e. new PushConnector.Builder(XPUSH_APP_KEY), then Push messaging will be disabled.
mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GCM_APP_NUMBER)
                .setEnableGeo(false)
                .setEnableBeacons(false)
                .setEnableInApp(true)
                .create(this);
  • Update to the permission request added in SDK 3.1.1 so that it is enabled by default. This can be overridden using the following method when creating the PushConnector object:
mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GCM_APP_NUMBER)
                .setRequestPermissions(false)
                .create(this);

3.1.3

2016-01-06

  • There are no changes to the integration procedure
  • Minor bug fix 

3.1.2

2015-12-17

  • Feature added to allow immediate processing of a push or location-based message when the app is open in the foreground. This can be selected by passing in a true value to the setImmediatePushProcessing() function when initialising the PushConnector object:
mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GCM_APP_NUMBER)
                .setImmediatePushProcessing(true)
                .create(this);
  • Minor bug fix

3.1.1

2015-12-09

  • Feature added to allow runtime permission requests for location services in Android Marshmallow. This can be selected by passing in a true value to the setRequestPermissions() function when initialising the PushConnector object:
mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GCM_APP_NUMBER)
                .setEnableLocations(true)
                .setRequestPermissions(true)
                .create(this);
  • Updated version of dependency support v4
compile 'com.android.support:support-v4:23.1.1'
  • Minor bug fixes

3.0

2015-11-25

  • Performance improvements to delivery of location based notifications.
  • Support for New In-App module than can build messages from as little as one piece of creative and does not require HTML to be built. Users can still build messages from Custom HTML:
  • In-app message creative guidelines
  • In-app Messaging Campaigns
  • Method showAlertDialog deprecated. There is still full support for displaying a push in a dialog when the App is open
  • Updated version of dependency play-services to 8.3
compile 'com.google.android.gms:play-services:8.3.0'
  • Updated version of dependency android-beacon-library to 2.6.1
compile 'org.altbeacon:android-beacon-library:2.6.1'
  • Updated version of dependency otto to 1.3.8
compile 'com.squareup:otto:1.3.8'
  • Updated version of dependency gson to 2.4
compile 'com.google.code.gson:gson:2.4'

2.2.2

2015-09-22
Download

  • Update to add support for Android M. Android M removes support for the Apache HTTP client update required to allow for this.
  • Updated version of dependency android-async-http to 1.4.9
compile 'com.loopj.android:android-async-http:1.4.9'

2.2.1

2015-07-26

  • Updated dependency on android-beacon-library to latest version
    compile 'org.altbeacon:android-beacon-library:2.5.1'

2.2

2015-05-18

  • Added support for batching of tags. With batching turned on tags or impressions will be cached when you call hitTag or hitImpression and released when you exit your app or when you call the sendTags or sendImpressions methods, as shown below:

  • Added support for capturing values/data along with tags, the hitTag method can now take an extra argument