Skip to main content
 

Change Log for the SAS Customer Intelligence 360 Mobile SDK for Android

This log describes changes that were made to the SAS® Customer Intelligence 360 mobile Software Development Kit (SDK) for Android. Beginning with release 22.07, the mobile SDK is released independently of the SAS Customer Intelligence 360 release.

IMPORTANT Mobile app developers should always work with the most recently released SDK version to take advantage of the latest updates.
Mobile SDK Change Log for Android

SDK Version

Release Date

Summary

1.82.2

06MAY2024

Removed mobile spot webview's debug mode. [BUG FIX]

1.82.1

05APR2024

Fixed issue with flickering content in some mobile spots. [BUG FIX]

1.82.0

19MAR2024

Allows using external style resources in mobile spots. [FEATURE]

1.81.0

01FEB2024

Reduced offline event storage to 1 hour. Ensure offline events are sent before online events. [BUG FIX]

1.80.4

06NOV2023

Add option to disable automatic focus tracking by including disable.focus.tracking property in SASCollector.properties. [FEATURE]

Fixed mobile spots not displayed issue if session is timed out. [BUG FIX]

Added an identity method that sends a feedback message about identity call status to callback method. [BUG FIX]

1.80.3

23JUN2023

Restored previous push notification open behavior. App relaunch is only disabled with an explicit property named apprelaunch.disabled.on.notification.open set to true in SASCollector.properties. [BUG FIX]

Added registerForMobileMessage method with a callback parameter to provide information of registration failure or success. [FEATURE]

1.80.2

03MAY2023

Fixed application relaunch issue when push notification is clicked. [BUG FIX]

1.80.1

03MAY2023

Include mobile_platform attribute in sessionless push notification events. [FEATURE]

1.80.0

30MAR2023

Update SASCollectorUIAdView and SASCollectorInterstitialAd to handle an empty task ID and creative ID. [BUG FIX]

Update build target to Android 13.

1.79.1

04JAN2023

To provide additional security, encrypt the local copy of geofence data. [BUG FIX]

Fix an issue that occurs when an identity event fails and the subsequent identity event is discarded. [BUG FIX]

Fix incomplete session reset on SDK shutdown. [BUG FIX]

N/A

09SEP2022

Here is a list of the currently supported operating system and software requirements for the Android mobile SDK:

  • Android 6.0 and later
  • Android SDK:
    • (Updated) Build-tools API level: 30 and later
    • (Updated) compileSdkVersion: 30 and later
    • (Updated) compileSdkVersion: 30 and later
    • (Updated) minSdkVersion: 23
    • (Updated) targetSdkVersion: 30
  • Gradle dependencies:
    • JSON processing library: Gson 2.8.5 and later
    • For location-based features: Google Play services location library (play-services-location) 16 and later
    • For mobile messaging: Firebase Cloud Messaging (FCM) SDK (firebase-messaging) 17 and later

1.79.0

09SEP2022

Provide an option to detach an identity from the device ID and the visitor ID. [FEATURE]

1.78.2

06SEP2022

The SDK no longer checks for BLUETOOTH and BLUETOOTH_ADMIN permissions at runtime, as those permissions might not be required depending on the Android runtime version and the application’s target API version. The application should ensure that the appropriate permissions are granted prior to calling SASCollector.startMonitoringLocation. [BUG FIX]

Move mobile message data class to Proguard protected package. [BUG FIX]

Fix an issue with image resource loads where items such as navigation buttons are not displayed for small in-app messages, interstitial ads, and the embedded web browser when using aar distribution. [BUG FIX]

Fix an ad layout issue so that the full height content for interstitial ads is displayed. [BUG FIX]

1.78.1

26JUL2022

Handle unexpected invalidated content when an in-app message is dismissed. [BUG FIX]

Releases prior to 22.07:

SDK Version

SAS Customer Intelligence 360 Release

Summary

1.76.0

22.05 (18MAY2022)

Resolve an issue with a server-side shutdown command. [BUG FIX]

1.74.0

22.03 (23MAR2022)

Add new APIs to construct a URL with the session and deviceID for embedded webviews. [FEATURE]

Use SASCollector.getInstance().getDecoratedWebSessionURL(String) to add query parameters to the URL to pass the visitor ID (which is the device ID for a mobile app), session ID, and a timestamp to the embedded webview.

Alternatively, obtain the query parameter itself by calling the SASCollector.getInstance().getSessionBindingParameter().

1.72.2

22.01 (26Jan2022)

Handle cases where an empty graphic URL causes push notifications to not be displayed. [BUG FIX]

Add a mutability flag for these PendingIntent objects: displaying a push notification, requesting a precise location, and registering geofence callbacks. [BUG FIX]

1.69.0

21.11 (10Nov2021)

