Ads
This package simplifies showing ads from Max SDK.
It automatically handles:
- loading the ads
- sending required Lion Analytics Ad events
⚠️ |
Do not call Lion Analytics’ Ad events if you use Lion Ads, or they will be sent twice. |
Setup
Everything should already be setup if you previously ran the Setup Wizard. This section is for verification and troubleshooting if needed.
1. Check ad settings
- Open LionStudios→Settings Manager → Ads in the Unity menu
- Verify the following:
- Ad Unit Ids are correctly setup
- Enable Lion Ads is turned ON.

2. Next steps
- If Google Ads Manager is installed as an adapter, it requires its own set of IDs; enter those IDs in the MAX Integration Manager by going to AppLovin → Integration Manager in the Unity menu.

- Now, if everything is setup correctly
- Proceed to Code Integration
- If settings are incorrect or missing
- Go to LionStudios→Settings Manager → Ads in the Unity menu
- Turn ON the “Enable Lion Ads” checkbox
- Fill up the required ad unit IDs
- Leave the other settings to their default values unless requested
Code Integration
Lion Ads provides just a few static functions to show and handle ads.
-
LionAds.IsRewardedReady
- returns:
boolean
Call this to decide whether to propose rewarded buttons or to disable them
Example
private void UpdateButton() { rewardAdButton.gameObject.SetActive(LionAds.IsRewardedReady); }
- returns:
-
LionAds.TryShowRewarded(string placement,Action onRewarded, Action onClosed = null, Reward reward = null, Dictionary<string, object> additionalData)
- returns:
boolean
: false if no ad was ready - parameters:
placement
: a string describing this ad placement (ie: “SkinShop”, “SkipLevel”…)onRewarded
: a callback called when the player has watched through the ad. This should contain the code that gives the actual reward to the player.onClosed
(optional): a callback called when the ad was closed (completed or canceled). This can be used to resume normal flow after the ad.reward
(optional): this object will be passed in the automated call toLionAnalytics.RewardVideoCollect
. (cf ‣)additionalData
(optional): this parameter will be passed to all ad events related to this ad (that is all RewardVideoX events except _Load and _LoadFail).
Call this to show a rewarded video if available.
Example
private void ShowRewarded() { //Optional Dictionary<string, object> additionalData = new Dictionary<string, object>() { { "mission_data", new Dictionary<string, object>() { { "mission_type", "main" }, { "mission_name", "main_1" }, { "mission_id", 1 }, { "mission_attempt", 1 } } }, //Can add other custom values { "example_key1", "ExampleValue" }, { "example_key2", "ExampleValue" } }; LionAds.TryShowRewarded("LevelStart", OnRewarded, OnRewardedAdClosed, GetTestReward(), additionalData); } private void OnRewarded() { Debug.Log("On reward received. Give user a reward here."); } //Optional private void OnRewardedAdClosed() { Debug.Log("On Rewarded ad closed"); } //Optional //Reward = LionStudios.Suite.Analytics.Reward private Reward GetTestReward() { Reward testReward = new Reward("coins", "currency", 10); return testReward; }
- returns:
-
LionAds.TryShowInterstitial(string placement, Action onClosed = null, Dictionary<string, object> additionalData)
- returns:
boolean
: false if no ad was ready - parameters:
placement
: a string describing this ad placement (ie: “LevelEnd”…)onClosed
(optional): a callback called when the ad was closed (completed or canceled or not ready). This can be used to resume normal flow after the ad.additionalData
(optional): this parameter will be passed to all ad events related to this ad (that is all InterstitialX events except _Load and _LoadFail).
Call this to show an interstitial video if available.
Example
private void ShowInterstitial() { //Optional Dictionary<string, object> additionalData = new Dictionary<string, object>() { { "mission_data", new Dictionary<string, object>() { { "mission_type", "main" }, { "mission_name", "main_3" }, { "mission_id", 3 }, { "mission_attempt", 2 } } }, //Can add other custom values { "example_key1", "ExampleValue" }, { "example_key2", "ExampleValue" } }; LionAds.TryShowInterstitial("LevelStart", OnInterClosed, additionalData); } //Optional private void OnInterClosed() { Debug.Log("Interstitial ad closed"); }
- returns:
-
LionAds.TryShowInterOpen(string placement, Action onClosed = null, Dictionary<string, object> additionalData = null)
- returns:
boolean
: false if no ad was ready - parameters:
placement
: a string describing this ad placement (ie: “AppOpened”…)onClosed
(optional): a callback called when the ad was closed (completed or canceled or not ready). This can be used to resume normal flow after the ad.additionalData
(optional): this parameter will be passed to all ad events related to this ad (that is all InterOpenX events except _Load and _LoadFail).
Example
//Optional private Dictionary<string, object> additionalData = new Dictionary<string, object>() { { "example_key", "ExampleValue" } }; private void ShowInterOpen() { LionAds.TryShowInterOpen("LevelStart", OnInterOpenAdClosed, additionalData); } //Optional private void OnInterOpenAdClosed() { Debug.Log("InterOpen ad closed"); }
- returns:
-
LionAds.ShowBanner()
- returns:
boolean
: false if no ad was ready. Even if false is returned, it will still load and show the banner as soon as ready.
Call this to show a banner ad as soon as available.
The banner will be positioned according to the “Banner Position” setting.
Example
private void ShowBanner() { LionAds.ShowBanner(); }
- returns:
-
LionAds.HideBanner()
- returns:
void
Call this to hide the banner ad.
Example
private void HideBanner() { LionAds.HideBanner(); }
- returns:
-
LionAds.OnRewardedStatusChanged
- type:
Action<bool>
Subscribe to this event to update RV buttons status when a Rewarded becomes ready. This is to avoid having to call
IsRewardedReady
constantly.Example
private void SubscribeToRewardedAdStatus() { LionAds.OnRewardedStatusChanged += (flag) => { rewardAdButton.gameObject.SetActive(flag); }; }
- type: