UNITY INTEGRATION · No-fill recovery

Recover an empty Unity ad break without showing two ads

A missed ad opportunity can introduce another indie game instead of leaving the break empty. Keep recovery tied to the break the player is already taking, rather than showing an ad whenever a background request fails.

Indie Exchange SDK 0.5.3 preview · Android & iOS

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.

Start with a single decision

For exchange participation, let the normal Indie Exchange call apply your server percentage first. If it returns false, try your existing provider. Only if that provider has no ad or definitively fails before opening should you try Indie Exchange once with bypassPercentage: true.

// After your normal provider definitively has no ad
// for the current break, and no ad has opened:
bool displayed = await IndieAds.TryShowInterstitialAsync(
    bypassPercentage: true);

// If false, continue the game without another retry.

If you always call your normal provider first, Indie Exchange becomes a recovery source; its scheduled overall share will not determine how often it gets the first opportunity.

No ad ready, failure, and closure are different

Distinguish these outcomes in your ad manager:

  1. No ready ad at this eligible break: one cached Indie recovery attempt is appropriate.
  2. Loading failed in the background: schedule a bounded preload retry; do not interrupt gameplay with a show call.
  3. The current show failed before opening: recover once if the opportunity is still active and no other provider is displaying.
  4. An ad opened, closed, or was skipped: the opportunity is consumed. Do not show a second ad.
  5. A show request times out with an unknown result: do not assume it is safe to open a second provider. Ignore late callbacks after retiring the attempt.

Your traffic settings still matter

Recovery uses cached, eligible inventory and never waits for a server request. It respects a live format's 0% off switch. It skips the percentage decision, so actual exchange displays can exceed the normal scheduled share. If the public category has no eligible ad, your server setting can allow a selected personal ad to fill that opportunity.

Readiness alone does not guarantee a display: format settings, eligibility, and an already-open full-screen ad still apply. No-fill recovery cannot create inventory or guarantee revenue.

Test the outcomes players will see

Use both SDKs' test modes and check these cases before release:

  1. Indie ad ready and selected; Indie ad unavailable with your normal provider ready; normal provider unavailable with Indie ready; neither source ready.
  2. Indie Exchange unreachable on launch, with your normal provider independently initialized and preloaded.
  3. Repeated button taps, a scene change during loading, background/resume, and duplicate or late provider callbacks.
  4. An Indie format set to 0%, no eligible personal group, and public-to-personal fallback switched off.

Keep building

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