March 2025

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

πŸ“˜

Note

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

March 31

Enhancements

  • Supports Unity Native Variables, allowing users to define and sync variables directly within the Unity Editor and across builds. This simplifies configuration management between development and production environments.
  • Enhances compatibility with Unity version 2021 for native features.

Bug Fixes

  • Fixes WebGL compatibility issues for Unity version 6000.

March 27

What's New

Android

iOS

Important API Changes

  • Adds the following new APIs to register push tokens:

    • Use pushRegistrationToken(your_token, pushType) to register tokens for providers other than FCM. For more information, refer to Registering Baidu Huawei Token for example usage.

      🚧

      Note

      For revised integration steps on Android, refer to Huawei Push integration.

    • Use setFCMPushToken(your_token) specifically for FCM token registration. For more information, refer to Registering FCM Token for example usage.
  • Removes the legacy API:

    • Removes setPushToken(value, type) to support injectable push providers. Use the updated APIs listed above instead.

What's New

Important API Changes

Android

  • Removes the following legacy push token registration APIs to enable injectable push providers:
    • setBaiduPushToken(String value)
    • setHuaweiPushToken(String value)

Bug Fixes

  • Fixes an issue that prevented In-App messages from displaying after the app was upgraded.

March 20

What’s New

Android

  • Adds support for setting a custom CleverTapAPI instance to iOS CleverTapUnityManager.
  • Replaces Handler with Timer in the Android plugin for more efficient scheduling.

iOS

  • Supports CleverTap iOS SDK v7.1.1.
  • Adds support for setting a custom CleverTap instance to Android CleverTapUnityPlugin.
  • Adds macro to disable UnityAppController subclass for iOS.

Enhancements

  • Improves variable callback handling for better reliability.

March 17

What's New

  • Adds support for the dismissInAppNotification action to enable smooth dismissal of custom HTML In-App notifications.

Bug Fixes

  • Fixes an issue with device orientation checks for custom In-App notifications to ensure accurate rendering.

❗️

Upgrade Alert

We recommend upgrading to CleverTap React Native 3.4.0 or above if using In-App.

What's New

Android Platform

🚧

Upgrade Help for 3.3.0

If you run into any issues during the upgrade, refer to the troubleshooting guide for step-by-step help.

March 12

Bug Fixes

  • Adds validations to prevent errors caused by null values in campaign objects.

  • Addresses runtime issues affecting WebInbox functionality.

  • Skips WebInbox retries when configuration is not present to prevent unnecessary API calls.

  • Corrects inconsistencies in the custom event payload structure for Web Native Display.

  • Improves session storage validation for WZRK_D with fallback mechanism and error handling.

What's New

Edge-to-Edge Support

Supports edge-to-edge enforcement introduced in Android 15, ensuring proper inset handling for the call screen.

Custom Request ID Support

Adds a new public API overrideRequestId(boolean), accessible via SignedCallInitConfiguration.Builder instance. Set this parameter to true to allow passing a custom requestId during call initiation in the overloaded signedCallInstance.call() method. The Request ID feature enables call grouping and unique identification of all calls within a transaction. You can pass an order ID, a transaction-specific identifier, or any other relevant ID. Additionally, the SDK supports hashes and UUIDs in the requested field, allowing you to hash/encrypt sensitive identifiers before passing them if required. For more information, refer to Configure Request ID (P2P Feature).

Connection Timeout Handling

Introduces a connection timeout mechanism during the call setup phase when a call is answered but not yet ready for voice exchange. If the timeout occurs, the SDK triggers the VoIPCallStatus.CALL_OVER_DUE_TO_NETWORK_DELAY_IN_CONNECTION_SETUP event in the callStatus(SCCallStatusDetails callDetails) callback.

Important Changes

Detailed Call Exceptions

The CallException.ContactNotReachableException has been split into more detailed call-specific exceptions, improving clarity for:

  • Local reporting in the onFailure(callException) callback
  • Remote reporting in the SCEnd system event

Enhancements

Improved Event Reporting