Block identity API calls until a session is established. [BUG FIX]

1.68.0

21.10 (06Oct2021)

Do not begin sessions for geofence and beacon events. Also, sessions are no longer created for impression and impressionViewable events for push notifications. [BUG FIX]

Note that for mobile apps, a system event that is generated while the app is in the background does not begin a new session. A custom event that is sent while the app is in the background begins a new session.

1.66.0

21.08 (11AUG2021)

With each new release of Android, SAS proactively researches and identifies behavior changes that might impact organizations who use SAS Customer Intelligence 360. In anticipation of the release of Android 12, here are some behavior changes that mobile apps that target Android 12 should be aware of.

  • Restrictions imposed on notification trampolines. If you are targeting an early release of Android 12 (specifically, Android 12 (API Level S), you must use release 21.08 of the mobile SDK. If you use an earlier mobile SDK release, when a user taps the notification to launch the mobile app, there will be no response. The call-to-action URI information is no longer provided to the app codebase when the push notification is opened.

    As a result of changes in Android 12, when a push notification is received, your mobile app developer must provide the mobile SDK with a desired Android Activity Intent to be launched when the push notification is opened. The mobile app developer uses the notification URI to determine the correct Intent. Here is an example:

    SASCollector.getInstance().setMobileMessagingDelegate2(
      new SASMobileMessagingDelegate2() {
    
      @Override
      public void dismissed()  {
        //The user has dismissed an in-app message
      }
      
      @Override
      public void action(String link, SASMobileMessageType type) {
        
        // The type parameter is SASMobileMessageType.IN_APP_MESSAGE.
        // The user clicked one of the actions in the in-app message.
        // The String parameter is the notification URI that is specified
        // in the definition of the creative in SAS Customer Intelligence 
        // 360.
      }
    
      @Override
      public Intent getNotificationIntent(String link) {
    
        // The FCM message that is given to the mobile SDK contains a push 
        // notification.
        // The app must provide an Intent to handle if and when the user 
        // opens the notification.
        // The Intent must launch an Activity. 
        // The String parameter is the notification URI that is specified 
        // in the definition of the creative in SAS Customer Intelligence 
        // 360.
    
      Intent intent = new Intent(myContext, DeepLinkActivity.class);
    
        // This is an example of how to send the link to your Activity. 
    
      intent.putExtra("my_deep_link", link);
    
      return intent;
    
      }
    });
    
  • Access to location information. To enable location-based features that support geofencing and beacon capabilities, in addition to declaring these permissions in your mobile app's manifest file, your mobile app developer must request ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION run-time permissions. Previously, only FINE permission was needed. Here is an example:
    String[] permissions = {         
          Manifest.permission.ACCESS_FINE_LOCATION,         
          Manifest.permission.ACCESS_COARSE_LOCATION 
    };  
    
    activity.requestPermissions(permissions, MY_REQUEST_CODE);

For additional information about changes that affect SAS Customer Intelligence 360, see Anticipated Behavior Changes with Android 12. For Android’s summary of the updates in Android 12, see Behavior changes: Apps targeting Android 12.

Prevent a crash when the initialization of the mobile SDK occurs outside the main thread. [BUG FIX]

Support the ability to specify a color for the icon in mobile push notifications. [FEATURE]

1.65.3

21.07 (14JUL2021)

Provide better tracking of in-app messages that fail to download so that subsequent in-app messages are ignored or rendered appropriately. [BUG FIX]

1.64.3

21.06 (16JUN2021)

Resolve intermittent crashes of the mobile app when push notifications are opened. The issue occurs when the mobile SDK is not properly initialized. [BUG FIX]

1.62.1

21.04 (21APR2021)

Prevent in-app messages from being downloaded simultaneously to ensure proper rendering of graphics. [BUG FIX]

1.61.0

21.03 (24MAR2021)

Improve image rendering for mobile in-app messages. The optimal image ratio for a large template is 320:227. The optimal image ratio for a small template is 85:76. [FEATURE]

Provide additional null safety to MRAIDWebView. [BUG FIX]

Add the ability to capture Cart Items for events. [FEATURE]

1.60.0

21.02 (24FEB2021)

Improve the ability to send events with a new SASCollectorEvent that allows multiple events to be sent at the same time. [FEATURE]

1.59.0

21.01 (26JAN2021)

Increase the minimum operating system requirement for Android to 6. Discontinue support for Android 5. Remove the original SASMessagingDelegate interface. Refactor remaining code that existed after the deprecation of AsyncTask class.

Add null safety to ad content interactions with the native UI. [BUG FIX]

For mobile spots, call the ad delegate for all link interactions. [BUG FIX]

1.56.0

20.11 (08DEC2020)

Disable the mobile SDK from prompting the user for and verifying permission to access location data on their mobile device. Specifically, the location.monitoring.disabled and location.permission.prompt.enable properties are no longer used to manage permissions. Now, it is up to mobile app developer to configure the mobile app to prompt for and verify the necessary permissions in a manner that is consistent with the desired user experience. Location monitoring is disabled until it is called by startMonitoringLocation.

A primary goal of the mobile SDK for Android is to minimize impact and restriction on the user experience of any mobile app. As the Android platform has evolved, the prescribed process for obtaining access permissions and communicating the functionality to the mobile app user has become much more complex and intertwined with the mobile app user’s experience. Therefore, it makes sense to remove the mobile SDK from the prompt and verify process altogether.

Note: Although it is no longer in use, the location.monitoring.enabled option is still included in the mobile SDK in this release. It will be removed from the mobile SDK in the next release. [BUG FIX]

Treat calls to SASCollector.identity, where the value and type are the same as the last time SASCollector.identity was called, as successful. [BUG FIX]

1.55.0

20.10 (06OCT2020)

Discontinue the use of deprecated fragment APIs. [BUG FIX]

1.54.0

20.09 (08SEP2020)

Add background location permissions to the prompt for geofence_enter events. [BUG FIX]

Send a spot_requested event prior to loading a spot to enable a session to be established. [BUG FIX]

1.53.0

20.08 (04AUG2020)

Minor updates.

1.52.1

20.07 (07JUL2020)

Add the ability to disable location monitoring through a disableLocationMonitoring API. [FEATURE]

Detect partial Play services library configurations. [BUG FIX]

1.51.4

20.06 (09JUN2020)

Restore the shutdownAndDetachIdentity API. [BUG FIX]

Close HTTP connections made within the SDK. [BUG FIX]

Alert the ad delegate about unrecognized spot IDs. [BUG FIX]

1.50.1

20.05 (13MAY2020)

Minor updates.

1.49.3

20.04 (15APR2020)

Re-enable support for Android 5. Support for Android 5 is provided only for data collection and analytics. Android 5 devices do not support mobile spots, push notifications, or in-app messages. Android 5 is not supported in releases 20.01 through 20.03. [FEATURE]

1.48.5

20.03 (18MAR2020)

Minor updates.

1.47.2

20.02 (19FEB2020)

Include a redesign of how the SDK scans for iBeacons. Specifically, use new capabilities within the Android mobile operating system that are related to Bluetooth Low Energy (BLE) technology. [FEATURE]

Refine event handling to better handle session management. [FEATURE]

1.46.2

20.01 (22JAN2020)

Fix a crash when the app has defocused while downloading graphics for an in-app message. [BUG FIX]

Update Geofence callback configuration per platform documentation. [BUG FIX]

Add a new Identity API call that enables a mobile app developer to confirm the identity of the mobile app user before requesting personalized content for the mobile app user. [FEATURE]

Remove unnecessary referrer data from external requests within spot content. [BUG FIX]

1.44.5

19.12 (27NOV2019)

Fix an issue where WRAP_CONTENT height designations on SASCollectorAd views caused unexpected results at runtime. [BUG FIX]

Include additional data in token registration. [BUG FIX]

Move event and geofence callbacks to public interface. [BUG FIX]

Handle inconsistent UI rendering in mobile spots that are wrapped in ScrollViews. [1.44.4 BUG FIX]

1.43.3

19.11 (30OCT2019)

Restore the SASCollectorAd layout configuration to address a rendering issue with creatives that are used in spots. [BUG FIX]

Add callback interfaces to SASCollector for events and geofences. [BUG FIX]

The mobile SDK now supports these versions:

  • Build-tools API level: 29 and later
  • compileSdkVersion: 29 and later
  • minSdkVersion: 23
  • targetSdkVersion: 29

1.42.0

19.10 (02OCT2019)

The mobile SDK for SAS Customer Intelligence 360 now supports new Android extension libraries (AndroidX). For information about how to move your mobile app from android.support to android-packaged dependencies, refer to the migration instructions on the Android Developer website. [FEATURE]

Add logging support and error handling when an asset is not found for an in-app message. [BUG FIX]

1.41.1

19.09 (04SEP2019)

Add new shutdownAndDetachIdentity feature that enables you to detach the device and suspend data collection using a single call. [FEATURE]

1.39.0

19.07 (23JUL2019)

Disregard white space in SDK configuration parameters. [BUG FIX]

1.38.0

19.05 (15MAY2019)

Catch memory overflow errors from the HTTP library and report the errors as ad load failures. [BUG FIX]

1.37.0

19.04 (17APR2019)

Modify the spot layout engine to avoid flickering. [BUG FIX]

Enable in-app messages to display rounded buttons without a border. [BUG FIX]

1.36.0

19.03 (20MAR2019)

Update to support Android 5.0.

1.35.1

19.01 (23JAN2019)

Improve memory management while processing large graphics for in-app messages. [BUG FIX]

1.34.0

18.12 (27NOV2018)

Cumulative bug-fix update.

1.33.2

18.11 (30OCT2018)

Cumulative bug-fix update.

1.32.2

18.10 (02OCT2018)

Fix a crash when events are created with null-name attributes. [1.32.2 BUG FIX]

Fix a crash when the app has defocused while downloading graphics for in-app messages. [1.32.2 BUG FIX]

Fix app crashes on Android 8 when attempting to detach identity in background task. [1.32.0 BUG FIX]

1.31.0

18.09 (04SEP2018)

Allow apps built against API levels less than 26 to deliver notifications without channels. [BUG FIX]

1.30.1

18.08 (07AUG2018)

Skip notification channel processing if API not available. [BUG FIX]

Handle invalid color specifications in in-app message data. [BUG FIX]

Include SDK version in BuildInfo.VERSION content. [FEATURE]

1.29.0

18.07 (10JUL2018)

Avoid app crash when parsing invalid color definitions in in-app messages. [BUG FIX]

1.28.0

18.06 (12JUN2018)

Remove first_launch event. [BUG FIX]

1.27.1

18.05 (15MAY2018)

Minor bug fixes and performance improvements.

1.26.1

18.04 (17APR2018)

Validate URI format given to newPage API. [FEATURE]

1.25.3

18.03 (20MAR2018)

Allow variable line limits for in-app messages with fewer actions. [FEATURE]

18.03 Hot Fix (11APR2018)

Avoid an application crash on errors when accessing offline event database. [BUG FIX]

1.24.1

18.02 (20FEB2018)

Reduce unnecessary GPS requests, Change Google Play Services version and minimum Android SDK level. [BUG FIX]

Remove device_location event. [FEATURE]

18.02 Hot Fix (13MAR2018)

Avoid a crash on push notification reception in Android 8 due to background service restrictions. [BUG FIX]

1.23.2

18.01 (23JAN2018)

Identity events should not send duplicate events. [BUG FIX]

Use custom SSL socket factory for Android version 4.4. [FEATURE]

Allow setting the Notification Channel for Android O. [FEATURE]

Avoid crash on bad in-app message graphic file. [BUG FIX]

1.22.1

17.12 (05DEC2017)

Disable SDK in invalid TLS configurations (pre-4.4), enable TLS 1.2 for Android 4.4. [BUG FIX]

Update to Android API Level 26 and dependency versions, support for Android 8 Notification Channels. [FEATURE]

Here is a list of the supported operating system and software requirements for the Android SDK:

  • Android 4.4+
  • Android Studio 3.x
  • Android Support Library v4, version 26.x
  • (Optional) Google Play Services, 11.x
    • GCM APIs for Mobile Messages
    • Location APIs for Geofencing
  • The JSON processing library, Gson, version 2.8.x
  • Gradle Build Tools Version 26.x
  • Gradle Compile SDK Version 26
  • Gradle minSDKVersion 19

Note: Starting with Release 17.12, Android 4.3 is no longer supported.

1.21.3

17.11

Address race condition between session establish and spot load. [BUG FIX]

Refactor location permission prompt for better accuracy in interpreting user response. [BUG FIX]

1.20.1

17.10

Avoid NullPointerException due to null intent sent to SASCollectorIntentService. [BUG FIX]

Add new detachIdentity feature. Enables a user to log off from the application and no longer receive push notifications. [FEATURE]

Avoid TransactionTooLargeException and crash in Android 7 when re-focusing app with in-app messages. [BUG FIX]

1.19.1

17.09

Initialize CookieSyncManager for API version 18 and earlier.

Fix excess geofence events on subsequent focus.

1.18.2

1.17.1

17.08

Fix cropping strategy for small in-app messages.

Make minor adjustments to small in-app message layout.

Enhance the small in-app message template and styling options.

Add the preferred language to mobile session data.

1.16.1

17.06

Resolve crash on defocus with active in-app messages in Android 7 and later.

Add the ability to differentiate between push notifications and in-app messaging through the SASMobileMessagingDelegate. Deprecated the former delegate.

1.15.2

17.05

Add visitor state (new or returning) to mobile session data.

1.14.5

17.04

Fix uniqueness fault in device ID generation, and fix other potential initialization exceptions.

Add configuration option to disable automatic location monitoring and API override.

Fix a race condition between registerForMobileMessages and resetDeviceID to allow sequential sending of a dummy token and a device ID reset.

Fix the registration of concurrent push notifications.

Enhance the small in-app message template and styling options.

1.13.0

17.03

Add application version to mobile session data.

Last updated: May 6, 2024