> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudx.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Interstitial Ads

> Integrate CloudX interstitial ads in React Native apps

Interstitial ads are full-screen ads shown at natural transition points.

```typescript theme={null}
import { CloudXInterstitialAd } from 'cloudx-react-native';

const AD_UNIT_ID = 'level_complete';

CloudXInterstitialAd.addAdLoadedEventListener((adInfo) => {
    console.log('Interstitial loaded from', adInfo.networkName);
});
CloudXInterstitialAd.addAdLoadFailedEventListener((error) => {
    console.log('Interstitial load failed:', error.code, error.message);
});
CloudXInterstitialAd.addAdDisplayedEventListener((adInfo) => {
    console.log('Interstitial displayed');
});
CloudXInterstitialAd.addAdFailedToDisplayEventListener((error) => {
    console.log('Interstitial display failed:', error.code, error.message);
});
CloudXInterstitialAd.addAdClickedEventListener((adInfo) => {
    console.log('Interstitial clicked');
});
CloudXInterstitialAd.addAdHiddenEventListener(() => {
    CloudXInterstitialAd.loadAd(AD_UNIT_ID);
});
CloudXInterstitialAd.addAdRevenuePaidListener((adInfo) => {
    console.log('Revenue:', adInfo.revenue);
});

CloudXInterstitialAd.loadAd(AD_UNIT_ID);

const isReady = await CloudXInterstitialAd.isAdReady(AD_UNIT_ID);
if (isReady) {
    CloudXInterstitialAd.showAd(AD_UNIT_ID);
    // Or with optional placement and custom data:
    // CloudXInterstitialAd.showAd(AD_UNIT_ID, 'level_complete', 'custom_data');
} else {
    console.warn('Interstitial ad not ready yet');
}

// Destroy when no longer needed.
CloudXInterstitialAd.destroyAd(AD_UNIT_ID);
```

## React Hook

```typescript theme={null}
import { useCloudXInterstitial } from 'cloudx-react-native';

function GameScreen() {
    const { isLoaded, isLoading, error, load, show, destroy } =
        useCloudXInterstitial('level_complete');

    useEffect(() => {
        load();
    }, [load]);

    return (
        <Button
            title={isLoading ? 'Loading...' : 'Show Ad'}
            onPress={() => show()}
            disabled={!isLoaded}
        />
    );
}
```

Returns: `{ isLoaded, isLoading, error, load, show, destroy }`

* `show()` accepts optional `placement` and `customData` parameters.
* The hook automatically destroys the ad on unmount.
