Floxis Maven/Documentation

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#

VersionReleasedArtifactsPrebid MobileGoogle SDKMin Android APILicence
UpcomingNot yet releasedfloxis-sdk, floxis-sdk-nextgen, floxis-sdk-common, floxis-sdk-gam, floxis-sdk-max, floxis-sdk-levelplay; iOS SDK3.4.0Google Mobile Ads 25.5.0; Next-Gen 1.5.024Floxis Android SDK Licence
0.2.02026-10-15floxis-sdk, floxis-sdk-nextgen3.4.0Google Mobile Ads 25.5.0; Next-Gen 1.5.024Floxis Android SDK Licence
0.1.12026-10-15floxis-sdk3.3.4Google Mobile Ads 25.4.023Apache 2.0
0.1.02026-10-15floxis-sdk3.3.4Google Mobile Ads 25.4.023Apache 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#

ArtifactBuilt and tested withCan share an app with
floxis-sdk (AdMob)play-services-ads 25.5.0, Prebid Mobile 3.4.0 and its AdMob adapters 3.4.0floxis-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.0floxis-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.0floxis-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.0every other Floxis artifact
floxis-sdk-levelplay (Unity LevelPlay)LevelPlay mediation-sdk 9.6.1, Prebid Mobile core 3.4.0every other Floxis artifact
floxis-sdk-commonPrebid Mobile 3.4.0Gradle adds it for you; you do not declare it
iOS FloxisSDKRequires 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 that floxis-sdk, floxis-sdk-nextgen, floxis-sdk-gam, floxis-sdk-max and floxis-sdk-levelplay share. Gradle adds it for you. One Floxis.initialize call configures every Floxis artifact in the app, with one seat and region.
  • tech.floxis:floxis-sdk-gam for Google Ad Manager. It renders through Prebid Mobile's GAM integration. Classes: FloxisGamBannerAd, FloxisGamInterstitialAd (display, video, or both) and FloxisGamRewardedAd. 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-max for AppLovin MAX. It works through Prebid's MAX custom network (com.applovin.mediation.adapters.PrebidMaxMediationAdapter). Classes: FloxisMaxBannerAd (320x50 or 300x250), FloxisMaxInterstitialAd and FloxisMaxRewardedAd. If Floxis does not bid, MAX still loads its other networks. Initialise MAX from the Floxis.initialize callback, whatever its status.
  • tech.floxis:floxis-sdk-levelplay for 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 and org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1. You set seat, region and timeoutMs on the network and configId on each instance. Floxis gives you the network key that adds the network to your LevelPlay account. The adapter exposes floxis-sdk-common and Prebid Mobile core 3.4.0 as part of its API, so your code can call TargetingParams without adding Prebid Mobile yourself.
  • iOS SDK, a Swift package with the products FloxisSDK and FloxisSDKCore. It adds Floxis demand to AdMob apps on iOS. Classes: FloxisBannerAd, FloxisInterstitialAd (display, video, or both) and FloxisRewardedAd. It ships an Apple privacy manifest (PrivacyInfo.xcprivacy) that declares tracking (NSPrivacyTracking true) and lists no tracking domains; the SDK privacy and consent guide explains what that means for your app. Floxis.sdkVersion and the X-Floxis-SDK-Version request 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 (2 muted, 1 sound on), and user.ext.impdepth and user.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.
  • impdepth counts 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 drops device.ext from what an app hands it, so the Android artifacts send them in user.ext.floxis.device, and the exchange moves them into device.ext before 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-sdk and floxis-sdk-nextgen now depend on floxis-sdk-common. The public API is unchanged.
  • An app can now combine Floxis artifacts, for example AdMob with MAX. Gradle refuses floxis-sdk-nextgen next to floxis-sdk or floxis-sdk-gam with an error that names the pair, because Google's Next-Gen SDK cannot share an app with play-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-levelplay included, and a 0.2.0 artifact.
  • Full-screen display and video requests now declare the fullscreen position (pos 7).

