January 2025

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

πŸ“˜

Note

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

January 31

Enhancements

  • Improved integration and SDK initialization for Android and iOS.

Android

  • Supports CleverTap Android SDK v7.1.2.
  • Adds missing bindings for Android GetUnreadInboxMessages and GetInboxMessageForId.

iOS

  • Supports CleverTap iOS SDK v7.1.0.
  • Adds OnCleverTapPushNotificationPermissionStatusCallback callback for iOS.
  • Implements CleverTapInAppNotificationShowCallback callback on 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 App Launched event occurs or the Charged event occurs for the first time.
  • Supports Custom Code Templates.
  • Adds CleverTapInboxMessage model and new methods: GetAllInboxMessagesParsed, GetUnreadInboxMessagesParsed, and GetInboxMessageForIdParsed.
  • Adds UserEventLog methods: GetUserEventLog, GetUserEventLogCount, GetUserAppLaunchCount, GetUserEventLogHistory, and GetUserLastVisitTs.
  • Deprecates the following methods: EventGetDetail, EventGetFirstTime, EventGetLastTime, EventGetOccurrences, UserGetEventHistory, UserGetPreviousVisitTime, and UserGetTotalVisits.
  • Deprecates Product Config and Feature Flags methods.

Bug Fixes

  • Fixes iOS Push Permission Response Received message.

January 28

What's New

  • Safari Web Push Support
    • Supports Web Push notifications on Safari browsers using Voluntary Application Server Identification (VAPID).
    • Enables Web Push on Safari iOS Browsers.

Enhancements

  • Replaces hard-coded browser version checks with API-based logic for Web Push, ensuring compatibility across all browsers.
  • Adds a sticky header to Web Inbox for improved navigation, making it easier to close the inbox while scrolling through message content.

Bug Fixes

  • Fixes an issue in the Web Inbox where unread message counts were inaccurate for mobile users, ensuring only opened messages are marked as read.
  • Resolves Web Inbox badge update issues in Single Page Applications (SPAs) by implementing a timeout-based mechanism to handle route changes more reliably, including native browser navigation.

January 21

What's New

  • Supports triggering In-App campaigns based on a combination of recurring and first-time events. For example, trigger a campaign every time the App Launched event occurs or the Charged 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 the most recent app visit by a user.
    • getUserAppLaunchCount(): Retrieves the total number of times a user launched the app.
    • getUserEventLogHistory(): Retrieves the complete event history for the current user.
  • Adds inAppNotificationDidShow to the CleverTapInAppNotificationDelegate.

Important API Changes

The following event tracking APIs previously tracked events at the device level, which made it difficult to maintain accurate user-specific event logs, especially in multi-user scenarios. These APIs have now been deprecated in favor of new user-specific APIs. The deprecated methods will be removed in future versions with a prior notice:

  • eventGetDetail(): Use getUserEventLog()instead.
  • eventGetFirstTime(): Use getUserEventLog() instead.
  • eventGetLastTime(): Use getUserEventLog() instead.
  • eventGetOccurrences(): Use getUserEventLogCount() instead.
  • userGetPreviousVisitTime(): Use getUserLastVisitTs() instead.
  • userGetTotalVisits(): Use getUserAppLaunchCount() instead.
  • userGetEventHistory(): Use getUserEventLogHistory() instead.

πŸ“˜

Hotfix Release

This hotfix release fixes the critical issue in CleverTap Android SDK 7.1.0, 7.2.0, and 7.2.1.

Bug Fixes

  • Fixes an issue that prevents the Notification Clicked event from being raised.

January 16

❗️

Upgrade Alert

We strongly recommend upgrading to the CleverTap Android SDK 7.2.2 version because it contains fixes for critical issues in 7.1.0, 7.2.0, and 7.2.1 versions.

Bug Fixes

  • Fixes the ClassCastException error that occurs during server-side In-App delivery.

January 14

Bug Fixes

  • Improves click tracking for Web Push Notifications: Separates event tracking from the redirection URL, ensuring silent event logging without affecting the user’s redirection flow.
  • Resolves Web Inbox initialization failure: Adds a retry mechanism to check for the Inbox element and initializes it when available.

January 7

What's New