Ensures that the callId parameter is always available within the callStatus(callStatusDetails callback. Since ended call callbacks are reported asynchronously while cleanup runs in the background, there may be cases where callId is unavailable due to premature cleanup. If callStatusDetails.getCallDetails().callId returns Unknown, CleverTap recommends using the callId from the previous callback event for consistency.

Fixes

Audio Routing Issue on Android 15

Resolves an issue where calls defaulted to the loudspeaker upon answering.

Ping Latency Tracking NPE Fix

Fixes an issue that caused an NPE while tracking ping latency drops during an ongoing call, ensuring reliable remote tracking in the SCEnd system event.

Foreground Service Crash on Android 10 and 11

Fixes a RemoteServiceException crash that occurred when a foreground service started processing an incoming call. This issue was caused by a race condition and was reproducible when the initiator placed and immediately canceled the call.

March 11

❗️

Upgrade Alert

We recommend upgrading to CleverTap Android SDK 7.3.1 or above if using In-App.

Important API Changes

  • Updates Huawei Push Integration
    • Updates Huawei Push integration process to improve reliability and simplify setup. If you have integrated CleverTap Huawei Push SDK, you must follow the new steps listed under Huawei Push Integration to ensure continued functionality.
  • Updates Baidu Push Integration
    Updates Baidu Push integration steps for better performance. To ensure compatibility, refer to the new steps listed under Baidu Push Integration.
  • Updates Unified Push Registration
    Removes pushBaiduRegistrationId() and pushHuaweiRegistrationId() methods removed from CleverTapAPI to simplify push registration. Use the appropriate PushType constant to identify the push provider (Huawei or Baidu). For more information about implementation updates, refer to Huawei Push Integration and Baidu Push Integration.

❗️

Critical Update

Migrate to pushRegistrationToken() to ensure Push Notifications continue to function.

Bug Fixes

  • Fixes an issue in CleverTapAPI.getCleverTapID() where a missing listener caused a Null Pointer Exception (NPE).
  • Fixed an issue where device font size settings caused In-App message text to overflow. Messages now resize dynamically for improved layout.

What's new

Important API Changes

  • Updates Huawei Push Integration
    The integration process for Huawei Push has been significantly updated. If you have previously integrated the CleverTap Huawei Push SDK, you must now follow the new steps outlined under CleverTap Huawei Push Integration to ensure continued functionality.
  • Pluggable Huawei Push Integration
    Huawei Push is now available as a pluggable component, providing more flexibility and removing reliance on reflection-based initialization in the core SDK.

πŸ“˜

Public Beta

This feature is released in Public Beta. it is fully functional, and we are actively fine-tuning it based on your feedback to ensure the best experience.

What’s New

  • Introduces the new Expo plugin to integrate the clevertap-react-native SDK in Expo managed workflow apps.
  • Adds support for CleverTap core features in Expo-managed environments.
  • Configures native code for both Android and iOS, so no manual changes are needed.

March 10

What's New

  • Supports preview in custom HTML templates for Web Native Display campaigns, using a post message proxy for seamless preview functionality.

Bug Fixes

  • Fixes an issue where web pop-ups displayed an unintended white background, ensuring a cleaner and consistent visual experience.

What's New

Android Platform

  • Supports Signed Call Android SDK v0.0.7.7, which is compatible with CleverTap Android SDK v7.0.2.
  • Adds SignedCall.isInitialized(), the new public API to retrieve the initialization status.
  • Adds SignedCall.dismissMissedCallNotification(), the new public API to dismiss the missed call notification.

iOS Platform

Supports Signed Call iOS SDK v0.0.9, which is compatible with CleverTap iOS SDK v7.0.2 and higher.

Android and iOS Platform

  • Migrates the bridge to a backward-compatible New Architecture Turbo Module.
  • Compatible with both the Old and the New Architecture.

Enhancements

Android Platform

  • Addresses the limitations related to microphone access during ongoing calls when the user moves the app to the background. Google Play Console prompts you to declare the permission usage and submit a demo video link. For more information, refer to Signed Call Android SDK permission.
  • Enforces the network quality checks during call initiation and reception and captures the network latency.

Bug Fixes

Android Platform

  • Fixes the Notification trampoline restrictions introduced in Android 12 and above. These restrictions block activity launches from the SignedCall.SignedCallOnMissedCallActionClicked callback. The callback is triggered when clicking the missed call CTA.
  • Fixes an issue where the call notification disappears upon clicking the back button on certain devices.

March 06

What's New

  • Introduces priority support for Web Native Display campaigns, allowing better control over message selection and delivery.

Bug Fixes

  • Combines multiple Web Native Display events into a single event with different campaignSource values.

Important API Changes

  • Changes in the structure of CustomEvents payloads and listener keys, requiring modifications in user implementations.

March 05

What's New

  • VAPID Migration and APNS Support
    • Supports Apple Push Notification Service (APNS) in the new soft prompt.
    • Sends prompt configurations on every page refresh.

Bug Fixes

  • Fixes race conditions when notifications.push is called before web push configuration is available.
  • Improves error handling for notification subscriptions.
  • Ensures proper prompt closure when users grant permissions via the bell icon.
  • Enhances prompt rendering logic to handle missing configurations or initialization delays.
  • Improved Web Push Handling
    • Enhances web push notification handling with improved configuration management.
    • Introduces structured methods for setting up and processing soft prompts.

Important API Changes

This update improves stability, simplifies API usage, and enhances push notification reliability.

  • Deprecated notifications.enable API
    • notifications.push API now handles both old and new soft prompts, including the bell icon rendering.
  • Updated notifications.push API
    • Manages the entire web push prompt flow.
    • Ensures correct rendering based on the received web push configuration.
    • Handles race conditions when the SDK is not yet initialized, or the application server key is unavailable.
  • Refactored Notification Handler Methods
    • Adds setupWebPush, processSoftPrompt, parseDisplayArgs, and setNotificationHandlerValues for better modularity.
    • Updates processWebPushConfig, enable, and push methods to improve prompt logic.
    • Improves notification subscription flow and error handling.

March 03

❗️

Upgrade Alert

We recommend upgrading to CleverTap Flutter 3.3.0 or above if using In-App.

What's New

This release brings Android 15 support, enhanced encryption, and updated SDK compatibility for a more secure and optimized experience.

⚠️

Downgrade Advisory

After upgrading to Flutter 3.2.0, avoid downgrading in subsequent app releases. If you face any issue after upgrading to this version, contact the CleverTap Support team for assistance.

Android

What's New

This release introduces key improvements to Android and iOS, including enhanced event tracking and In-App campaign triggers.

Android

  • Supports CleverTap Android SDK v7.1.2.
  • Supports Flutter 3.29 by removing deprecated Embedding v1. If your project uses Embedding v1, update it using the migration guide.
  • Supports hiding the large icon in Android notifications using the wzrk_hide_large_icon key in the payload.

iOS

Android and iOS

  • Supports triggering In-App campaigns based on a combination of recurring and first-time events. For example, trigger a campaign every time the Charged event occurs or the App Launched event occurs for the first time.
  • Supports user-level event log tracking system with the help of the following new APIs:
    • getUserEventLog(): Retrieves specific event details.
    • getUserEventLogCount(): Retrieves the count of times an event occurred.
    • getUserLastVisitTs(): Retrieves the timestamp of a user's most recent app visit.
    • getUserAppLaunchCount(): Retrieves the total number of times a user launched the app.
    • getUserEventLogHistory(): Retrieves the complete event history for the current user.

Important API Changes

The following event tracking APIs previously logged events at theΒ device level, making user-specific tracking inaccurate, especially in multi-user scenarios. They are nowΒ deprecatedΒ in favor of newΒ user-level APIsΒ and will be removed in future versions with prior notice.

  • eventGetDetail(): Use getUserEventLog()instead.
  • eventGetFirstTime(): Use getUserEventLog() instead.
  • eventGetLastTime(): Use getUserEventLog() instead.
  • eventGetOccurrences(): Use getUserEventLogCount() instead.
  • sessionGetPreviousVisitTime(): Use getUserLastVisitTs() instead.
  • sessionGetTotalVisits(): Use getUserAppLaunchCount() instead.
  • getEventHistory(): Use getUserEventLogHistory() instead.