NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
A Flutter plugin that integrates Audienzz Mobile Advertising SDK for easy implementation of advanced ad solutions
Last release 3 days ago
05 Oct 2026
Release timing varies
gaps range from 2 weeks to 4 months
Nearly every release is documented
notes for 23 of 23 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
23 releases · first in 2025
One column per month.
If a remote banner's ad config has no refreshTimeSeconds , the banner no longer refreshes on a timer (0.3.0 refreshed every 10 seconds).
Changed
refreshTimeSeconds, the banner no longer refreshes on a timer (0.3.0 refreshed every 10 seconds).Fixed
AudienzzBanner now resizes to fit each ad it receives, instead of staying 250 px tall.RemoteBannerAd on Android now reports onAdSizeChanged, as iOS already did.New
AudienzzBanner.onAdSizeChanged, AudienzzBannerController.adSize, plus BannerAd.adSize and adSizeListenable.AudienzzBanner(sizeToCreative: false) keeps the slot at a fixed height for apps that handle layout themselves.AdWidget now sizes itself to the ad inside lists, columns and scroll views.resizeToPrebidCreative (off by default): when GAM shows a smaller Prebid ad inside a larger slot, the banner shrinks to the ad's real size.refreshTimeSeconds is missing or null, the banner now has no periodic refresh (same as
0) instead of the 10-second fallback introduced in 0.3.0. The interval is sent to native as an
explicit 0, which both pinned native releases treat as "no periodic refresh". Explicit backend
values are unchanged. Page-impression and foreground/interstitial recovery reloads still apply.AudienzzBanner now sizes to the delivered creative for every placement. In 0.3.0 only
adaptive placements adopted the delivered height; a fixed multi-size placement (e.g. 300x250 +
320x50) stayed at placeholderHeight (default 250), cutting off taller creatives and leaving a
gap under shorter ones. The slot now resizes on every delivery, including refreshes that serve a
different size and iOS size updates after onAdLoaded. A slow size lookup can no longer override
a newer delivery.AudienzzBanner.onAdSizeChanged(banner, size) fires on the
first delivery and whenever the size changes (before the matching onAdLoaded), and
AudienzzBannerController.adSize exposes the current size. It is null before delivery, after
the slot releases its ad and once the banner is disposed; listeners are notified of every change,
including that reset (deferred to the end of the frame when it happens during a build).AudienzzBanner(sizeToCreative: false) keeps the slot at placeholderHeight for
publishers whose own wrapper owns the layout; the size is still reported.placeholderHeight is unchanged as the reservation before the first creative; set it per
placement (e.g. 50 for a top banner). It is not a maximum: maximum heights are controlled by
the placement's ad configuration sizes.RemoteBannerAd sizing, on both platforms. The Android plugin now sends onAdSizeChanged
before onAdLoaded whenever a delivery's size changes, as iOS already did — previously an
Android RemoteBannerAd never received it. New BannerAd.adSize and adSizeListenable expose
the delivered size; it resets to null on dispose (listeners are notified, at the end of the
frame when that happens during a build), so a reused ad starts clean. AdWidget in an open-height parent (ListView, Column, scroll view)
reserves the first configured size and then takes the delivered size; a parent that fixes the
size keeps control, unchanged. Diagnostics log AUDZ banner size / AUDZ banner loaded for
every banner.config.resizeToPrebidCreative (default off). When GAM renders a Prebid
creative inside a larger GAM creative (a 300x250 bid in a 300x600 creative), the banner is cut
to the winning bid's hb_size once the Prebid creative rendered (GAM's Prebid app event).
Only shrinks; a creative GAM served itself keeps GAM's size; every refresh still requests all
configured sizes. Implemented in both plugins of this package; the native SDKs do not read it.~> 0.4.3 and com.audienzz:sdk:0.3.3.
(The Android plugin in this package changed; the native SDK did not.)Updated native SDKs to Android 0.3.3 and iOS 0.4.3.
Please see quick integration guide : https://github.com/audienzz/audienzz-flutter-sdk#quick-integration-remote-config--pageimpression
Remote banner interval fallback is now 10 seconds when backend refreshTimeSeconds is missing/null.
Backend values remain authoritative; 0 disables periodic refresh. The pinned Android 0.3.3 and
iOS 0.4.3 releases count eligible time only, preserve the interval across pauses, and honor positive
backend intervals without the old 30-second clamp.
Requires AudienzziOSSDK ~> 0.4.3 and com.audienzz:sdk:0.3.3.
Examples now resolve the published native releases by default; local native builds require an explicit override. The iOS example resolves the native SDK through CocoaPods trunk.
InterstitialAd video defaults now match the native interstitial: protocols {vast2_0}
(was empty), placement Placement.interstitial (was inBanner), playbackMethods
{autoPlaySoundOff} (was {enterSoundOff}); iOS also sends plcmnt interstitial.
Breaking — interstitial formats and API frameworks are backend-controlled. Removed the
adFormat and apiParameters arguments from InterstitialAd and RemoteInterstitialAd. A
remote interstitial forwards its ad config's prebidConfig.format / prebidConfig.apis with each
accepted load and the native SDK validates them (defaults bannerAndVideo, [3, 5, 6, 7]); a
hand-built interstitial always uses the defaults. Both plugins now build one ad unit for every
format (the minimum size percentages always apply) and advertise MP4 only. See
docs/interstitial-capabilities.md.
Restore callback-based error handling for interstitial load() by default, including remote
configuration failures. Existing unawaited calls no longer acquire an unhandled error future.
Add load(throwOnFailure: true) for explicit awaited readiness/error handling.
InterstitialPresentationController.preload() retains its throwing contract.
A default load() future completing does not prove readiness; use isReady or onAdLoaded.
Reload on screen resume: recreate a banner when its route/tab becomes active again for a fresh creative and page impression. Report the active route w
onScreenResumed(routeKey).setSmartRefreshV2Enabled(enabled) — force the smart-refresh v2 directional viewport gate on/off, overriding backend config.setBlankOnScreenReload(enabled) — blank a banner's slot during a screen-resume reload.Manual banner pause/resume is now honored on iOS. pauseAutoRefresh() / resumeAutoRefresh() (and the all-ads variants) previously no-opped on iOS — the
pauseAutoRefresh() / resumeAutoRefresh() (and the all-ads variants) previously no-opped on iOS — the visibility poll would auto-resume within half a second. They now suppress the poll while paused, so a same-route overlay (dialog / OverlayEntry) that the native geometry check can't see correctly pauses refresh. Android already honored these.bannerParameters / videoParameters (API frameworks, protocols, placement, playback, bitrate, duration) were assigned into an uninitialized object and silently discarded. They now reach the bid request.maxduration = 1s (a copy-paste assigned maxDuration twice); minDuration is now set correctly, so SSPs stop no-bidding the slot.impOrtbConfig. The multisize workaround used to replace the publisher config (dropping deals / floors / first-party data); the sizes are now merged into it. Interstitial video requests also carry API / bitrate / duration signals.schain is optional).onAdFailedToLoad.showAdWithoutView no longer crashes with IllegalStateException (it replied twice on a failed show).rootViewController resolution no longer force-crashes scene-based / add-to-app hosts.AudienzzStickyAdWrapper no longer crashes when used outside a scrollable.getUserExt() and external-ID decoding no longer throw on the platform map type.show() / getPlatformAdSize() now throw a real StateError (instead of a release-stripped assert), and a missing reward is logged rather than thrown inside the channel handler.AudienzziOSSDK ~> 0.2.7 (Google Mobile Ads SDK 13, min iOS 15)com.audienzz:sdk 0.1.7pauseAutoRefresh() / resumeAutoRefresh() (and the all-ads variants) on iOS: a manual pause — e.g. when a same-route overlay covers the banner, which the native geometry poll can't detect — is no longer auto-resumed by the visibility poll within half a second (Android already honored these)bannerParameters / videoParameters (API frameworks, protocols, placement, playback, bitrate, duration) were assigned into an uninitialized object and silently discarded — they now reach the bid requestmaxduration = 1s (a copy-paste set maxDuration twice); minDuration is now set correctlyimpOrtbConfig with the multisize workaround — the sizes are now merged into the publisher config instead of replacing it; interstitial video requests also carry API/bitrate/duration signalsschain is optional)onAdFailedToLoadshowAdWithoutView replying twice on a failed show (raised IllegalStateException); failed full-screen shows are now surfaced instead of silently reported as success, with a single-use guard against a second showStickyAdWrapper crashing when used outside a scrollablegetUserExt() and external-ID decoding throwing on the platform map typerootViewController resolution no longer force-crashes scene-based / add-to-app hostsFixes several iOS-only issues that caused ads to fill on Android but rarely on iOS:
Fixes several iOS-only issues that caused ads to fill on Android but rarely on iOS:
0.1.8 and run flutter pub get (+ pod install). No native SDK update needed.uniqueIds key but the native SDK reads uids, so user.ext.eids went out with no IDs on iOS (Android was unaffected). EIDs now serialize correctly, restoring iOS demand/fill for publishers using external identityrootViewController on the GMA banner before load, which could cause failed loads and unrecorded impressions/clicksisLazyLoad defaulting to true when the argument was absent (now false, matching the Dart default) — an accidental lazy load never fetches inside a Flutter platform view on iOSasi/sid string values were interpolated unquoted, producing malformed JSONpauseAllAutoRefresh() / resumeAllAutoRefresh() — pause and resume auto-refresh across all loaded banner ads with one call. Use it when you present a f
New
pauseAllAutoRefresh() / resumeAllAutoRefresh() — pause and resume auto-refresh across all loaded banner ads with one call. Use it when you present a full-screen surface the SDK can't detect on its own (a custom overlay, a native modal, a web view) so off-screen ads stop refreshing while hidden.OverlayEntry or dialog on the same route now pauses its auto-refresh automatically, via hit-testing, with no publisher code required. This complements the existing scroll-, route-, and lifecycle-based visibility handling.Docs
pauseAllAutoRefresh() / resumeAllAutoRefresh() to pause and resume auto-refresh across all loaded banner ads (e.g. when showing a full-screen overlay the SDK can't see)OverlayEntry/dialog on the same route now pauses its auto-refresh without any publisher codeiOS: upgraded to AudienzziOSSDK 0.2.6 — no more PrebidMobile fork.
iOS: upgraded to AudienzziOSSDK 0.2.6 — no more PrebidMobile fork.
isLazyLoad: true without smartRefresh: true on Flutter (off-screen ads would never load); lazy load is disabled with a log message for that combinationSmartRefresh is now handled by the SDK. AdWidget automatically pauses/resumes auto-refresh based on scroll visibility, route occlusion, and app lifecy
SmartRefresh is now handled by the SDK. AdWidget automatically pauses/resumes auto-refresh based on scroll visibility, route occlusion, and app lifecycle for any BannerAd with smartRefresh: true — no per-screen visibility code needed. You can delete your own pause/resume logic.
iOS upgraded to AudienzziOSSDK 0.2.5 (Google Mobile Ads 13, min iOS 15). Enables native setBridgeTargeting / updateGlobalTargeting and backend sticky-ad config.
Ads muted by default.
⚠️ iOS integration
AudienzziOSSDK 0.2.5 requires Audienzz's PrebidMobile fork — pin it in your Podfile, and set your app's iOS target to ≥ 15:
pod 'PrebidMobile', :git => 'https://github.com/audienzz/audienzz-ios-prebid-sdk-fork.git', :tag => '3.3.1-audienzz.1'
pod 'PrebidMobileGAMEventHandlers', :git => 'https://github.com/audienzz/audienzz-ios-prebid-sdk-fork.git', :tag => '3.3.1-audienzz.1'
Run flutter clean after changing pod pins.
Updated native dependencies — iOS bridge now requires AudienzziOSSDK 0.2.2+, Android bridge requires Audienzz SDK 0.1.3+
Fix initial delay and improve performance.
Fix issue with isLazyLoad is being true by default
Lazy loading — demand fetch is deferred until the ad approaches the viewport (isLazyLoad, default true)
New Features
Lazy loading — demand fetch is deferred until the ad approaches the viewport (isLazyLoad, default true)
Smart refresh — auto-refresh pauses when the ad is off-screen and resumes with stale-aware timing when it returns (smartRefresh, default false; always on for RemoteBannerAd)
Prefetch distance — configurable margin that triggers the demand fetch before the ad fully enters the viewport (prefetchMargin, default 200 dp/pt)
Bug Fixes
Fixed infinite loading when lazy loading is enabled
Fixed iOS build failure on Xcode 16 (PrebidMobile pinned to ~> 3.0.0)
Fixed static/dynamic hybrid linking conflict between Google-Mobile-Ads-SDK and PrebidMobile
Dependencies
iOS: AudienzziOSSDK 0.2.1
Android: com.audienzz:sdk 0.1.1
Lazy loading — demand fetch is deferred until the ad approaches the viewport (isLazyLoad, default true)
New Features
Bug Fixes
Dependencies
Fix crash on network error during initialization
Bump native dependencies: iOS SDK 0.1.7, Android SDK 0.0.13
Added remote configuration feature
Update Audienzz native dependencies to latest version
Add method to set Schain object
Update Audienzz native dependencies to latest version
Hotfix for multisize feature on iOS platform
Update Audienzz native dependencies to latest version
Remove deprecated parameters 'appContent', 'keyword' and 'keywords'
Initial release of the sdk wrapper. Supports Banner, Interstitial and Rewarded ad formats.
Your coding agent can read these notes before it upgrades. Set up the MCP server →