Android

  • Supports Signed Call Android SDK v0.0.7.6, compatible with CleverTap Android SDK 6.2.1.
  • CallStyle Notifications on Android 12 and Above:
    • Replaces regular call notifications with CallStyle notifications for incoming, outgoing, and ongoing calls. These notifications are given top priority in the notification tray. The update adheres to the Android's non-dismissible notifications standards, as listed under Android 14 Behavior Changes.
  • Call Quality Control Enhancements
    • Introduces network quality checks at both the initiator and receiver ends to provide optimal call quality.
      • Initiator SIde: Network latency checks before call processing. Returns a 5004 error code within the SignedCallResponse promise object if latency exceeds the benchmark.
      • Receiver Side: Network quality checks before showing the incoming call screen. A quality score (ranging from -1 to 100) is provided via the onNetworkQualityResponse(int score) callback. This allows the app to decide whether to proceed with or decline the call. For more information, refer to Receiver Side.
    • New parameters in initProperties object for initialization:
      • fcmProcessingMode and fcmProcessingNotification: The SDK supports the following two modes for processing FCM calls: FcmProcessingMode.foreground and FcmProcessingMode.background. These modes control how the SDK handles incoming calls, whether in the background or foreground service, depending on whether the app is actively running or is running in the background. The FcmProcessingMode.background is the default mode. for more details on overriding the default mode, refer to Configure FCM Processing Mode.
      • callScreenOnSignalling: A Boolean property to control when the outgoing call screen appears relative to the signaling process. By default, the SDK immediately displays the outgoing call screen upon a call request and performs the validations in the background. For more information, refer to Control Call Screen Display Timing.
    • New Call Events in SignedCall.SignedCallOnCallStatusChanged handler:
      • CallEvent.AppInitiatedDeclinedDueToNetworkQuality: Enables identification of cases where the app declines a call based on the network quality score provided through the onNetworkQualityResponse(int score) callback.
      • CallEvent.EndedDueToLocalNetworkLoss: Enables identification of call disconnection caused by network loss on the initiator end.
      • CallEvent.EndedDueToRemoteNetworkLoss: Enables detection of call disconnections caused by network loss on the receiver end.

        πŸ“˜

        Note

        The CallEvent.EndedDueToLocalNetworkLoss and CallEvent.EndedDueToRemoteNetworkLoss events are reported alongside the existing CallEvent.Ended event to maintain backward compatibility.

    iOS

Android and iOS

  • Remote Context Configuration for Call Screen:
    Adds support for setting a remoteContext parameter within callProperties object during call initiation, enabling custom context for the receiver's call screen.

Enhancements

Android

  • Reduces delay in heads-up behavior for call notifications when exiting the call screen.
  • Adds a fallback to the regular notifications template for the call notifications when using the CallStyle template in case the full-screen intent permission is not granted.
  • Prevents call notification popups when the SDK requests microphone permissions after call acceptance.
  • Local branding configured during SDK initialization is now interoperable with the remote branding configured via the CleverTap dashboard, allowing overriding of the specific branding properties without requiring all properties to be set at once.

Bug Fixes

iOS

  • Fixes sa_family_t declaration issue for Xcode 16 compatibility.
  • Resolves EXC_BAD_ACCESS error that occurs when clicking the mute button on the CallKit screen (observed only in debugging mode).
  • Fixes synchronization issues for Mute and Speaker controllers between CallKit and native screens.

Behavior Changes

Android

  • Optimizes Outgoing Call Screen Launch
    • Launches immediately without waiting for signaling confirmation.
    • Introduces a countdown ProgressBar around the cancel button until signaling is completed.
    • Customizable cancelCountdownColorparameter within the overrideDefaultBranding. The default color is yellow (#F5FA55). For more information, refer to overrideDefaultBranding (All Platforms).

❗️

Upgrade Alert

We strongly recommend upgrading to the CleverTap Android SDK 7.2.2 version because it contains fixes for critical issues in 7.1.0, 7.2.0, and 7.2.1 versions.

What's New

🚧

Downgrade Advisory

After upgrading to Android SDK v7.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.

What's New

  • Supports Android 15. For more information, refer to Android 15.
  • Updates the minimum supported Android SDK version to API level 21 (Android 5.0).

What's New

  • Supports Android 15. For more information, refer to Android 15.
  • Updates the minimum supported Android SDK version to API level 21 (Android 5.0).

What's New

  • Supports Android 15. For more information, refer to Android 15.
  • Updates the minimum supported Android SDK version to API level 21 (Android 5.0).

January 2

What's New

  • Enhanced Call Disconnection Details
    • The callStatus(SCCallStatusDetails callDetails) callback now provides detailed reasons for call disconnection through the following new events:
      • VoIPCallStatus.CALL_OVER_DUE_TO_LOCAL_NETWORK_LOSS: Triggered when the call disconnects due to network loss at the initiator's end.
      • VoIPCallStatus.CALL_OVER_DUE_TO_REMOTE_NETWORK_LOSS: Triggered when the call disconnects due to network loss at the receiver's end.

        πŸ“˜

        Note

        The above events are reported alongside the existing VoIPCallStatus.CALL_OVER event for seamless integration with older implementation.

  • Customized Branding
    • Local and remote branding settings are now interoperable. Use the SignedCallScreenBranding.builder class to customize specific branding properties locally while leveraging remote branding settings configured on the CleverTap dashboard. For more information on setting the local branding, refer to Set Local Branding for Call Screen.

Enhancements

  • SCEnd System Event Updates
    • Adds a new boolean property hangup_initiator to indicate which party initiated the hangup.
    • Captures the cause of disconnection for over call-status events through the reason property, with the following possible values:
      • network_lost: Indicates that the hangup occurred due to the network loss on the call initiator's end (corresponds to VoIPCallStatus.CALL_OVER_DUE_TO_LOCAL_NETWORK_LOSS).
      • network_dropped: Indicates that the hangup occurred due to the network loss on the receiver's end (corresponds to VoIPCallStatus.CALL_OVER_DUE_TO_REMOTE_NETWORK_LOSS).
      • user_initiated: Indicates that the hangup was initiated by the user (corresponds to VoIPCallStatus.CALL_OVER).

Bug Fixes

  • Resolves an issue where the channel property in SCEnd system events was incorrectly recorded as socket at the initiator end instead of fcm.