February 2024

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

πŸ“˜

Note

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

February 28

πŸ“˜

Note

For developers that have BACKGROUND_SYNC (Android Pull Notification) enabled in their older apps and are now upgrading to CleverTap Android SDK v6.1.0 or CleverTap Android SDK v6.1.1, please add the below code snippet to your AndroidManifest.xml to avoid ClassNotFoundException error.

< service
	android: name = "com.clevertap.android.sdk.pushnotification.amp.CTBackgroundJobService"
	android: exported = "false"
	android: enabled = "false"
	tools: ignore = "MissingClass" />

Bug Fixes

  • Fixed an incorrect endpoint issue in the network handshake case.
  • Fixed an issue in client-side In-Apps with regard to frequency limits.

February 26

New Features

  • Android Platform
  • iOS Platform
  • Android and iOS Platform
    • Adds support for client-side In-Apps.
    • Adds new API: clearInAppResources(boolean). It deletes images and GIFs preloaded for In-Apps in CS mode.
    • Adds new API: fetchInApps(). It explicitly fetches In-Apps from the server.

Bug Fixes

  • Android Platform
    • Fixes a bug where JavaScript does not work for custom-html InApp header/footer templates.
    • Fixes a Null Pointer Exception (NPE) related to App Inbox APIs.
    • Fixes a ClassCastException in defineVariable API of Product Experiences.
    • Fixes a resource name conflict with the firebase library in fcm_fallback_notification_channel_label.
    • Fixes a StrictMode Violation spawning from ctVariables.init().
    • Removes the use of lossy conversions leading to an issue in Push Templates.
    • Handles an edge case related to the migration of encryption level when the local database is out of memory.
  • iOS Platform
    • Fixes a bug where some In-Apps were not being dismissed.

February 22

  • Added privacy manifests for CleverTap-iOS-SDK and CleverTapLocation.
  • Fixed a crash due to out-of-bounds in NSLocale implementation.

🚧

Warning

We have identified a critical bug in Android SDK 6.1.0 occurring because of an incorrect endpoint while performing the network handshake. We recommend skipping it and upgrading to Android SDK 6.1.1 instead.

New Features

  • Supports Android 14. It is compliant with Android 14 requirements. For more information, refer to the Android documentation.
  • Upgrades the Android Gradle Plugin (AGP) to v8.2.2 for building the SDK and adds related consumer pro guard rules.
  • Deprecates Xiaomi's public methods as we sunset the Xiaomi SDK. For more information, refer to the Xiaomi document.
  • Adds accessibility IDs for UI components of SDK.
  • Migrates JobScheduler to WorkManager for Pull Notifications.

Breaking API Changes

  • CTPushAmpWorker breaks custom WorkerFactory implementation of an Application. If you are using a custom WorkFactory implementation of WorkManager, ensure you:
    • Correctly handle workers defined by CleverTap SDK and other third-party dependencies.
    • Return null from createWorker() for any unknown workerClassName. For more information, refer to the Customizing WorkManager β€” fundamentals blog.

Bug Fixes

  • Fixes a rare activity destroyed race condition causing crashes in In-App.
  • Fixes a potential Application Not Responding (ANR) issue arising from a race condition during SDK initialization in a multi-threaded environment.

  • Supports Android 14. It is compliant with Android 14 requirements. For more information, refer to the Android documentation.
  • Upgrades the Android Gradle Plugin (AGP) to 8.2.2 for building the SDK and adds related consumer pro guard rules.

  • Supports Android 14. It is compliant with Android 14 requirements. For more information, refer to the Android documentation.
  • Upgrades the Android Gradle Plugin (AGP) to 8.2.2 for building the SDK and adds related consumer pro guard rules.

  • Supports Android 14. It is compliant with Android 14 requirements. For more information, refer to the Android documentation.
  • Upgrades the Android Gradle Plugin (AGP) to 8.2.2 for building the SDK and adds related consumer pro guard rules.

February 16

What's New

  • Android Platform
  • iOS Platform
  • Android and iOS Platform
    • Adds support for client-side In-Apps.
    • Adds new API: clearInAppResources(boolean). It deletes images and GIFs preloaded for In-Apps in CS mode.
    • Adds new API: fetchInApps() . It explicitly fetches In-Apps from the server.

Bug Fixes

  • Android Platform
    • Fixes a bug where JavaScript does not work for custom HTML in In-App header/footer templates.
    • Fixes an NPE related to App Inbox APIs.
    • Fixes a ClassCastException in defineVariable API of Product Experiences.
    • Fixes a resource name conflict with the firebase library in fcm_fallback_notification_channel_label.
    • Fixes a StrictMode Violation spawning from ctVariables.init().
    • Removes the use of lossy conversions leading to an issue in Push Templates.
    • Handles an edge case related to the migration of encryption level when the local database is out of memory.
  • iOS Platform
    • Fixes a bug where some In-Apps were not being dismissed.

February 8

What's New

  • Android Platform
    • Supports Signed Call Android SDK v0.0.5 which is compatible with CleverTap Android SDK v5.2.2.
    • Introduces the new properties: initiatorImage and receiverImage in the MissedCallActionClickResult instance. It is provided through the SignedCall.addListener(SignedCall.SignedCallOnMissedCallActionClicked,(result:MissedCallActionClickResult) => {}) listener.
    • Introduces a new public API: SignedCallOnCallStatusListener.register(applicationContext). This API allows your application to receive VoIP call events through the SignedCall.SignedCallOnCallStatusChanged listener even when the app is in a killed state. Refer to the integration documentation for more details.
  • iOS Platform

Breaking Changes

  • Android and iOS Platform
    • The SignedCall.SignedCallOnCallStatusChanged listener provides an instance of the CallEventResult class instead of the CallEvent class. Refer to the integration documentation for details on usage.
  • iOS Platform
    • iOS deployment target version has been raised to iOS 12.

Behavior Changes

  • Android Platform
    • Handles UX issues during network loss or switch by invalidating the socket reconnection and establishing an active connection to process the call-related actions.
    • Modifies the SDK's behavior when the Notifications Settings are disabled for the application. Previously, if the app's notifications were disabled, the device rang on incoming calls without displaying the call screen in the background and killed states. In this version, the SDK now declines incoming calls when the notifications are disabled. If the notification settings are later enabled, the SDK resumes processing calls instead of automatically declining them.
  • Android and iOS Platform
    • The SignedCall.addListener(SignedCall.SignedCallOnCallStatusChanged,(result:CallEventResult) => {}) listener will now provide updates in the call state to both the initiator and receiver of the call. Previously, it was exposed only to the initiator of the call.

Bug Fixes

  • Android Platform
    • Fixes multiple outgoing call requests initiated simultaneously through multiple calls of SignedCall.call(receiverCuid, callContext, callProperties). The SDK now processes only one call at a time while rejecting other requests with a failure exception.
    • Addresses an IllegalStateException that occurs while prompting the user with poor or bad network conditions on the call screen.
  • Android and iOS Platform
    • Addresses an infinite Connecting state issue on the call screen triggered by CUIDs longer than 15 characters. In this version, the SDK extends support to CUIDs ranging from 5 to 50 characters.

February 1

What's New

Bug Fixes

  • Web Platform
    • Fixes #213: Invalid error in case of event structure.