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
andGetInboxMessageForId
.
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
, andGetInboxMessageForIdParsed
. - Adds UserEventLog methods:
GetUserEventLog
,GetUserEventLogCount
,GetUserAppLaunchCount
,GetUserEventLogHistory
, andGetUserLastVisitTs
. - Deprecates the following methods:
EventGetDetail
,EventGetFirstTime
,EventGetLastTime
,EventGetOccurrences
,UserGetEventHistory
,UserGetPreviousVisitTime
, andUserGetTotalVisits
. - 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 theCleverTapInAppNotificationDelegate
.
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()
: UsegetUserEventLog()
instead.eventGetFirstTime()
: UsegetUserEventLog()
instead.eventGetLastTime()
: UsegetUserEventLog()
instead.eventGetOccurrences()
: UsegetUserEventLogCount()
instead.userGetPreviousVisitTime()
: UsegetUserLastVisitTs()
instead.userGetTotalVisits()
: UsegetUserAppLaunchCount()
instead.userGetEventHistory()
: UsegetUserEventLogHistory()
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 theSignedCallResponse
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.
- Initiator SIde: Network latency checks before call processing. Returns a
- New parameters in
initProperties
object for initialization:fcmProcessingMode
andfcmProcessingNotification
: The SDK supports the following two modes for processing FCM calls:FcmProcessingMode.foreground
andFcmProcessingMode.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. TheFcmProcessingMode.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 theonNetworkQualityResponse(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
andCallEvent.EndedDueToRemoteNetworkLoss
events are reported alongside the existingCallEvent.Ended
event to maintain backward compatibility.
iOS- Supports Signed Call iOS SDK v0.0.9, compatible with CleverTap iOS SDK v7.0.2 and higher.
- Introduces network quality checks at both the initiator and receiver ends to provide optimal call quality.
Android and iOS
- Remote Context Configuration for Call Screen:
Adds support for setting aremoteContext
parameter withincallProperties
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
cancelCountdownColor
parameter within theoverrideDefaultBranding
. The default color is yellow (#F5FA55). For more information, refer tooverrideDefaultBranding
(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
- Supports Android 15. For more information, refer to Android 15.
- Updates the minimum supported Android SDK version to API level 21 (Android 5.0).
- Enhances the encryption algorithm for PII data, aligning it with OWASP guidelines. The encryption key is securely backed up using Android Key Store. This encryption is supported for API level 23 (Android 6.0 and above).
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.
- The
- 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.
- Local and remote branding settings are now interoperable. Use the
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 toVoIPCallStatus.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 toVoIPCallStatus.CALL_OVER_DUE_TO_REMOTE_NETWORK_LOSS
).user_initiated
: Indicates that the hangup was initiated by the user (corresponds toVoIPCallStatus.CALL_OVER
).
- Adds a new boolean property
Bug Fixes
- Resolves an issue where the
channel
property in SCEnd system events was incorrectly recorded assocket
at the initiator end instead offcm
.
Updated 14 days ago