June 8th, 2022
- Removed the use of the
FirebaseInstanceIdclass to make the SDK compatible with recent versions of Firebase Cloud Messaging. Check our updating guide for more information.
- Ability to integrate both Huawei Mobile Services and Firebase Cloud Messaging simultaneously in the same app.
- The SDK now targets Android API level 32.
December 13th, 2021
- Prevent an ANR to occur when downloading the notification image on:
- Contextual Push triggering;
- Notification redisplaying after the device has rebooted.
- Prevent local ongoing campaigns from being deleted if the campaign retrieving fails due to a server or network issue.
October 18th, 2021
Use this version if your app targets Android 12
This version fixes Push campaigns compatibility issues with Android 12, occuring only if you set
targetSdkVersion to 31 in your app.
- Due to new limitations in Android 12, notifications interaction behavior has slightly changed. Make sure to check our updating guide, especially if you implemented the
- Fixed a background crash that could occur if the app implements the Huawei Location Kit but not the Huawei Push Kit.
- Fixed a bug, introduced in v7.1.1, that was preventing Geofencing campaigns notifications from being displayed.
October 7th, 2021
- Fixed two crashes occuring in the background (
July 13th, 2021
- The EndSession log is no longer sent when user has opt out of analytics. This was a regression introduced on the v7.0.0 and has now been fixed. This was causing 0 second sessions with no analytics data, but they should not exist.
- Fixed an issue where the sdk initialization could fail due to a
- Fixed an issue where the Contextual Campaigns triggered by a Session Event and a Location Condition could not always be triggered.
July 2nd, 2021
- Ability to permanently prevent the SDK from sending requests when API Key is disabled by the platform.
- Prevent SDK to consume resources on the device when the API Key is not configured correctly.
- The SDK now correctly processes the server response for the given API Key and displays that info on the verbose configuration alert.
- The SDK can now send multiple attributes to the backend at the same time without skipping any of them.
- The SDK now allows the developer to customize the title and the content of the notification from the
FollowAnalytics.Configuration.onNotificationBuildingcallback thanks to the
June 22nd, 2021
- Fixed an issue where the notifications without title could not be re-displayed after the device reboot.
June 3rd, 2021
- Fixed Android 12 compatibility issues.
May 25th, 2021
- Added the method
FollowAnalytics.requestReview()to the native and JS interfaces, allowing to ask the user to rate your app.
- Added a convenience method allowing InApp Templates to handle the review request process.
- Fixed an issue where the sdk's deep links to the Device Id registration activity and Validator activity did not work if the applicationId contained at least one capital letter.
March 31th, 2021
- Fixed an issue introduced in v7.0.0 where a Push
Messagewas not marked as dismissed when the notification was swiped away by the user. As a consequence, a dismissed notification may appear again in the Android Notification Drawer after the device is rebooted. This could only occur when Push archiving is enabled.
- Fixed the JSON
Messagefields names follow the new v7.0 interface.
- Fixed an issue where InApp Template actions (button clicks) statistics were sent in the case of a re-displaying (i.e. displayed from a call to
March 18th, 2021
Use v7.0.1 instead
Avoid using this release v7.0.0 as it misses some behavior and JS interface changes on the
Message class. It also introduced a bug related to push notification dismissing. Those issues are all corrected in v7.0.1.
The SDK interface has been completely rethought to be easier to use and more meaningful:
Messageclass fields have been renamed.
- All configuration parameters have to be defined in your implementation of the
Configurationclass. They are not retrieved from the
- All campaign callbacks have been moved to the
Configurationclass, as the
DefaultMessageHandlerclass is removed.
- Campaign action callbacks signature have been modified, and are using the new
ActionInfoclass as argument.
- The custom handling of Custom Web Page campaigns has been removed, we recommend to use silent pushes instead.
- Increased the minimum required Android API level from 16 to 19.
- Other changes in the SDK public interface, make sure to check our updating guide.
You will find more info in our Updating to v7.0 guide.
- Remote messaging and location features are now compatible with Huawei Mobile Services. This allows you to use all our campaign features on a pure HMS device. To implement Push campaign reception on those devices, follow the Add HMS Core SDK guide.
- Contextual campaigns triggers can be combined together with a new
THENoperator, additionally to the existing
- If InApp archiving is enabled, an InApp message can be re-displayed in the exact same way as it was displayed by the SDK, thanks to the
Message.displayInApp()method. See the Archiving messages section for more details.
- There is a new SDK callback
onInAppNativeActionwhich is called whenever a Native Alert or Evaluation Booster InApp campaign dialog is closed. It provides to your app all information regarding the action which closed the InApp. See the Behavior on native InApp action section for more details.
Note that some of those new features depends on their FollowAnalytics platform counterparts. Please contact your CSM manager to know their availability on the platform side.
- The local storage used by ongoing campaigns has been optimized to take less space.
- App icon bagdes are now working on Android 8 and higher
- We have improved the SDK error messages printed to the console
January 12th, 2021
- Now the SDK uses AndroidX libraries. Make sure to update your app to use AndroidX, see migration guide.
FollowAnalytics.getOptInAnalytics()methods to the JS interface.
- Optimized resources usage for campaigns containing a Location Condition.
December 18th, 2020
- Fixed an issue where contextual campaigns with a tagged event with key/values, could be triggered if an event with the same same name and with an empty string as detail was triggered.
December 15th, 2020
- Fixed an issue where contextual campaigns with a tagged event and a location condition could not be triggered.
December 9th, 2020
- Fixed a crash occurring in background when an event is logged on devices without Google Play Services. This crash occurs only if ACCESS_COARSE_LOCATION is granted and ACCESS_FINE_LOCATION is not granted.
November 18th, 2020
- Campaigns can now be triggered on an event's key/value condition, and on multiple values.
- Fixed an issue where sometimes the api/notification request was sent twice on app startup.
- Fixed an issue where multiple In-App alerts could be displayed at the same time after an orientation change.
- In order to extend the stats, a new log is sent whenever something prevents a campaign from being displayed.
- Campaign synchronization is not automatically triggered at each push reception. This synchronization is only done when the server sends the order to do so.
August 13th, 2020
- Fixed an issue where the value of the
FollowAnalytics.Message.isSilentPushproperty was never persisted when the message was archived.
FollowAnalytics.isRegisteredForPushNotifications()method to the JS interface.
July 10th, 2020
- Now, if the message archiving is enabled, the unread and not dismissed notifications are still displayed after the device is rebooted.
- Now the SDK allows you to handle a flag to opt-in/opt-out for notifications from your app. More info in the Opt-In Notifications section.
- Added a new accessor to the
isNotificationDismissed()(more information in the Message Archiving section).
- Added the
FollowAnalytics.openNotificationSettingsEventually()method that opens the system notification settings (only if they are disabled).
- Now the identifier returned by
Message.getId()is the same as the one returned by
Message.getCampaignId(). Therefore, all the duplicated archived messages (with the same campaign ID) will be deduplicated.
Message.getUrl()returns the url of the Rich Media attachment if the message comes from a Push campaign.
- Data Wallet feature is no longer available.
- Fixed a bug where the campaign trigger log could be sent multiple times when "Time" is "After trigger happens" and "Users can receive this message more than once" is disabled in the campaign editor.
- Fixed a notification displaying issue on Android API level < 24 where the content text color was always black, even if the OS theme is dark.
- More improvements on notification displaying when they contain a Rich Media.
May 29th, 2020
- The name of the notification channel associated with the SDK can now be set at the initialization of the SDK.
- Improved the notification displaying: now up to 5 lines of text can be displayed along with the notification image (Rich media push).
- Now opening an Interactive Notification by tapping on a custom action button will count in the push opened stats.
- Now, by default, the last known location is no longer logged when a session starts.
- Added new parameter
lastKnownLocationEnabledto the configuration to enable the logging of the last known location when the session starts. See the Updating from 6.4 to 6.5 guide for more information.
- Now silent pushes are also archived when push messages archiving is enabled.
- Fixed a bug where the opt-out push information was not sent to the backend on Android API level 26 and higher.
- Fixed a bug where
onNotificationReceivedwas not called if a silent push was received while the device is opt-out push.
- Added a complete description of the
Messageaccessors in the Message Archiving section.
- Added Kotlin code snippets in the documentation.
- Now the SDK targets API level 28.
March 17th 2020
- Now in In-App Custom Web Page, any link that must be opened in another window/tab (for instance, with
target="_blank") will be opened outside of the In-App.
- Fixed a bug where InApp templates interaction could sometimes be frozen after an orientation change on Android API level < 19.
- Fixed an issue where links from InApp campaigns could sometimes not be opened if a disambiguation dialog is displayed.
- Fixed InApp Native Alert statistics.
- Improvements on InApp UI for better immersion.
- Improved stability.
February 5th 2020
- Fixed crash when opening a link from an In-App template.
- Improved In-App Native Alerts UI.
January 31th 2020
- Fixed the following user attributes JS interface methods:
FollowAnalytics.UserAttributesJS Interface that was not accessible since 6.4.2 without the additional script mentioned in the documentation at step #4 of Using FAWebView. Now this script in not needed to have the whole JS interface initialised on Android API level >= 19.
- Updated this JS script on the documentation, to fix the following user attributes methods:
setDateTime(). Make sure to update your web pages with the new script if you support Android API level < 19.
January 17th 2020
- Fixed Contextual campaign's 1st session event that may not be triggered on slow network.
- Fixed notification timing issue when there are multiple Contextual Push campaigns triggered by the same event.
- Improved documentation to describe the requirements to make InApp templates working properly on Android API level < 19.
December 20th 2019
- Improved SDK responsiveness while sending logs and displaying campaigns.
- Now native InApp appearence is similar to the device preview on the platform.
- Now Contextual Campaigns are triggered and displayed even if user is opt-out analytics.
- Fixed geofencing notification not displaying while the app is not running (i.e. user force-quit the app or device has just rebooted).
- Fixed triggering of Contextual Campaigns based on session events.
- Fixed the SDK validator console message that was always displaying an error about "SDK services declaration" on devices running Android API level 21 to 23.
FollowAnalytics.setUserId()behavior to not close the current session if
FollowAnalytics.setUserId()behavior that was taking effect on the next session when setting
null. Now it takes effect immediately.
- Increased the minimum required Android API level from 14 to 16.
- Added documentation about pro-guard rules.
- Removed the exception trace that appears when
Tune SDKis not installed.
- Fixed crashes
September 23th 2019
- Added new methods to allow logging of locations (see Updating from 6.3 to 6.4 for more information):
FollowAnalytics.logLocation(double latitude, double longitude)
- Removed the automatic location update done internally by the SDK.
- Fixed automatic video playing for in-app template.
- Changed maven url protocol for FollowAnalytics repository.
- Improved geofencing feature.
- Improved close button appearance for custom web page.
- Now external links in in-app native alerts will be opened outside of the app.
August 9th 2019
- Improvement of the backward compatibility with API level 26. This is a fix for FollowAnalytics Phonegap SDK. If your project doesn't use AndroidX, check our documentation to eventually solve any conflicts in dependencies.
July 5th 2019
- Fixed in-app campaign statistics.
- Stability improvements.
June 3rd 2019
- Fixed zip slip vulnerability issue.
- Improved close button quality for custom web pages when displayed on tablets.
May 23th 2019
- Added new callback
onNotificationReceivedto handle notification reception, including silent push notification. See the Configuration for more details.
- Fixed bug where onPushMessageClicked could be called when receiving a silent push (onNotificationReceived is called now for that case).
- Fixed bug where contextual in-app could be archived in the inbox.
- Added a new method to validate the SDK integration :
- Now external links in in-app templates will be opened outside of the app.
- Stability Improvements.
- Added two new methods :
setNumber(String key, Float number)and
setNumber(String key, BigDecimal number).
- Modified the signature of the following methods :
addToSet(String key, String... values)and
removeFromSet(String key, String... values)with adding variable number of arguments mechanism.
booleanreturn type to every methods.
April 18th 2019
- Fixed bug on local Data Wallet policy.
April 8th 2019
- Fixed crash that occurs on Android 8.0+ when app is reopened from background.
March 14th 2019
- Removed dependency on AndroidX: now SDK can be integrated into apps that use AndroidX as well as apps that do not.
- Fixed a crash that occurs when setting
truewhen there is no MessageHandler defined in AndroidManifest.
February 22nd 2019
- Now the SDK uses AndroidX. Make sure to update your app to use AndroidX, see migration guide.
- New initialization method FollowAnalytics.init(Context context, FollowAnalytics.Configuration defaultConfiguration).
- Added methods/properties in Configuration.
- Stability Improvements.
- Fixed bugs and crash issues (ANR).
February 19th 2019
- Fixed crash that occurs when sending Firebase messages.
February 19th 2019
- Xamarin Firebase compatibility fixes.
January 10th 2019
- Fixed behaviour in validation setup.
January 2nd, 2019
- Added support for Android Pie and watch face.
- Fixed bugs and crash issues (ANR).
- Improvements with memory usage and stability.
FollowApps.classis now deprecated, it will be removed in the next major version.
- Better support with In-app templates library.
- Changed return method value for FollowAnalytics.logEvent() and FollowAnalytics.logError().
September 25th, 2018
FollowAnalytics now uses Firebase Cloud Messaging:
Eliminated GCM support.
Removed deprecated methods :
FollowAnalytics.setCollectLogsAuthorization(boolean authorized); FollowAnalytics.setCollectLocationLogsAuthorization(boolean authorized); FollowAnalytics.canCollectLocationLogs(); FollowAnalytics.canCollectLogs(); FollowAnalytics.processFollowAnalyticsPush(Context context, String data); FollowAnalytics.isFollowAnalyticsPushData(String data); FollowAnalytics.getPushToken(); FollowApps.isFollowAnalyticsPushData(String data); FollowApps.getCollectLogsAuthorization(); FollowApps.setCollectLogsAuthorization(boolean authorized); FollowApps.getCollectLocationLogsAuthorization(); FollowApps.setCollectLocationLogsAuthorization(); FollowApps.canCollectLocationLogs(); FollowApps.canCollectLogs(); FollowApps.sendLogAuthorization(String title, String message, String positiveButtonTitle, String negativeButtonTitle, Activity activity); FollowApps.sendLocationAuthorization(String title, String message, String positiveButtonTitle, String negativeButtonTitle, Activity activity); FollowApps.sendLocationAuthorization(Context context);
- Fixed bug with
getDeepLinkUrl()method available for some objects that interacts with
- Fixed bug preventing the registration device from the FollowAnalytics Platform
- Improved/fixed the syntax and semantic of some payload content.
August 3rd, 2018
- Fixed issue with GDPR request.
- Fixed token issue for push notifications.
June 21st, 2018
- Added OptIn and OptOut tracking logs.
June 1st, 2018
May 9th, 2018
- New opt-out analytics feature (some methods are deprecated, more information in documentation)
- Fixes issue about country detection
- Updated dependencies
March 20th, 2018
- Fixed some crash issues
- Fixed internal behaviour
February 22th, 2018
- Added multiple environment endpoint
February 12th, 2018
- Fixed some crash issues (ANR).
- Fixed support of
In-App Custom Web Page.
January 18th, 2018
- Fixed bug when a wrong deeplink was set
- Fixed bug for links available on a webview which weren't clickable and the history queue of the pages that were loaded but then removed from the history
- Fixed bug for InApp message that could display multiple times
- Fixed bug for InApp message with an extra close button which won't close the Activity
November 23th, 2017
- Support for Android Oreo
- Removed AdaptiveSDK
- Improved pause/resume mechanism
- Increased the minimum level API of FollowAnalytics SDK
- Fixed some possible crashes
- Support for badge notifications
- Added Rich Media to Push Notifications
November 6th, 2017
- Fixed bug when accessing the database under certain conditions
September 19th, 2017
- InApp Template close button fix
- Fixed bug when closing Native InApp campaign
- Force new session upon UnsetUserId
September 5th, 2017
- Push Notifications now can have a title.
- Fixed a problem where a Native InApp pop up would close when clicking outside the pop up.
- Improvements to the Campaigns Pause/Resume feature.
July 20th, 2017
- Fix bug about empty session with duration zero second.
- Prevent to display “Page not available” in in-app template.
- Add possibility to process category of push notification. In a general way, permit developer to customize the FollowAnalytics notification. For more information, please refer to the documentation.
June 22nd, 2017
- Improve the method processFollowAnalyticsPush to fix the handling multiple GCM.
May 22nd, 2017
- Fix bug on notification token upload request and authentication request.
Disable notification for wearable and add utility method to disable gcm registration.
FollowAnalytics.setGcmRegistrationEnabled(true or false)
Add method to delay all FollowAnalytics SDK request.
FollowAnalytics.setRequestDelay(timeInMilliseconds); e.g.: FollowAnalytics.setRequestDelay(4*DateUtils.HOUR_IN_MILLIS);
April 12th, 2017
SDK 5.0 introduces a new type of campaign: inApp templates. For more information, please refer to the latest documentation.
FollowApps is replaced by
Campaign Storage - Inbox support:
New feature: all scheduled campaigns received by a device can be archived locally and accessed from the developer's code, formatted as a message object.
- Classes :
The methods of user attributes are accessble by
The sdk depends on the following sdk :
compile ‘com.google.android.gms:play-services-gcm:10.2.+’ compile ‘com.google.android.gms:play-services-location:10.2.+’ compile ‘com.android.support:cardview-v7:25.0.+’
setMessageHandleris removed, please check the documentation to declare it in the manifest
February 17th, 2017
Fixed issue on Android 6+ regarding the device ID.
December 28th, 2016
Added support for Android Wear.
September 28th, 2016
- You can now pause or resume any campaign display
- Now works with Google Play Services 9.6.0
June 29th, 2016
- Improve support of multiple GCM registrations, better integration alongside Parse
- Added the possibility to override the notification icon color
- Better handling of opt-in and opt-out information
- App will no longer crash with
May 20th, 2016
Fix the bug about deletion of attributes.
May 13th, 2016
- SDK can now handle App Deep Linking URLs, so the SDK can now open the activity or application specified by the url.
- Add the Tune integration (MAT) verification in the SDK Validator.
- SDK can now handle FollowAnalytics push only and forward other push to their provider and add the possibility to process FollowAnalytics push from other push providers.
- Display properly the date for unknown locale.
March 22th, 2016
Handle campaign open url in internal WebView rather than in the external browser.
March 3rd, 2016
Fix the bug Cannot perform this operation because the connection pool has been closed.
February 9th, 2016
- Add possibility to start/stop AdaptiveSDK feature and possibility to select external or exclude SDK for handling its event.
- Add user attributes features
- Add method to pause or resume rich campaign display
- Remove android-support-v4 and update google play service to 8.4.0
- Improve contextual campaign based on enter/exit area
December 7th, 2015
- Add method to check if SDK configuration is correct
- Documentation about debug/release, deep linking and adaptiveSDK.
- Update Gradle plugin to 1.5.0 and android support 23.1.1
- Limit the event and error name to 255 bytes or truncate.
- Remove boot complete and access wifi state permission
- Fix bugs and improvement
November 27th, 2015
- Permit to process notification data (for adobe air)
- Update android support v4 jar
- Fix bugs and improvement
November 18th, 2015
- Handling event from external existing sdk (mixpanel,localytics,google analytics,urban airship, segment io,
- Update Google play service version to 8.3.0
November 4th, 2015
- Update Google Play Services version to 8.1.0
- Init sdk if necessary
- Handling faid key from manifest meta tag
September 15th, 2015
Migrated the GCM registration code in the SDK to use the new InstanceID API from Play Services 7.8
September 15th, 2015
Migrated the GCM registration code in the SDK to use the new InstanceID API from Play Services 7.8
August 25th, 2015
- Add support for contextual campaigns
- Changed the
May 5th, 2015
- Handle custom icon for Action Bar
- Add public method FollowApps.setPushAuthorization()
January 28th, 2015
Add capacity to log events in webviews
December 10th, 2014
- Add support for custom parameters in rich campaigns
- Change in Location Management for compatibility with latest Google Play Services version
November 6th, 2014
- General Availability of Attribution Analytics feature: integration with MobileAppTracking SDK
- Support of Bib View Style Notifications
- Ability to display the device ID in order to target a single device for push test purpose through internal API and url scheme
- Improved session reliability considering foreground/background application lifecycle
- Performance improvement
September 11th, 2014
- Minor bug fix on rich campaign
- Better management of screen to open when the app was in background