# Use banners and rewarded video alongside your Unity ad provider

> Integrate Indie Exchange banners and rewarded videos with your existing Unity ads. Prevent banner overlap and grant rewards only after earned callbacks.

Interstitials are only one part of the integration. Banner visibility and earned rewards have their own rules, regardless of which other provider you use.

Indie Exchange Unity SDK 0.5.3 (preview).

These are integration patterns for an existing ad manager, not complete provider SDK setups or certification of every SDK/version combination. Keep your provider's consent, initialization, loading, close, failure, and cleanup handlers. Use one shared guard for the entire ad break, including your provider's asynchronous display, so repeated taps cannot open competing ads. Call Indie Exchange on Unity's main thread; dispatch provider callbacks there when needed.

[Download Unity package](https://indie-exchange.com/downloads/IndieExchange-0.5.3.unitypackage) | [Unity SDK on GitHub](https://github.com/samdogsoft/indie-exchange-unity)

## Give the banner slot to one provider

At screen entry, keep your normal banner hidden until Indie Exchange has decided whether to display. Reuse your existing banner load and visibility code.


```csharp
// Your helper hides the normal provider's banner.
HideNormalBanner();

if (!IndieAds.TryShowBanner())
    ShowNormalBanner();

// On screen exit, hide both:
IndieAds.HideBanner();
HideNormalBanner();
```

HideNormalBanner and ShowNormalBanner are your methods. Run the exit lines when leaving the screen, not immediately after showing. Before a delayed provider load callback reveals its banner, check that this screen still owns the slot and IndieAds.IsShowingBanner is false. Set size and position in the game's website settings.

## Recover a banner that has no fill

If your provider has no banner, keep its banner hidden and try IndieAds.TryShowBanner(bypassPercentage: true) once while the screen is still visible. If it succeeds, suppress any later provider callback that would reveal another banner. If it fails, leave the slot empty and use your normal bounded preload policy.

## Reward the completed view, not the show call

First let the player accept a clear reward offer. Disable the reward button for the full opportunity and initialize both providers after consent.


```csharp
bool displayed = await IndieAds.TryShowRewardedAsync(
    onRewardEarned: () => GrantRewardOnceForThisOffer());

if (!displayed)
    ShowNormalRewardedAd();
```

Both helper methods belong to your game. The normal provider must call the same once-per-offer reward handler only from its own earned-reward callback. A true result means an Indie ad displayed and closed; early exit can return true without earning a reward. Do not fall back after early exit.

## If the normal rewarded provider has no ad

While the same accepted offer is active, and only before any ad has opened, make one cached recovery attempt:


```csharp
bool displayed = await IndieAds.TryShowRewardedAsync(
    onRewardEarned: () => GrantRewardOnceForThisOffer(),
    bypassPercentage: true);
```

If neither provider displays, show an ad-unavailable message and let the player continue. Your in-game reward is separate from exchange credits. Editor and device Test Mode exercise the reward callback, so test with a test player balance.

## Let the game resume cleanly

Indie full-screen ads pause normal game time and audio and restore their previous state when closed. Banners do not pause gameplay. Custom unscaled timers and independent animations need your own pause logic; IndieAds.IsShowingInterstitial covers both Indie full-screen formats. Your other provider keeps its own pause/resume integration.

## Next steps

- [Unity setup and API guide](https://indie-exchange.com/docs)
- [All integration guides](https://indie-exchange.com/integrations)
- [Official Unity SDK](https://github.com/samdogsoft/indie-exchange-unity)


Human-readable page: https://indie-exchange.com/integrations/banners-and-rewarded

Provider names identify their respective products. Indie Exchange is an independent service, not an official provider integration or endorsement.
