Floxis SDK release notes#
This page lists every Floxis SDK release, what changed in it, the SDK versions it is built and tested with, and the steps to upgrade. The newest release is at the top.
All Floxis Android artifacts are published together under one version number, from https://maven.floxis.tech/releases (group tech.floxis). A published version is never replaced. From the upcoming release, the iOS SDK carries the same version number as the Android release it ships with.
Each entry is grouped as Added, Changed, Fixed and Removed. A change that needs action from you is listed under Migrating.
Versions at a glance#
| Version | Released | Artifacts | Prebid Mobile | Google SDK | Min Android API | Licence |
|---|---|---|---|---|---|---|
| Upcoming | Not yet released | floxis-sdk, floxis-sdk-nextgen, floxis-sdk-common, floxis-sdk-gam, floxis-sdk-max, floxis-sdk-levelplay; iOS SDK | 3.4.0 | Google Mobile Ads 25.5.0; Next-Gen 1.5.0 | 24 | Floxis Android SDK Licence |
| 0.2.0 | 2026-10-15 | floxis-sdk, floxis-sdk-nextgen | 3.4.0 | Google Mobile Ads 25.5.0; Next-Gen 1.5.0 | 24 | Floxis Android SDK Licence |
| 0.1.1 | 2026-10-15 | floxis-sdk | 3.3.4 | Google Mobile Ads 25.4.0 | 23 | Apache 2.0 |
| 0.1.0 | 2026-10-15 | floxis-sdk | 3.3.4 | Google Mobile Ads 25.4.0 | 23 | Apache 2.0 |
To check which version an app runs, read Floxis.SDK_VERSION on Android, Floxis.sdkVersion on iOS, or the adapter version LevelPlay shows for the Floxis network.
Upcoming release#
Availability: available from the next release; contact your Floxis account manager for early access. It will be version 0.2.1, on Android and iOS. Nothing on this list is on maven.floxis.tech yet, so the coordinates below will not resolve until the release is out. Until then, use 0.2.0.
Built and tested with#
| Artifact | Built and tested with | Can share an app with |
|---|---|---|
floxis-sdk (AdMob) | play-services-ads 25.5.0, Prebid Mobile 3.4.0 and its AdMob adapters 3.4.0 | floxis-sdk-gam, floxis-sdk-max, floxis-sdk-levelplay |
floxis-sdk-nextgen (AdMob, Next-Gen SDK) | ads-mobile-sdk 1.5.0, Prebid Mobile 3.4.0 and its AdMob adapters 3.4.0 | floxis-sdk-max, floxis-sdk-levelplay |
floxis-sdk-gam (Google Ad Manager) | play-services-ads 25.5.0, Prebid Mobile 3.4.0 and its GAM event handlers 3.4.0 | floxis-sdk, floxis-sdk-max, floxis-sdk-levelplay |
floxis-sdk-max (AppLovin MAX) | AppLovin SDK 13.1.0, Prebid Mobile 3.4.0 and its MAX adapters 3.4.0 | every other Floxis artifact |
floxis-sdk-levelplay (Unity LevelPlay) | LevelPlay mediation-sdk 9.6.1, Prebid Mobile core 3.4.0 | every other Floxis artifact |
floxis-sdk-common | Prebid Mobile 3.4.0 | Gradle adds it for you; you do not declare it |
iOS FloxisSDK | Requires Prebid Mobile iOS 3.4.0, Google Mobile Ads iOS 13.8.0 or newer (below 14), iOS 15 or newer and Swift 5.9 | — |
Every Android artifact needs minimum API 24. Apps that use floxis-sdk, floxis-sdk-nextgen or floxis-sdk-gam compile against API 35 (compileSdk = 35).
Added: new integrations#
tech.floxis:floxis-sdk-common. This is the runtime thatfloxis-sdk,floxis-sdk-nextgen,floxis-sdk-gam,floxis-sdk-maxandfloxis-sdk-levelplayshare. Gradle adds it for you. OneFloxis.initializecall configures every Floxis artifact in the app, with one seat and region.tech.floxis:floxis-sdk-gamfor Google Ad Manager. It renders through Prebid Mobile's GAM integration. Classes:FloxisGamBannerAd,FloxisGamInterstitialAd(display, video, or both) andFloxisGamRewardedAd. Each wrapper serves one request, so create a new one for each load. When Floxis is off or skipped, the wrapper still makes a plain GAM request.tech.floxis:floxis-sdk-maxfor AppLovin MAX. It works through Prebid's MAX custom network (com.applovin.mediation.adapters.PrebidMaxMediationAdapter). Classes:FloxisMaxBannerAd(320x50 or 300x250),FloxisMaxInterstitialAdandFloxisMaxRewardedAd. If Floxis does not bid, MAX still loads its other networks. Initialise MAX from theFloxis.initializecallback, whatever its status.tech.floxis:floxis-sdk-levelplayfor Unity LevelPlay. It is a LevelPlay custom adapter,com.ironsource.adapters.custom.floxis.FloxisCustomAdapter, with banner, interstitial (display) and rewarded video. Your app adds LevelPlay 9.6.1 andorg.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1. You setseat,regionandtimeoutMson the network andconfigIdon each instance. Floxis gives you the network key that adds the network to your LevelPlay account. The adapter exposesfloxis-sdk-commonand Prebid Mobile core 3.4.0 as part of its API, so your code can callTargetingParamswithout adding Prebid Mobile yourself.- iOS SDK, a Swift package with the products
FloxisSDKandFloxisSDKCore. It adds Floxis demand to AdMob apps on iOS. Classes:FloxisBannerAd,FloxisInterstitialAd(display, video, or both) andFloxisRewardedAd. It ships an Apple privacy manifest (PrivacyInfo.xcprivacy) that declares tracking (NSPrivacyTrackingtrue) and lists no tracking domains; the SDK privacy and consent guide explains what that means for your app.Floxis.sdkVersionand theX-Floxis-SDK-Versionrequest header report 0.2.1. There is no install URL yet; your account manager can arrange early access.
Added: device and session signals#
- Every Android artifact and the iOS SDK add device and session signals to an auction: battery level, charging, battery saver (Low Power Mode on iOS), dark mode, ringer mode (Android only), the sound-muted state behind video
playbackmethod(2muted,1sound on), anduser.ext.impdepthanduser.ext.sessionduration. They are added only when all of these hold:- personalised ads are on (on LevelPlay, LevelPlay consent has not been refused);
- GDPR does not apply, or the TC string grants Purpose 1;
- the US privacy string records no opt-out of sale;
- no applicable GPP US section (national, a state, or US privacy) records an opt-out of sale, sharing or targeted advertising.
impdepthcounts only the auctions that carried the signals. On Android, every Floxis artifact in the app shares one session, which starts with its first such auction; more than 30 minutes without one starts a new session. On iOS, the session lasts as long as the app's process.- Buyers receive the device fields in
device.ext. iOS sends them there directly. Prebid Mobile on Android dropsdevice.extfrom what an app hands it, so the Android artifacts send them inuser.ext.floxis.device, and the exchange moves them intodevice.extbefore buyers see the request.
Added: AdMob and Next-Gen#
- Full-screen video requests now carry an end-card companion (320x480 portrait, 480x320 landscape), so buyers can bid with end cards.
Changed#
floxis-sdkandfloxis-sdk-nextgennow depend onfloxis-sdk-common. The public API is unchanged.- An app can now combine Floxis artifacts, for example AdMob with MAX. Gradle refuses
floxis-sdk-nextgennext tofloxis-sdkorfloxis-sdk-gamwith an error that names the pair, because Google's Next-Gen SDK cannot share an app withplay-services-ads. - If Floxis artifacts in one app are on different versions, Gradle raises the older ones to the newest version. That covers every artifact,
floxis-sdk-levelplayincluded, and a 0.2.0 artifact. - Full-screen display and video requests now declare the fullscreen position (
pos7).
Fixed#
- The location consent check now reads
IABTCF_gdprAppliesdirectly as well. This covers CMPs that store it as text ("1") instead of a number.
Removed#
- Nothing.
Privacy in the upcoming release#
- COPPA. Floxis does not block child-directed traffic. It passes your app's child-directed flag to the auction as
regs.coppa:- AdMob, Next-Gen and Google Ad Manager: the SDK copies Google's child-directed tag before each auction, as 0.2.0 does.
- MAX and LevelPlay: call
TargetingParams.setSubjectToCOPPA(true)on Prebid Mobile yourself. Neither SDK hands Floxis a child-directed flag. - iOS: the SDK copies Google Mobile Ads' child-directed setting (
ageRestrictedTreatment = .child, ortagForChildDirectedTreatmenttrue or false) before each auction. When it is unspecified, the SDK keeps what you set withTargeting.shared.subjectToCOPPA.
- TCF v2, US Privacy and GPP. Prebid Mobile forwards them from the standard IAB keys that your CMP writes.
- What the device-signal check reads. On every SDK, its US check reads both
IABUSPrivacy_Stringand the GPP keys (IABGPP_HDR_GppString,IABGPP_GppSID). The LevelPlay adapter runs no auction at all when that check fails. - Location. Android and iOS send no device location for a child-directed request, under GDPR without TCF special feature 1, or after a US privacy or GPP US opt-out. The LevelPlay adapter never sends location.
- At the exchange. For limited-tracking and US opt-out requests, the exchange removes user IDs, the full IP address, the advertising ID type (
device.ext.ifa_type) and the device and session signals before buyers see them.
The SDK privacy and consent guide has the full rules.
Known limitations#
- iOS auction results have no response ID. iOS sessions have no 30-minute idle reset.
FloxisGamBannerAddoes not refresh itself. Create a new wrapper for each refresh.FloxisMaxBannerAdstops on its own when its AndroidX activity is destroyed, but you callpause()andresume()yourself.- LevelPlay delivers custom networks no CCPA or COPPA metadata. Use the IAB keys and
TargetingParams.setSubjectToCOPPAinstead. - The LevelPlay adapter does not read
FloxisConfigorFloxis.setPersonalizedAds. It takes consent from LevelPlay's own consent setting and the IAB keys, so when a user withdraws consent, tell LevelPlay as well.
Migrating to the upcoming release#
Move every
tech.floxisartifact to the same new version.Do not add
floxis-sdk-commonyourself. Your existingexclusiveContentfilter withincludeGroup("tech.floxis")already covers it. If you use Gradle dependency verification or lock files, refresh them.To add a second mediation SDK, add its Floxis artifact next to the one you have. Keep the single
Floxis.initializecall:dependencies { implementation("tech.floxis:floxis-sdk:<version>") implementation("tech.floxis:floxis-sdk-max:<version>") }For LevelPlay, enter the same seat and region on the Floxis network that your
FloxisConfiguses. LevelPlay refuses to load when they differ.Review your Google Play Data safety form and App Store privacy labels for the new device and session signals. The SDK privacy and consent guide lists them.
In a LevelPlay app, you can remove an
org.prebid:prebid-mobile-sdk-coredependency you added only to callTargetingParams; the adapter now provides it.iOS early-access builds: move to Google Mobile Ads 13.8.0 or newer, which the package now requires.
No code changes are needed for
floxis-sdkorfloxis-sdk-nextgen. R8 needs no rules of your own: every artifact ships its consumer rules.
0.2.0 — 2026-10-15#
implementation("tech.floxis:floxis-sdk:0.2.0") // Google Mobile Ads (play-services-ads)
implementation("tech.floxis:floxis-sdk-nextgen:0.2.0") // Google Next-Gen Mobile Ads SDK; never add bothBuilt and tested with:
floxis-sdk: Prebid Mobile 3.4.0, Prebid AdMob adapters 3.4.0,play-services-ads25.5.0.floxis-sdk-nextgen: Prebid Mobile 3.4.0, Prebid AdMob adapters 3.4.0,ads-mobile-sdk1.5.0. It excludesplay-services-ads.- Both: Kotlin stdlib 2.3.0, AndroidX Lifecycle 2.3.1, minimum API 24, app
compileSdk35.
Added#
tech.floxis:floxis-sdk-nextgenfor apps on Google's Next-Gen Mobile Ads SDK (ads-mobile-sdk1.5.0 or newer). Classes:FloxisNextGenBannerAd,FloxisNextGenInterstitialAdandFloxisNextGenRewardedAd, withFloxisNextGenLoadCallback,FloxisNextGenBannerListenerandFloxisNextGenRequestCustomizer. It uses the same AdMob setup sheet and Custom Events.FloxisNextGenBannerAdtakes yourBannerAdEventCallbackaseventCallbackand installs it before the ad loads.- It destroys the banner that each refresh replaces.
- A full-screen ad that finishes loading after
cancel()ordestroy()is destroyed, not delivered.
FloxisInterstitialFormat.DISPLAY_AND_VIDEO: one interstitial auction where display and video bids compete.FloxisVideoOptions(minDurationSeconds, maxDurationSeconds, skippable). Pass it withFloxisInterstitialOptions(video = …)orFloxisRewardedAd.load(…, videoOptions = …).FloxisConfig.shareLocation, defaulttrue. It sends the device's last known location only when the app already holds a location permission. It never sends one for a child-directed request, under GDPR without TCF special feature 1, or after a US privacy opt-out.- The SDK declines a rewarded video bid whose VAST has no click-through and no companion end card, because Prebid Mobile 3.4.0 crashes on it. The auction ends
NO_BID, AdMob loads as usual, andFLX-204is logged.
Changed#
- Prebid Mobile 3.3.4 → 3.4.0. This fixes the rewarded end-card close button and the missing call-to-action.
- Google Mobile Ads 25.4.0 → 25.5.0.
- Minimum Android API 23 → 24. Apps now compile against API 35.
- The default interstitial format is now
DISPLAY_AND_VIDEO; it wasDISPLAY. AuctionOutcome.detailnow carries Prebid Mobile's own error message.FLX-203is logged even whendebugis off.- Licence: from 0.2.0 the SDK is under the Floxis Android SDK Licence published at
maven.floxis.tech. Releases are R8-minified binaries. The javadoc jar and signatures are still published. The Apache 2.0 grant for 0.1.0 and 0.1.1 stands.
Fixed#
- The bundled Prebid scripts are now put in place even when the app started Prebid Mobile itself, and each file is replaced atomically.
Removed#
- The sources jar is no longer published.
Migrating from 0.1.x#
Raise
minSdkto 24 andcompileSdkto 35. Google Mobile Ads 25.5 needs API 35 for a minified release build.Interstitials now ask for display and video together. AdMob uses the same Custom Event class for both. To keep display only, pass the format:
FloxisInterstitialAd.load( context = this, adMobAdUnitId = "ca-app-pub-XXXX/INTERSTITIAL", configId = "level_end_interstitial", callback = callback, options = FloxisInterstitialOptions(FloxisInterstitialFormat.DISPLAY), )Location is shared by default when your app already has location permission. Declare it in your Play Console Data safety form, or turn it off:
FloxisConfig(seat = "YOUR_SEAT", region = "us-e", shareLocation = false)Read the Floxis Android SDK Licence before you ship 0.2.0.
The 0.2.0 API only adds to 0.1.x. Existing calls compile unchanged.
0.1.1 — 2026-10-15#
implementation("tech.floxis:floxis-sdk:0.1.1"). Built and tested with Prebid Mobile 3.3.4, Prebid AdMob adapters 3.3.4 and play-services-ads 25.4.0. Minimum API 23. Apache 2.0.
Added#
- The Prebid OM SDK and MRAID scripts are bundled inside the SDK and put in place when Floxis starts Prebid Mobile, so Prebid Mobile does not download them from a public CDN at run time. (0.2.0 also covers apps that start Prebid Mobile themselves.)
Changed, Fixed, Removed#
- Nothing else. The public API is the same as 0.1.0.
0.1.0 — 2026-10-15#
implementation("tech.floxis:floxis-sdk:0.1.0"). Built and tested with Prebid Mobile 3.3.4, Prebid AdMob adapters 3.3.4 and play-services-ads 25.4.0. Minimum API 23. Apache 2.0.
Added#
- The first release, for AdMob apps on
play-services-ads. Before each AdMob load it runs one Floxis auction. The winning price tier (hb_pb) reaches AdMob, and the matching Prebid Custom Event renders the ad. Floxis.initialize,setEnabled,isEnabled,setPersonalizedAds,isInitialized,auctionUrlandSDK_VERSION.FloxisConfigwithseat,region,timeoutMs(200–10,000 ms, default 1,500),debug,enabled,personalizedAds,testModeandstoreUrl.FloxisBannerAd, which refreshes every 30–120 seconds (default 60;0turns refresh off).FloxisInterstitialAd(display or video).FloxisRewardedAd(video).FloxisLoadHandle.cancel(),FloxisShowResultandFloxisShowError.FloxisPriceTiersfor the AdMob price tiers.- Your AdMob child-directed tag is passed to every auction as
regs.coppa. npa=1is sent to AdMob when personalised ads are off.testModeis honoured only in debuggable builds.FLX-xxxlog codes under the tagFloxis.- Consumer R8 rules, so your app needs no rules of its own.
Getting help with an upgrade#
Send your account manager:
- the SDK version;
- the artifacts in your build;
- the
FLX-xxxlines fromadb logcat -s Floxis(Android) orFloxis.shared.onDiagnostic(iOS); - the
configIdof the affected placement.
Related guides: In-app SDK (Android), In-app SDK (iOS, AdMob), In-app SDK (Google Ad Manager), In-app SDK (AppLovin MAX), In-app SDK (Unity LevelPlay), SDK privacy and consent, SDK testing and troubleshooting, SDK API reference and the Floxis ads.txt, app-ads.txt and sellers.json Guide.