Skip to main content

Migration Guide from LevelPlay to XMediator (Unity)

This guide will help you migrate your Unity project from ironSource LevelPlay SDK to XMediator SDK for Banner, Interstitial, and Rewarded ads. It covers API method comparisons, key differences, and event/listener mappings for each ad format.

Initialize the SDK Comparison

OperationLevelPlayXMediator
SDK InitializationLevelPlay.Init(appKey,legacyAdFormats, "UserId");XMediatorAds.startWith(appKey:"appKey"initSettings:InitSettings(...))
Set User IDUserProperties(userId: "user-id")
Set Test ModeInitSettings(test: true)
Verbose LoggingInitSettings(verbose: true)
Set Extra ParamsInitSettings(userProperties: UserProperties(customProperties: ...))

For official documentation:


API Method Comparison

OperationLevelPlayXMediator
Create BannerbannerAd = new LevelPlayBannerAd(adUnitId, size, position);XMediatorAds.Banner.Create("<placement-id>", size, position)
Sizesize = LevelPlayAdSize.size = BannerAds.Size.
Positionposition = LevelPlayBannerPosition.position = BannerAds.Position.
Load BannerbannerAd.LoadAd();Load start when banner is created, optionally manually refresh banner Ad calling XMediatorAds.Banner.Load("<placement-id>");
Show BannerbannerAd.ShowAd();XMediatorAds.Banner.Show("<placement-id>")
Hide BannerbannerAd.HideAd();XMediatorAds.Banner.Hide("<placement-id>")
Destroy BannerbannerAd.DestroyAd();Remove listener or view
Set Ad SpaceNot availableXMediatorAds.Banner.SetAdSpace("<placement-id>", "banner-ad-space")

Key Differences

FeatureLevelPlayXMediator
Ad Unit IDYesPlacement ID
Ad SpaceNoYes (for analytics/tracking)
Auto RefreshYes (configurable)Yes (admin tool, default enabled)
Auto RetryNo (manual)Yes (exponential backoff)
Manual RefreshYesYes
Destroy/RemoveExplicitRemove listener or view

Callback Comparison

EventLevelPlayXMediator
LoadedbannerAd.OnAdLoaded += BannerOnAdLoadedEvent;XMediatorAds.Banner.OnLoaded += (placementId, result) => {}
Load FailedbannerAd.OnAdLoadFailed += BannerOnAdLoadFailedEvent;No explicit, handled by SDK
ClickedbannerAd.OnAdClicked += BannerOnAdClickedEvent;XMediatorAds.Banner.OnClicked += placementId => {}
DisplayedbannerAd.OnAdDisplayed += BannerOnAdDisplayedEvent;XMediatorAds.Banner.OnImpression += (placementId, impressionData) => {}
HiddenbannerAd.OnAdHidden += BannerOnAdHiddenEvent;

For official documentation:


Interstitial Ads

API Method Comparison

OperationLevelPlayXMediator
CreateinterstitialAd = new LevelPlayInterstitialAd("<ad-unit-id>");
LoadinterstitialAd.loadAd()XMediatorAds.Interstitial.Load("<placement-id>")
ShowinterstitialAd.showAd() or interstitialAd.ShowAd(placementName: "<placement-name>")XMediatorAds.Interstitial.ShowFromAdSpace("<placement-id>") or ShowFromAdSpace("<placement-id>", "interstitial-ad-space")
Is ReadyinterstitialAd.IsAdReady()XMediatorAds.Interstitial.IsReady() or IsReady("<placement-id>")

Key Differences

FeatureLevelPlayXMediator
Auto LoadNoYes (after dismiss/fail)
Auto RetryNo (manual)Yes (exponential backoff)
Ad SpaceNoYes
Destroy/RemoveExplicitRemove listener

Callback Comparison

EventLevelPlayXMediator
LoadedinterstitialAd.OnAdLoaded += InterstitialOnAdLoadedEvent;XMediatorAds.Interstitial.OnLoaded += (placementId, result) => {}
Load FailedinterstitialAd.OnAdLoadFailed += InterstitialOnAdLoadFailedEvent;No explicit, handled by SDK
DisplayedinterstitialAd.OnAdDisplayed += InterstitialOnAdDisplayedEvent;XMediatorAds.Interstitial.OnShowed += placementId => {}
ClickedinterstitialAd.OnAdClicked += InterstitialOnAdClickedEvent;XMediatorAds.Interstitial.OnClicked += placementId => {}
HiddeninterstitialAd.OnAdClosed += InterstitialOnAdClosedEvent;XMediatorAds.Interstitial.OnDismissed += placementId => {}
Failed to ShowinterstitialAd.OnAdDisplayFailed += InterstitialOnAdDisplayFailedEvent;XMediatorAds.Interstitial.OnFailedToShow += (placementId, error) => {}
ImpressionOnAdDisplayedEventXMediatorAds.Interstitial.OnImpression += (placementId, impressionData) => {}

For official documentation:


Rewarded Ads

API Method Comparison

OperationLevelPlayXMediator
CreateLevelPlayRewardedAd rewardedAd = new LevelPlayRewardedAd("<ad-unit-id>");
LoadrewardedAd.loadAd()XMediatorAds.Rewarded.Load(placementId)
ShowrewardedAd.showAd() or rewardedAd.ShowAd(placementName: "<placement-name>")XMediatorAds.Rewarded.Show(placementId) or ShowFromAdSpace(placementId, "rewarded-ad-space")
Is ReadyrewardedAd.IsAdReady()XMediatorAds.Rewarded.IsReady() or IsReady(placementId)

Key Differences

FeatureLevelPlayXMediator
Reward CallbackOnAdReceivedRewardEventOnEarnedReward
Auto LoadNoYes (after dismiss/fail)
Auto RetryNo (manual)Yes (exponential backoff)
Ad SpaceNoYes
Destroy/RemoveExplicitRemove listener

Callback Comparison

EventLevelPlayXMediator
LoadedrewardedAd.OnAdLoaded += RewardedOnAdLoadedEvent;XMediatorAds.Rewarded.OnLoaded += (placementId, result) => {}
Load FailedrewardedAd.OnAdLoadFailed += RewardedOnAdLoadFailedEvent;No explicit, handled by SDK
DisplayedrewardedAd.OnAdDisplayed += RewardedOnAdDisplayedEvent;XMediatorAds.Rewarded.OnShowed += (placementId) => {}
ClickedrewardedAd.OnAdClicked += RewardedOnAdClickedEventXMediatorAds.Rewarded.OnClicked += (placementId) => {}
HiddenrewardedAd.OnAdClose += RewardedOnAdCloseEventXMediatorAds.Rewarded.OnDismissed += (placementId) => {}
Failed to ShowrewardedAd.OnAdDisplayFailed += RewardedOnAdDisplayFailedEventXMediatorAds.Rewarded.OnFailedToShow += (placementId, error) => {}
ImpressionrewardedAd.OnAdDisplayedEvent += RewardedOnAdImpressionEventXMediatorAds.Rewarded.OnImpression += (placementId, impressionData) => {}
RewardedrewardedAd.OnRewarded += RewardedOnAdRewardedEventXMediatorAds.Rewarded.OnEarnedReward += (placementId) => {}

For official documentation:


Additional Notes

  • XMediator SDK auto-loads and retries ads after dismiss/fail (no manual retry logic needed).
  • Ad Space is available for analytics/tracking in XMediator.
  • Remove listeners to clean up ads in XMediator; explicit destroy is not needed.
  • Use the official documentation for the latest updates and best practices.