Fixed#

  • The location consent check now reads IABTCF_gdprApplies directly 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, or tagForChildDirectedTreatment true or false) before each auction. When it is unspecified, the SDK keeps what you set with Targeting.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_String and 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.
  • FloxisGamBannerAd does not refresh itself. Create a new wrapper for each refresh.
  • FloxisMaxBannerAd stops on its own when its AndroidX activity is destroyed, but you call pause() and resume() yourself.
  • LevelPlay delivers custom networks no CCPA or COPPA metadata. Use the IAB keys and TargetingParams.setSubjectToCOPPA instead.
  • The LevelPlay adapter does not read FloxisConfig or Floxis.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#

  1. Move every tech.floxis artifact to the same new version.

  2. Do not add floxis-sdk-common yourself. Your existing exclusiveContent filter with includeGroup("tech.floxis") already covers it. If you use Gradle dependency verification or lock files, refresh them.

  3. To add a second mediation SDK, add its Floxis artifact next to the one you have. Keep the single Floxis.initialize call:

    dependencies {
        implementation("tech.floxis:floxis-sdk:<version>")
        implementation("tech.floxis:floxis-sdk-max:<version>")
    }
  4. For LevelPlay, enter the same seat and region on the Floxis network that your FloxisConfig uses. LevelPlay refuses to load when they differ.

  5. 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.

  6. In a LevelPlay app, you can remove an org.prebid:prebid-mobile-sdk-core dependency you added only to call TargetingParams; the adapter now provides it.

  7. iOS early-access builds: move to Google Mobile Ads 13.8.0 or newer, which the package now requires.

  8. No code changes are needed for floxis-sdk or floxis-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 both

Built and tested with:

  • floxis-sdk: Prebid Mobile 3.4.0, Prebid AdMob adapters 3.4.0, play-services-ads 25.5.0.
  • floxis-sdk-nextgen: Prebid Mobile 3.4.0, Prebid AdMob adapters 3.4.0, ads-mobile-sdk 1.5.0. It excludes play-services-ads.
  • Both: Kotlin stdlib 2.3.0, AndroidX Lifecycle 2.3.1, minimum API 24, app compileSdk 35.

Added#

  • tech.floxis:floxis-sdk-nextgen for apps on Google's Next-Gen Mobile Ads SDK (ads-mobile-sdk 1.5.0 or newer). Classes: FloxisNextGenBannerAd, FloxisNextGenInterstitialAd and FloxisNextGenRewardedAd, with FloxisNextGenLoadCallback, FloxisNextGenBannerListener and FloxisNextGenRequestCustomizer. It uses the same AdMob setup sheet and Custom Events.
    • FloxisNextGenBannerAd takes your BannerAdEventCallback as eventCallback and installs it before the ad loads.
    • It destroys the banner that each refresh replaces.
    • A full-screen ad that finishes loading after cancel() or destroy() is destroyed, not delivered.
  • FloxisInterstitialFormat.DISPLAY_AND_VIDEO: one interstitial auction where display and video bids compete.
  • FloxisVideoOptions(minDurationSeconds, maxDurationSeconds, skippable). Pass it with FloxisInterstitialOptions(video = …) or FloxisRewardedAd.load(…, videoOptions = …).
  • FloxisConfig.shareLocation, default true. 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, and FLX-204 is 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 was DISPLAY.
  • AuctionOutcome.detail now carries Prebid Mobile's own error message. FLX-203 is logged even when debug is 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#

  1. Raise minSdk to 24 and compileSdk to 35. Google Mobile Ads 25.5 needs API 35 for a minified release build.

  2. 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),
    )
  3. 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)
  4. 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, auctionUrl and SDK_VERSION.
  • FloxisConfig with seat, region, timeoutMs (200–10,000 ms, default 1,500), debug, enabled, personalizedAds, testMode and storeUrl.
  • FloxisBannerAd, which refreshes every 30–120 seconds (default 60; 0 turns refresh off).
  • FloxisInterstitialAd (display or video).
  • FloxisRewardedAd (video).
  • FloxisLoadHandle.cancel(), FloxisShowResult and FloxisShowError.
  • FloxisPriceTiers for the AdMob price tiers.
  • Your AdMob child-directed tag is passed to every auction as regs.coppa.
  • npa=1 is sent to AdMob when personalised ads are off.
  • testMode is honoured only in debuggable builds.
  • FLX-xxx log codes under the tag Floxis.
  • 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-xxx lines from adb logcat -s Floxis (Android) or Floxis.shared.onDiagnostic (iOS);
  • the configId of 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.