> ## 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.

# App Open Ads

> Integrate CloudX App Open ads in Android apps

App Open ads are fullscreen placements intended for app foreground moments, such as when a user returns to your app after it has been backgrounded.

#### Supported Networks

App Open demand is served by the following bidding networks:

| Network   | Adapter                                              |
| --------- | ---------------------------------------------------- |
| Mintegral | [Mintegral](/en/android/adapters/mintegral/overview) |
| Pangle    | [Pangle](/en/android/adapters/pangle/overview)       |
| Vungle    | [Vungle](/en/android/adapters/vungle/overview)       |

The [Google Mobile Ads waterfall adapter](/en/android/adapters/googlewaterfall/overview) also supports App Open placements for AdMob waterfall demand.

<CodeGroup>
  ```kotlin Kotlin theme={null}
  class MainActivity : AppCompatActivity(), CloudXAppOpenListener, CloudXAdRevenueListener {
      private lateinit var appOpenAd: CloudXAppOpenAd

      private fun createAppOpenAd() {
          appOpenAd = CloudX.createAppOpen(this, "your-app-open-ad-unit-id")
          appOpenAd.listener = this
          appOpenAd.revenueListener = this
          appOpenAd.load()
      }

      private fun showAppOpenAd() {
          if (appOpenAd.isAdReady) {
              appOpenAd.show(this, "app_foreground")
          }
      }

      // CloudXAppOpenListener callbacks
      override fun onAdLoaded(cloudXAd: CloudXAd) {
          Log.d("CloudX", "App Open ad loaded from ${cloudXAd.networkName}")
      }

      override fun onAdLoadFailed(adUnitId: String, cloudXError: CloudXError) {
          Log.e("CloudX", "App Open ad failed to load: ${cloudXError.message}")
      }

      override fun onAdDisplayed(cloudXAd: CloudXAd) {
          Log.d("CloudX", "App Open ad displayed")
      }

      override fun onAdDisplayFailed(cloudXAd: CloudXAd, cloudXError: CloudXError) {
          Log.e("CloudX", "App Open ad failed to display: ${cloudXError.message}")
          appOpenAd.load()
      }

      override fun onAdHidden(cloudXAd: CloudXAd) {
          appOpenAd.load()
      }

      override fun onAdClicked(cloudXAd: CloudXAd) {}

      // CloudXAdRevenueListener callback
      override fun onAdRevenuePaid(cloudXAd: CloudXAd) {
          Log.d("CloudX", "App Open bid-time revenue: ${cloudXAd.revenue}")
      }

      override fun onDestroy() {
          super.onDestroy()
          appOpenAd.destroy()
      }
  }
  ```
</CodeGroup>

Use App Open ads sparingly and only at natural app-open or app-resume transitions. Avoid showing one while the user is already interacting with app content.
