Skip to main content
 

Change Log for the SAS Customer Intelligence 360 Mobile SDK

This change log displays revisions to the SAS Customer Intelligence 360 mobile Software Development Kit (SDK) for both Android and iOS.

Android

These are the most recent changes for Android:

Mobile SDK Change Log for Android

SDK Version

SAS Customer Intelligence 360 Release

Summary

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 will use 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 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 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 crash when events are created with null-name attributes. [1.32.2 BUG FIX]

Fix 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 application crash on errors 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 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 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.

iOS

These are the most recent changes for iOS:

Mobile SDK Change Log for iOS

SDK Version

SAS Customer Intelligence 360 Release

Summary

1.61.1

21.11 (10Nov2021)

Check for errors that result when a device is full and therefore offline events are not stored. [BUG FIX]

Change the build process to add dSYMS and BCSymbolMaps to the xcframework so that tracebacks are readable. [BUG FIX]

1.60.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.

Add a SASCollector.isEnabled() method that enables you to determine whether the SDK needs to be initialized earlier than usual. [FEATURE]

Modify some logging statements to be DEBUG instead of INFO. [BUG FIX]

1.59.0

21.09 (08SEP2021)

Allow the use of HTTP redirects for image downloads and other internet operations that use an HTTP redirect to access a resource. [BUG FIX]

1.58.0

21.08 (11AUG2021)

Remove the full file path from SASLogger when using the verbose log formatter. [BUG FIX]

Change how events are added to the event queue to ensure that new sessions are correctly handled. [BUG FIX]

1.57.4

21.07 (14JUL2021)

Add a description method to the SASIA_AbstractAd class to enable SASCollectorUIAdview to display the SpotID in the SDK internal log.

SASCollector is a private singleton class. You cannot instantiate this class to create an object. [BUG FIX]

Use the new wkWebView script handler instead of document.location to send mraid commands to the mobile SDK. [BUG FIX]

1.55.1

21.05 (19MAY2021)

Change how a mobile session is bound to a web session. [BUG FIX]

Prevent in-app messages from being received at the same time to reduce the risk of incorrect in-app messaging. [BUG FIX]

1.54.1

21.04 (21APR2021)

Fix a mobile SDK initialization error. [BUG FIX]

IMPORTANT Due to the nature of the issue, customers using mobile SDK version 1.53.0 must immediately upgrade their mobile SDK to version 1.54.1 when it is available.

1.53.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]

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

1.52.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.51.0

21.01 (26JAN2021)

Increase the minimum operating system requirement for iOS to 11.0. Discontinue support for iOS 9 and 10. Remove the original SASMessagingDelegate interface.

Make SMS text message links (that you tap to send a text message) and telephone links (that you click to make a call) go through the MRAID interface before running them. This allows the code to check whether the feature is disabled. [BUG FIX]

1.48.1

20.11 (08DEC2020)

No longer use didDetermineState as the method for geofence enter and exit events. Use enter_geofence and exit_geofence instead. Re-instate code that sends an enter_geofence event when regions are downloaded.

Change the minimum recommended geofence radius to 225 meters. A geofence enter event (Geofence Entered) might be triggered upon entering a geofence under 225 meters, but a geofence exit event (Geofence Exit) is not triggered upon exiting that geofence area. In addition, the user must move outside the 225–meter radius to re-trigger a geofence enter event (Geofence Entered). [BUG FIX]

Move network failures to the main thread to ensure that UI components are not updated. [BUG FIX]

1.47.0

20.10 (06OCT2020)

Adjust the timing of geofence updates to prevent invalidated beacon scanning. [BUG FIX]

Stop generating a new load ID for the blocking identity call. [BUG FIX]

1.46.0

20.09 (08SEP2020)

Allow an inline video to play in an interstitial web view. [BUG FIX]

Prevent two focus events from being sent when the SASCollector SDK is initialized by the developer instead of being automatically initialized on start-up. [BUG FIX]

1.45.0

20.08 (04AUG2020)

Change how spots are loaded to reduce the frequency of crashes that might occur when ads are loaded to the same spot without sufficient time between loads for the previous content to fully download. [BUG FIX]

Add a new allowContentCaching(bool) method to allow spot content to be cached. The default is to not allow caching. [FEATURE]

1.44.1

20.07 (07JUL2020)

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

1.43.0

20.06 (09JUN2020)

Update SDK documentation.

1.42.0

20.05 (13MAY2020)

Minor updates.

1.41.1

20.04 (15APR2020)

Enable the display of in-app messages in additional scenarios. [BUG FIX]

Activate the mobile SDK by adding the Apple’s new XCframework bundle format to the project settings. For more information, see SAS Customer Intelligence 360: Developer’s Guide for Mobile Applications. [FEATURE]

1.40.0

20.03 (18MAR2020)

