All notable changes to the CloudX iOS SDK will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
No unreleased changes
- Magnite Adapter — New
CloudXMagniteAdapter(Banner, MREC, Interstitial, Rewarded). Install:pod 'CloudXMagniteAdapter', '~> 3.2.0'. - Richer dashboard telemetry — Full telemetry overhaul. More robust event capture, new events, and increased observability.
- Meta Reels & Native Ads — Meta Reels (9:16 vertical video) and other Meta native ad formats are now supported via
CLXPublisherNative. This release supports Meta native ads only; additional bidder support is coming in a future release. - Per-Adapter Initialization Timeout — SDK initialization now supports per-adapter timeouts for more predictable startup behavior.
- Xcode 26 Compatibility — Resolved a build warning when compiling with Xcode 26.
- Unity Ads Adapter — Fixed initialization, privacy consent forwarding, rewarded callbacks, and bid token error handling for improved reliability across regions.
- Crash Fix — Fixed a crash that could occur during concurrent ad event tracking on background threads
- Deferred Banner Display — Fixed an issue where banners loaded before being added to the view hierarchy would fail to render when attached later. The load-then-show pattern now works correctly.
- Privacy Consent for Unity Ads — Unity Ads adapter now supports GDPR and CCPA privacy consent forwarding
isAdReadySupport — Fullscreen ad adapters now supportisAdReadyfor reliably querying ad availability before calling show
- Banner Visibility Accuracy — Fixed an issue where setting
banner.hidden = YESdid not pause ad refresh. Hidden banners could continue loading ads without being impression-eligible, potentially impacting CPMs. - Improved Dependency Compatibility — Widened third-party SDK version constraints (VungleAds, FBAudienceNetwork, InMobiSDK) to prevent CocoaPods dependency conflicts when integrating alongside other mediation SDKs
- Fullscreen Ad Reliability — Fixed an issue where ad lifecycle callbacks could be silently lost in rare scenarios
- iOS 16 Crash Fix — Fixed a crash on iOS 16 devices related to session tracking
- Server-Driven Location Controls — Location coordinate sharing in bid requests is now controlled via the CloudX dashboard (account-scoped). No SDK code changes required for publishers.
- Improved Bid Request Data — Content language is now included in bid requests for improved ad targeting
- Unity Ads Adapter — Unity Ads adapter now available for banner, interstitial, and rewarded ads
- Unity Ads Initialization — Fixed an issue where the Unity Ads adapter could fail to initialize correctly in some configurations
- Manual Privacy API — New
setHasUserConsent:andsetDoNotSell:methods for publisher-controlled privacy consent - Mintegral Adapter — Mintegral adapter now available as a standard release
- Improved Error Visibility — Increased error visibility for no-bid scenarios, making it easier to diagnose fill rate issues
- Fullscreen Ad Loading — Fixed an issue where loading a fullscreen ad while another was showing could silently fail
- Fullscreen Failure Callbacks — Fixed missing ad unit ID in fullscreen ad failure callbacks
- Renderer Impression Tracking — Fixed viewability tracking accuracy in CloudX Renderer
- Mintegral SDK — Upgraded from 8.0.7 to 8.0.8
- Internal improvements and stability enhancements
- Adapter Init Error Tracking - SDK now sends error events when adapter initialization fails
- Win/Loss Payload Parity - Aligned iOS win/loss notification payloads with Android
- Duplicate didHideAd Callback - Fixed fullscreen ads firing didHideAd twice on close
- Adapter Code Resolution - Fixed adaptercode resolution for SDK >= 2.1 after SSP ext.cloudx migration
- Thread Safety - Fixed thread safety crash in bid token dictionary construction
- Double Revenue Callback - Fixed CloudX renderer test rewarded ads firing revenue callback twice
- Silent Failures - Audited and fixed silent failures across core SDK
- Adapter Creation Errors - Real adapter creation errors now propagate through bid waterfall
createBanner(adUnitId:viewController:)— usecreateBanner(adUnitId:)instead. The SDK now resolves the presenting view controller automatically.createMREC(adUnitId:viewController:)— usecreateMREC(adUnitId:)instead. The SDK now resolves the presenting view controller automatically.
- JIT ViewController Resolution - Banner/MREC ads now resolve the presenting view controller at use time instead of storing a weak reference
- Removed Fullscreen Force-Close Timer - Removed the timer-based force-close mechanism for fullscreen ads
- Adapter Rewrites - InMobi, Vungle, and Mintegral adapters fully rewritten
- Removed Dead Code - Cleaned up dead database code, endpoint config, A/B test code, and non-deterministic tests
- Fixed adapter xcframework builds failing with "duplicate interface definition" when CloudXCore is a dynamic framework dependency (added SKIP_INSTALL=YES to CloudXCore podspec)
- Removed dead ENABLE_BITCODE=NO settings from all adapter Podfiles and build scripts (bitcode was removed by Apple in Xcode 14)
This release replaces placement names with Ad Unit IDs from the CloudX dashboard. Update your createBannerWithAdUnitId:, createMRECWithAdUnitId:, createInterstitialWithAdUnitId:, and createRewardedWithAdUnitId: calls to use the ad unit ID instead of a placement name.
- Rewarded ads with
createRewardedWithAdUnitId:delegate:andCLXRewardedDelegate - InMobi adapter (SDK 11.1) with support for banner, MREC, interstitial, and rewarded ads
CLXAd.networkPlacementproperty for network-specific placement ID
- Renamed
placementparameter toadUnitIdincreateBannerWithAdUnitId:,createMRECWithAdUnitId:,createInterstitialWithAdUnitId:,createRewardedWithAdUnitId: - Renamed
CLXAd.placementtoadUnitId - Renamed
CLXAd.bidderNametonetworkName - Renamed
CLXErrorCodeInvalidPlacementtoCLXErrorCodeInvalidAdUnit - Changed
bannerAdView:didFailWithError:to include ad unit ID in error - Removed
testModeparameter frominitializeSDKWithAppKey:completion:- test mode is now server-controlled via dashboard
- Meta Audience Network SDK updated from 6.17.0 to 6.21.0
- Vungle SDK updated from 7.4.2 to 7.6.0
- Fixed IFA (Identifier for Advertisers) collection
- Fixed country/geo-targeting data collection
- Banner Refresh Retry - Banners now automatically retry loading after failure when hidden
- App Extension Compatibility - SDK now works correctly in App Extensions (no UIApplication calls)
- Rewarded Delegate Callbacks - Fixed callback ordering bug
- Symbol Collisions - All category methods now prefixed with
clx_to prevent conflicts
- CloudXCore now distributed as Dynamic Framework - Enables crash symbolication for SDK issues
- Visual Debugger Button - New debugging tool for development and QA
- High-ROI Key-Value Targeting Examples - Enhanced demo apps with targeting signal examples
- Corrected vendored_frameworks paths in podspecs
Initial release of the CloudX iOS SDK with support for banner, MREC, and interstitial ads.