LionAds V2 to V3 Migration Guide
LionAds V2 to V3 Migration Guide
This guide walks you through migrating a project from LionAds V2 (CPM Floor Ads Bidding) to LionAds V3 (BidSmart). It applies to projects on LionSuite-Ads 3.13.x–3.14.x upgrading to 4.0.0 or later.
What changed in V3
From LionAds API side, calls are same that are defined here.
The main changes are,
Bidding model. CPM Floor (a list of high→low CPM ad units) is replaced by BidSmart (a single bid-floor ad unit whose floor is auto-tuned at runtime).
Remote config source. Previously V2 fetches remote configs only from Growthbook but now any backend can be used as remote configs source.
If your project never enabled CPM Floor before, then you can follow the main docs here for BidSmart.
Step 1 — Update the package
Pull the new package version through the Lion registry / Package Manager. After import, your game code should compile without changes; only direct references to the removed V2 types listed above will break.
Step 2 — Configure ad units in the Settings Manager
Open Window → Lion Studios → Settings Manager → Ads and fill in:
Enable Lion Ads — ON.
Standard Ad Unit IDs (Android & iOS) — interstitial, rewarded, banner. These are the IDs that serve when BidSmart is off or hasn't received its config yet.
BidSmart Ad Unit IDs (Android & iOS) — interstitial and rewarded only. Use the BidSmart-specific IDs from your Studio Manager. Don't reuse your standard IDs here; BidSmart needs its own ad units to function.
Enable BidSmart — leave OFF until Step 3 is done. BidSmart only activates after it receives a remote config anyway, but it's clearer to flip the toggle once everything is wired.
Banner settings (Position, Color, Disable Adaptive, Disable Show Immediate) — unchanged from V2.
If Google Ads Manager is installed as a mediation adapter, its IDs still go in AppLovin → Integration Manager, exactly as in V2.
Step 3 — Wire up the BidSmart remote config
V3 expects you to deliver a LionAdsRemoteConfig payload at runtime. More info on how to setup bidsmart configs is defined here.
Step 4 — Clean up V2 leftovers
Once Step 3 is in place, remove the V2 plumbing so it can't drift back into use:
Delete
Assets/LionStudios/Resources/LionAdsTestRCSettings.json(and its.meta). V3 doesn't read it.Retire the old GrowthBook feature flag
<3LC>_lion_ads_settings. V3 doesn't consult it. (If your project still uses GrowthBook for other features, leave that alone — the change here is only that ads no longer pull from it.)Expect a diff in
LionAdsSettings.assetbecause the CPM Floor arrays no longer serialise. Commit it.
Step 5 — Update any custom code
Skip this step if your project only calls the static LionAds.* methods.
If you held references to V2-only members on LionAds, they're gone:
LionAds.LastShownDateTime— Track it yourself in your callers if you need it for cooldowns.LionAds.OnRewardedStatusChanged(static event) — pollLionAds.IsRewardedReadyfor UI button gating.
Step 6 — Test
Before promoting the migration to release:
BidSmart disabled — set the RC payload to
Enabled: false, Confirm ads load andbid_smartglobal property isfalse.First session, BidSmart enabled — clear app data so the cached config is empty. Standard ads should serve until
SetRemoteConfigBidSmart is called and starts on the next ad load after that.Warm start, BidSmart enabled — restart. The cached config should apply during init so BidSmart can serve before your RC fetch completes.
CanInterstitialReplaceRewarded— toggle it in the RC payload and confirm the swap behaviour.Single-platform IDs — confirm the SDK initialises cleanly when only one platform's IDs are populated (a frequent V3 follow-up fix).
Manual MAX init — if you initialise MAX yourself, verify banner ads still appear; this path was tightened in
3.15.1.Manual Adjust init — if Adjust is initialised by your code, confirm
LionCore.AdjustInitialized();is still called right afterAdjust.InitSdk(). Unchanged from V2 but still required for attribution and WhoAmI.
Congratulation your project is setup now according to new LionAds.
Advance
Last updated
Was this helpful?