May 2026
We are excited to share the May SDK changelog for our product!
NoteClick each SDK header to view the corresponding GitHub repository for release details.
May 04
Bug Fixes
iOS Push Notifications
- Push permission dialog never appears:
PromptForPushPermissionwas trying to register the device with Apple's servers (APNs) by callingregisterForRemoteNotificationswithout first invokingrequestAuthorizationWithOptions:to request permission from the user. iOS requires explicit authorization before registration; without it, the call is a silent no-op. Fixed by first callingrequestAuthorizationWithOptions: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,
GetPushPermissionStatuswas initialized toUnknownat 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 queriesgetNotificationSettingsWithCompletionHandler: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 aSetPushTokenfunction to forward the token to CleverTap, but nothing called it when the token arrived. Added a swizzle onapplication: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
registerForRemoteNotificationsafter 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:
EnsurePushNotificationMonitoringreadUNUserNotificationCenter.delegateto determine which class to swizzle. If the delegate was nil at init time, thewillPresentNotificationanddidReceiveNotificationResponseswizzles would silently fail. Now falls back toAppDelegateClasswhen 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
bIOSAutoRequestPushPermissionconfig flag. Defaults tofalse, preserving existing behavior where permission must be requested manually via thePromptForPushPermissioncall. This flag, when set totrue, the app automatically requests push notification permission on first launch.
Updated about 16 hours ago
