June 2023

We are excited to share the June SDK changelog for our product!

📘

Note

Click each SDK header to view the corresponding GitHub repository for release details.

June 28

New Features

  • Added the following new APIs:
APIDescriptionMethod ParamsReturn Type
Bitmap getNotificationBitmapWithTimeoutAndSize( Context context, Bundle bundle, String bitmapSrcUrl, boolean fallbackToAppIcon, long timeoutInMillis, int sizeInBytes)This API extends the functionality of the previous API by allowing you to specify the desired size of the retrieved bitmap in bytes. This is useful for limiting the bitmap size to optimize memory usage. By utilizing these new APIs, you can enhance the push delivery experience for custom rendering and ensure efficient handling of notification bitmaps in your Android application.Following are the method params of this API:
context - The context of the application. It must be non-null.
bundle - The object received by the push receiver. It must be non-null.
bitmapSrcUrl - The URL of the bitmap to download.
fallbackToAppIcon - Specifies whether to fall back to the app icon if the bitmap is not available.
timeoutInMillis - The timeout duration for the bitmap download in milliseconds. Must be in the range of 1 to 20000.
sizeInBytes - The maximum size of the bitmap in bytes. Must be greater than 0.
The function downloads the bitmap or returns null if the bitmap cannot be downloaded or does not exist.
Bitmap getNotificationBitmapWithTimeout ( Context context, Bundle bundle, String bitmapSrcUrl, boolean fallbackToAppIcon, long timeoutInMillis)This API allows you to retrieve a notification bitmap from the specified bitmapSrcUrl with a specified timeout. In case the bitmap retrieval fails, you can choose to fallback to the app icon by setting the fallbackToAppIcon parameter. This API provides more control over the bitmap retrieval process for custom rendering.Following are the method params of this API:
context - The context of the application. It must be non-null.
bundle - The object received by the push receiver. It must be non-null.
bitmapSrcUrl - The URL of the bitmap to download.
fallbackToAppIcon - Specifies whether to fall back to the app icon if the bitmap is not available.
timeoutInMillis - The timeout duration for the bitmap download in milliseconds. Must be in the range of 1 to 20000.
The function downloads the bitmap or returns null if the bitmap cannot be downloaded or does not exist.
  • Added support for developer-defined default notification channel for non-push template notifications. To learn how to set up the default channel in your application, refer to Default Notification Channel (Optional).

📘

Note

This change only supports CleverTap core notifications. The support for push templates will be available soon.

  • Added direct support for RenderMax Push SDK functionality within the CleverTap Core SDK.

❗️

Please remove the integrated Rendermax SDK before you upgrade to Android SDK v5.1.0

  • Added an interface for Leanplum APIs, wrapping CleverTapAPI methods inside Leanplum APIs to facilitate a smoother migration experience.

API Changes

  • Added SCCampaignOptOut event to restricted events name list for internal use.
  • Added custom SDK versions to af field for internal use.

Breaking API Changes

  • Changed behavior for the following methods:
    • CTFcmMessageHandler().createNotification(getApplicationContext(), message)
    • CleverTapAPI.createNotification(getApplicationContext(), extras)
    • CTXiaomiMessageHandler().createNotification(getApplicationContext(), message)
    • CTHmsMessageHandler().createNotification(getApplicationContext(), message)

These APIs must now be called on the caller's thread. Make sure to call them in the onMessageReceive() method of the messaging service. The CTHmsMessageHandler().createNotification() must always be called on a background thread.

Bug Fixes

  • Fixed #428 - Resolved race condition when determining if an in-app message should be shown.
  • Fixed freezing behavior of the Push primer alert dialog, which became unresponsive when clicked outside the window.

  • Added support for CleverTap Android SDK v5.1.0.
  • Added direct support for RenderMax Push SDK functionality within the CleverTap Core SDK starting from core v5.1.0.

  • Added public methods of the Leanplum class from the Leanplum SDK.
  • Fixed mitigation of potential App Inbox errors.

June 21

  • Fixed a bug that caused the rendering of the Web Inbox campaign to fail on page load and properly enforced the campaign limit for the inbox.
  • Fixed a bug in the Web Popup Image-only campaign, allowing the popup to scroll along with the page.
  • Fixed a bug where CPG (Current Page) was sent incorrectly during page transitions.

June 14

June 13

  • Fixed the bug related to updating the WZRK_CAMP cookie for Web Popup Image Only campaigns.
  • Fixed the issue that results in a Uncaught TypeError when trying to access the WZRK_CAMP cookie.

June 08

  • Added support for Remote Config variables. For more details, refer to the Remote Config Variables.

  • Added new API dismissInbox() to dismiss the App Inbox screen.

  • Added the markReadInboxMessagesForIDs(List<String>) and deleteInboxMessagesForIDs(List<String>) APIs to mark read and delete an array of inbox messages.

  • Added the support for CleverTap Android SDK v5.0.0 and iOS SDK v5.0.1.

  • Deprecated: The following methods related to Feature Flags and Product Config have been marked as deprecated in this release. These methods will be removed in the future with prior notice:

    Feature Flags

    • getFeatureFlag

    Product Config

    • setDefaultsMap
    • fetch
    • activate
    • fetchAndActivate
    • setMinimumFetchIntervalInSeconds
    • resetProductConfig
    • getProductConfigString
    • getProductConfigBoolean
    • getNumber
    • getLastFetchTimeStampInMillis
  • Updated the payload for various callbacks across Android and iOS platforms. For more details, refer to this document.

  • Updated the CleverTapInboxNotificationMessageClickedHandler callback.

    • For Android and iOS platforms, the callback is changed from CleverTapInboxNotificationMessageClickedHandler(Map<String, dynamic>? data) to CleverTapInboxNotificationMessageClickedHandler(Map<String, dynamic>? data, int contentPageIndex, int buttonIndex). The contentPageIndex corresponds to the page index of the content, which ranges from 0 to the total number of pages for carousel templates. For non-carousel templates, the contentPageIndex value is always 0, as they only have one page of content. The buttonIndex corresponds to the the App Inbox button clicked (0, 1, or 2). A value of -1 in buttonIndex field indicates the entire App Inbox Item is clicked.
    • For Android platform, previously, the callback was raised when the App Inbox item is clicked. Now, it is also raised when the App Inbox button is clicked. It matches the behavior in iOS platform.
  • Fixed the bug where App Inbox background color was not updated when no tabs are provided.

  • Fixed the non-EU retry mechanism bug.

  • Fixed the data handling exception that is thrown by the processPushNotification(dynamic data) API.

June 06

  • Updated the microphone permission prompt (shown when the receiver attends the call) limit to align with the permissible threshold. Previously, the Signed Call Android SDK blocked all incoming calls at the receiver's end if the microphone permission was denied even once.

📘

Note

Starting from Android 11, users have the option to deny the prompt twice before the permission is blocked by the system. Whereas in earlier versions, users could deny the prompt until selecting the don't ask again checkbox.

  • Fixed the outside click issue on the microphone permission prompt, which blocks the reception of all subsequent incoming calls.

June 02

  • Fixed bugs and improved overall SDK performance.