May 2026

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

📘

Note

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

May 04

Bug Fixes

iOS Push Notifications

  • Push permission dialog never appears: PromptForPushPermission was trying to register the device with Apple's servers (APNs) by calling registerForRemoteNotifications without first invoking requestAuthorizationWithOptions: to request permission from the user. iOS requires explicit authorization before registration; without it, the call is a silent no-op. Fixed by first calling requestAuthorizationWithOptions: to show the Allow/Don't Allow dialog, then registering with APNs only after the user grants permission.
  • Push permission status always shows UNKNOWN: On app launch,GetPushPermissionStatus was initialized to Unknown at startup and never queried the real iOS state. This meant the the app does not register permission even if the user had already granted permission on a previous launch. Now queries getNotificationSettingsWithCompletionHandler: at init so the returned status is accurate immediately.
  • APNs token never reached CleverTap (dashboard showed "Unsubscribed"): When iOS generates a push token for a device, it delivers it via a specific AppDelegate method: application:didRegisterForRemoteNotificationsWithDeviceToken:. The plugin had a SetPushToken function to forward the token to CleverTap, but nothing called it when the token arrived. Added a swizzle on application:didRegisterForRemoteNotificationsWithDeviceToken: in the AppDelegate (the same interception pattern used for other push callbacks) to forward the token directly to CleverTap. This fix also injects the method entirely if it is missing in Unreal Engine 5.x.
  • Race condition on reinstalls: If permission was already granted on a previous install, iOS sends the APNs token almost immediately at app launch, before CleverTap's SDK has subscribed to listen for it, silently losing the token. Fixed by re-calling registerForRemoteNotifications after subscribing, forcing iOS to re-deliver the current token even though registration is already done.
  • Silent registration failures: Added a swizzle on application:didFailToRegisterForRemoteNotificationsWithError: so any APNs registration failure is logged clearly instead of disappearing silently.
  • Notification swizzles failing when delegate not yet set: EnsurePushNotificationMonitoring read UNUserNotificationCenter.delegate to determine which class to swizzle. If the delegate was nil at init time, the willPresentNotification and didReceiveNotificationResponse swizzles would silently fail. Now falls back to AppDelegateClass when nil.

What's New

Android

  • Android CleverTap SDK upgraded from 7.4.0 to 8.0.0.

iOS

  • iOS CleverTap SDK upgraded from 7.2.0 to 7.6.0.
  • Added a new bIOSAutoRequestPushPermission config flag. Defaults to false, preserving existing behavior where permission must be requested manually via the PromptForPushPermission call. This flag, when set to true, the app automatically requests push notification permission on first launch.

CleverTap Ask AI Widget (CSP-Safe)