Minor updates.

1.38.0

20.01 (22JAN2020)

Update push notification and in-app message content to conform to changes in iOS 13. [FEATURE]

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]

Improve performance when loading spot content on iOS 13 devices. [BUG FIX]

1.36.3

19.12 (27NOV2019)

Fix issue with how geofence events are sent. [BUG FIX]

Change queuing of events to provide more robust handling of sessions. [FEATURE]

Handle push notifications correctly when opened from a locked state. [BUG FIX]

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

Change how events are sent to handle dropped sessions due to network inconsistencies. [1.36.1 BUG FIX]

Allow access to the new iOS 13 UIModalPresentationStyle that controls the presentation of interstitial windows from within mobile spots. [1.36.1 FEATURE]

1.35.1

19.11 (30OCT2019)

For interstitial ads, prevent the use of the swipe to dismiss feature that is introduced with iOS 13. [BUG FIX]

1.34.0

19.10 (02OCT2019)

Enable the SASCollector.plist file to check for Boolean values and add log messaging for location monitoring. [FEATURE]

1.33.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.31.1

19.07 (23JUL2019)

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

Load HTML into an interstitial ad after the web view is added to the view hierarchy. [BUG FIX]

1.30.0

19.06 (20JUN2019)

Fix crash when an interstitial ad is loaded with iOS versions 9 and 10. [BUG FIX]

Fix click-through issue so that links open in mobile spots. [BUG FIX]

Switch from auto resizing masks to constraints for interstitial ads. This helps deal with the notch and the home button on newer iPhones. [FEATURE]

1.29.0

19.04 (17APR2019)

Send spot_change and spot_viewable events. [BUG FIX]

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

Update SDK documentation.

1.28.1

19.03 (20MAR2019)

Change the minimum supported iOS version from 8.0 to 9.0.

Ensure that spot content fills the entire spot area. [BUG FIX]

Support WKWebView and remove the deprecated UIWebview.

1.27.0

18.12 (27NOV2018)

Update to support iOS 12.

1.26.0

18.08 (07AUG2018)

Add sdkVersion call to the public API. [FEATURE]

1.25.0

18.06 (12JUN2018)

Remove blank spot IDs from data hub. [BUG FIX]

Remove first_launch event. [BUG FIX]

1.24.0

18.05 (15MAY2018)

Minor bug fixes and performance improvements.

1.23.1

18.04 (17APR2018)

Minor bug fixes and performance improvements.

1.22.2

18.03 (20MAR2018)

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

18.03 Hot Fix (27MAR2018)

Fix click-through event handling. [BUG FIX]

1.21.0

18.02 (20FEB2018)

Avoid unnecessary location requests to the OS since we are no longer sending the device_location event. Remove device_location event. [FEATURE]

1.20.2

18.01 (23JAN2018)

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

Send an error to the log when a load event contains a malformed URI. [BUG FIX]

1.19.0

17.12 (05DEC2017)

Change the device model sent for iOS to include the real device model (iPhone5,3) to allow us to look up a human-readable name for targeting. [FEATURE]

1.18.0

17.11

Do not send beacon events to the server when geofence information has not been downloaded. [BUG FIX]

1.17.0

17.10

Add new detachIdentity feature. Enables a user to sign out of the application and no longer receive push notifications. [FEATURE]

Fix a crash when an ad fails to load early. [BUG FIX]

Handle rare case when an offline event timestamp does not parse correctly. [BUG FIX]

1.16.1

17.09

Handle issue with invalid date formats for certain regions when users switch between 12 hour and 24-hour clocks.

Make the button area of an in-app message scrollable to handle cases where buttons would display off the screen.

1.15.2

17.08

Handle issue with invalid date formats for certain regions when users switch between 12 hour and 24-hour clocks.

Fix the display of images in the small in-app message template so that they are properly cropped to the center.

Handle possible changes in the device language while the application is running.

Begin sending the device language to SAS Customer Intelligence 360 for use in tracking and targeting.

Enable in-app messages to be customized with font size, styling, and background coloring.

1.13.2

17.06

Handle issue with invalid date formats in certain regions when users switch between 12 hour and 24-hour clocks.

Fix the incorrect selection of the small in-app message template for display.

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

1.12.0

17.05

Provide a Module Map for Swift language usage.

Modify the new session information to enable discovery of new or returning users.

Add the ability to disable location monitoring.

1.11.8

17.04

Add the ability to disable location monitoring.

Provide a Module Map for Swift language usage.

Ensure that events are sent individually.

Enable the use of equal width buttons in in-app messages.

1.10.1

17.03

Ensure that events are sent one at a time.

Ensure that the date formatter is thread safe.

Do not send push notification events when the push notification arrives and the app is open.

Send the application version in the new session event.

Last updated: October 13, 2021