Iklan di layar pembuka aplikasi

Panduan ini ditujukan bagi penayang yang mengintegrasikan iklan pembuka aplikasi menggunakan Google Mobile Ads SDK (beta).

Iklan di layar pembuka aplikasi adalah format iklan khusus yang ditujukan bagi penayang yang ingin memonetisasi layar pemuatan aplikasi mereka. Iklan di layar pembuka aplikasi dapat ditutup kapan pun, dan dirancang untuk ditampilkan saat pengguna menampilkan aplikasi ke latar depan.

Iklan di layar pembuka aplikasi akan otomatis menampilkan area branding kecil sehingga pengguna tahu bahwa mereka berada di aplikasi Anda. Berikut adalah contoh tampilan iklan di layar pembuka aplikasi:

Prasyarat

Selalu melakukan pengujian dengan iklan percobaan

Saat membangun dan menguji aplikasi, pastikan Anda menggunakan iklan percobaan, bukan iklan produksi langsung. Jika Anda tidak melakukannya, akun Anda dapat ditangguhkan.

Cara termudah untuk memuat iklan percobaan adalah dengan menggunakan ID unit iklan percobaan khusus kami untuk iklan di layar pembuka aplikasi:

ca-app-pub-3940256099942544/9257395921

Iklan ini telah dikonfigurasi secara khusus agar menampilkan iklan percobaan untuk setiap permintaan, dan Anda dapat menggunakannya di aplikasi Anda sendiri saat melakukan coding, pengujian, dan proses debug. Pastikan Anda menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.

Untuk mengetahui informasi selengkapnya tentang cara kerja iklan percobaan Google Mobile Ads SDK (beta), lihat Mengaktifkan iklan percobaan.

Memperluas class Aplikasi

Buat class baru yang memperluas class Application. Hal ini memberikan cara yang sadar siklus proses untuk mengelola iklan yang terkait dengan status aplikasi, bukan satu Activity:

Kotlin

/** Application class that initializes, loads and show ads when activities change states. */
class MyApplication : Application() {

  override fun onCreate() {
    super<Application>.onCreate()
    CoroutineScope(Dispatchers.IO).launch {
      // Initialize the Mobile Ads SDK synchronously on a background thread.
      MobileAds.initialize(this@MyApplication, InitializationConfig.Builder(APP_ID).build()) {}
    }
  }

  private companion object {
    // Sample AdMob App ID.
    const val APP_ID = "ca-app-pub-3940256099942544~3347511713"
  }
}

Java

/** Application class that initializes, loads and show ads when activities change states. */
public class MyApplication extends Application {

  // Sample AdMob App ID.
  private static final String APP_ID = "ca-app-pub-3940256099942544~3347511713";

  @Override
  public void onCreate() {
    super.onCreate();
    new Thread(
        () -> {
          // Initialize the SDK on a background thread.
          MobileAds.initialize(
              MyApplication.this,
              new InitializationConfig.Builder(APP_ID).build(),
              initializationStatus -> {});
        })
        .start();
  }
}

Hal ini menyediakan kerangka tempat Anda akan mendaftar untuk peristiwa foregrounding aplikasi nanti.

Selanjutnya, tambahkan kode berikut ke AndroidManifest.xml Anda:

<!-- TODO: Update to reference your actual package name. -->
<application
    android:name="com.google.android.gms.example.appopendemo.MyApplication" ...>
...
</application>

Menerapkan komponen utilitas

Iklan Anda akan ditampilkan dengan cepat, jadi sebaiknya muat iklan sebelum Anda perlu menampilkannya. Dengan begitu, Anda akan memiliki iklan yang siap digunakan segera setelah pengguna masuk ke aplikasi Anda.

Terapkan komponen utilitas AppOpenAdManager untuk mengenkapsulasi pekerjaan yang terkait dengan pemuatan dan penayangan iklan di Layar Pembuka Aplikasi:

Kotlin

/**
* Interface definition for a callback to be invoked when an app open ad is complete (i.e. dismissed
* or fails to show).
*/
fun interface OnShowAdCompleteListener {
  fun onShowAdComplete()
}

/** Singleton object that loads and shows app open ads. */
object AppOpenAdManager {
  private var appOpenAd: AppOpenAd? = null
  private var isLoadingAd = false
  var isShowingAd = false

  /**
  * Load an ad.
  *
  * @param context a context used to perform UI-related operations (e.g. display Toast messages).
  *   Showing the app open ad itself does not require a context.
  */
  fun loadAd(context: Context) {
    // We will implement this later.
  }

  /**
  * Show the ad if one isn't already showing.
  *
  * @param activity the activity that shows the app open ad.
  * @param onShowAdCompleteListener the listener to be notified when an app open ad is complete.
  */
  fun showAdIfAvailable(activity: Activity, onShowAdCompleteListener: OnShowAdCompleteListener?) {
    // We will implement this later.
  }

  /** Check if ad exists and can be shown. */
  private fun isAdAvailable(): Boolean {
    return appOpenAd != null
  }
}

Java

/** Singleton object that loads and shows app open ads. */
public class AppOpenAdManager {

  /**
  * Interface definition for a callback to be invoked when an app open ad is complete (i.e.
  * dismissed or fails to show).
  */
  public interface OnShowAdCompleteListener {
    void onShowAdComplete();
  }

  private static AppOpenAdManager instance;
  private AppOpenAd appOpenAd;
  private boolean isLoadingAd = false;
  private boolean isShowingAd = false;

  /** Keep track of the time an app open ad is loaded to make sure you don't show an expired ad. */
  private long loadTime = 0;

  public static synchronized AppOpenAdManager getInstance() {
    if (instance == null) {
      instance = new AppOpenAdManager();
    }
    return instance;
  }

  /**
  * Load an ad.
  *
  * @param context a context used to perform UI-related operations (e.g. display Toast messages).
  *     Loading the app open ad itself does not require a context.
  */
  public void loadAd(@NonNull Context context) {
    // We will implement this later.
  }

  /**
  * Show the ad if one isn't already showing.
  *
  * @param activity the activity that shows the app open ad.
  * @param onShowAdCompleteListener the listener to be notified when an app open ad is complete.
  */
  public void showAdIfAvailable(
      @NonNull Activity activity, @Nullable OnShowAdCompleteListener onShowAdCompleteListener) {
    // We will implement this later.
  }

  /** Check if ad exists and can be shown. */
  private boolean isAdAvailable() {
    return appOpenAd != null
  }
}

Setelah memiliki class utilitas, Anda dapat membuat instance-nya di class MyApplication:

Java

public class MyApplication extends Application {

  private AppOpenAdManager appOpenAdManager;

  @Override
  public void onCreate() {
    super.onCreate();
    new Thread(
            () -> {
              // Initialize Google Mobile Ads SDK (beta) on a background thread.
              MobileAds.initialize(this, initializationStatus -> {});
            })
        .start();
    appOpenAdManager = new AppOpenAdManager(this);
  }
}

Kotlin

class MyApplication : Application() {

  private lateinit var appOpenAdManager: AppOpenAdManager

  override fun onCreate() {
    super.onCreate()
    val backgroundScope = CoroutineScope(Dispatchers.IO)
    backgroundScope.launch {
      // Initialize Google Mobile Ads SDK (beta) on a background thread.
      MobileAds.initialize(this@MyApplication) {}
    }
    appOpenAdManager = AppOpenAdManager()
  }
}

Untuk menggunakan AppOpenAdManager, panggil metode wrapper publik pada instance singleton MyApplication. Class Application berinteraksi dengan kode lainnya, mendelegasikan tugas memuat dan menampilkan iklan ke pengelola.

Memuat iklan

Langkah berikutnya adalah mengisi metode loadAd() dan menangani callback pemuatan iklan.

Kotlin


/**
 * Load an ad.
 *
 * @param context a context used to perform UI-related operations (e.g. display Toast messages).
 *   Loading the app open ad itself does not require a context.
 */
fun loadAd(context: Context) {
  // Do not load ad if there is an unused ad or one is already loading.
  if (isLoadingAd || isAdAvailable()) {
    Log.d(Constant.TAG, "App open ad is either loading or has already loaded.")
    return
  }

  isLoadingAd = true
  AppOpenAd.load(
    AdRequest.Builder(AppOpenFragment.AD_UNIT_ID).build(),
    object : AdLoadCallback<AppOpenAd> {
      /**
       * Called when an app open ad has loaded.
       *
       * @param ad the loaded app open ad.
       */
      override fun onAdLoaded(ad: AppOpenAd) {
        // Called when an ad has loaded.
        appOpenAd = ad
        isLoadingAd = false
        Log.d(Constant.TAG, "App open ad loaded.")
      }

      /**
       * Called when an app open ad has failed to load.
       *
       * @param loadAdError the error.
       */
      override fun onAdFailedToLoad(loadAdError: LoadAdError) {
        isLoadingAd = false
        Log.w(Constant.TAG, "App open ad failed to load: $loadAdError")
      }
    },
  )
}

Java


/**
 * Load an ad.
 *
 * @param context a context used to perform UI-related operations (e.g. display Toast messages).
 *     Loading the app open ad itself does not require a context.
 */
public void loadAd(@NonNull Context context) {
  // Do not load ad if there is an unused ad or one is already loading.
  if (isLoadingAd || isAdAvailable()) {
    Log.d(Constant.TAG, "App open ad is either loading or has already loaded.");
    return;
  }

  isLoadingAd = true;
  AppOpenAd.load(
      new AdRequest.Builder(AppOpenFragment.AD_UNIT_ID).build(),
      new AdLoadCallback<AppOpenAd>() {
        @Override
        public void onAdLoaded(@NonNull AppOpenAd ad) {
          appOpenAd = ad;
          isLoadingAd = false;
          Log.d(Constant.TAG, "App open ad loaded.");
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
          isLoadingAd = false;
          Log.w(Constant.TAG, "App open ad failed to load: " + loadAdError);
        }
      });
}

Ganti AD_UNIT_ID dengan ID unit iklan Anda sendiri.

Menampilkan iklan

Penerapan iklan di layar pembuka aplikasi yang paling umum adalah mencoba menampilkan iklan di layar pembuka aplikasi di dekat peluncuran aplikasi, memulai konten aplikasi jika iklan belum siap, dan memuat iklan lain terlebih dahulu untuk peluang iklan di layar pembuka aplikasi berikutnya. Lihat Panduan iklan di layar pembuka aplikasi untuk contoh penerapan.

Kode berikut menampilkan dan kemudian memuat ulang iklan:

Kotlin

/**
 * Show the ad if one isn't already showing.
 *
 * @param activity the activity that shows the app open ad.
 * @param onShowAdCompleteListener the listener to be notified when an app open ad is complete.
 */
fun showAdIfAvailable(activity: Activity, onShowAdCompleteListener: OnShowAdCompleteListener?) {
  // If the app open ad is already showing, do not show the ad again.
  if (isShowingAd) {
    Log.d(Constant.TAG, "App open ad is already showing.")
    onShowAdCompleteListener?.onShowAdComplete()
    return
  }

  // If the app open ad is not available yet, invoke the callback.
  if (!isAdAvailable()) {
    Log.d(Constant.TAG, "App open ad is not ready yet.")
    onShowAdCompleteListener?.onShowAdComplete()
    return
  }

  appOpenAd?.adEventCallback =
    object : AppOpenAdEventCallback {
      override fun onAdShowedFullScreenContent() {
        Log.d(Constant.TAG, "App open ad showed.")
      }

      override fun onAdDismissedFullScreenContent() {
        Log.d(Constant.TAG, "App open ad dismissed.")
        appOpenAd = null
        isShowingAd = false
        onShowAdCompleteListener?.onShowAdComplete()
        loadAd(activity)
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError
      ) {
        appOpenAd = null
        isShowingAd = false
        Log.w(Constant.TAG, "App open ad failed to show: $fullScreenContentError")
        onShowAdCompleteListener?.onShowAdComplete()
        loadAd(activity)
      }

      override fun onAdImpression() {
        Log.d(Constant.TAG, "App open ad recorded an impression.")
      }

      override fun onAdClicked() {
        Log.d(Constant.TAG, "App open ad recorded a click.")
      }
    }

  isShowingAd = true
  appOpenAd?.show(activity)
}

Java

/**
 * Show the ad if one isn't already showing.
 *
 * @param activity the activity that shows the app open ad.
 * @param onShowAdCompleteListener the listener to be notified when an app open ad is complete.
 */
public void showAdIfAvailable(
    @NonNull Activity activity, @Nullable OnShowAdCompleteListener onShowAdCompleteListener) {
  // If the app open ad is already showing, do not show the ad again.
  if (isShowingAd) {
    Log.d(Constant.TAG, "App open ad is already showing.");
    if (onShowAdCompleteListener != null) {
      onShowAdCompleteListener.onShowAdComplete();
    }
    return;
  }

  // If the app open ad is not available yet, invoke the callback.
  if (!isAdAvailable()) {
    Log.d(Constant.TAG, "App open ad is not ready yet.");
    if (onShowAdCompleteListener != null) {
      onShowAdCompleteListener.onShowAdComplete();
    }
    return;
  }

  appOpenAd.setAdEventCallback(
      new AppOpenAdEventCallback() {
        @Override
        public void onAdShowedFullScreenContent() {
          Log.d(Constant.TAG, "App open ad shown.");
        }

        @Override
        public void onAdDismissedFullScreenContent() {
          Log.d(Constant.TAG, "App open ad dismissed.");
          appOpenAd = null;
          isShowingAd = false;
          if (onShowAdCompleteListener != null) {
            onShowAdCompleteListener.onShowAdComplete();
          }
          loadAd(activity);
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          appOpenAd = null;
          isShowingAd = false;
          Log.w(Constant.TAG, "App open ad failed to show: " + fullScreenContentError);
          if (onShowAdCompleteListener != null) {
            onShowAdCompleteListener.onShowAdComplete();
          }
          loadAd(activity);
        }

        @Override
        public void onAdImpression() {
          Log.d(Constant.TAG, "App open ad recorded an impression.");
        }

        @Override
        public void onAdClicked() {
          Log.d(Constant.TAG, "App open ad recorded a click.");
        }
      });

  isShowingAd = true;
  appOpenAd.show(activity);
}

AppOpenAdEventCallback menangani peristiwa seperti saat iklan ditampilkan, gagal ditampilkan, atau saat iklan ditutup.

Pertimbangkan akhir masa berlaku iklan

Untuk memastikan Anda tidak menampilkan iklan yang masa berlakunya sudah habis, tambahkan metode ke AppOpenAdManager yang memeriksa durasi iklan sejak referensi iklan dimuat. Kemudian, gunakan metode tersebut untuk memeriksa apakah iklan tersebut masih valid.

Kotlin

object AppOpenAdManager {
  // ...
  /** Keep track of the time an app open ad is loaded to make sure you don't show an expired ad. */
  private var loadTime: Long = 0;
  
  /**
   * Load an ad.
   *
   * @param context a context used to perform UI-related operations (e.g. display Toast messages).
   *   Loading the app open ad itself does not require a context.
   */
  fun loadAd(context: Context) {
    // Do not load ad if there is an unused ad or one is already loading.
    if (isLoadingAd || isAdAvailable()) {
      Log.d(Constant.TAG, "App open ad is either loading or has already loaded.")
      return
    }

    isLoadingAd = true
    AppOpenAd.load(
      AdRequest.Builder(AppOpenFragment.AD_UNIT_ID).build(),
      object : AdLoadCallback<AppOpenAd> {
        /**
         * Called when an app open ad has loaded.
         *
         * @param ad the loaded app open ad.
         */
        override fun onAdLoaded(ad: AppOpenAd) {
          // Called when an ad has loaded.
          appOpenAd = ad
          isLoadingAd = false
          loadTime = Date().time
          Log.d(Constant.TAG, "App open ad loaded.")
        }

        /**
         * Called when an app open ad has failed to load.
         *
         * @param loadAdError the error.
         */
        override fun onAdFailedToLoad(loadAdError: LoadAdError) {
          isLoadingAd = false
          Log.w(Constant.TAG, "App open ad failed to load: $loadAdError")
        }
      },
    )
  }

  // ...

  /** Check if ad was loaded more than n hours ago. */
  private fun wasLoadTimeLessThanNHoursAgo(numHours: Long): Boolean {
    val dateDifference: Long = Date().time - loadTime
    val numMilliSecondsPerHour: Long = 3600000
    return dateDifference < numMilliSecondsPerHour * numHours
  }

  /** Check if ad exists and can be shown. */
  private fun isAdAvailable(): Boolean {
    // App open ads expire after four hours. Ads rendered more than four hours after request time
    // are no longer valid and may not earn revenue.
    return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4)
  }
}

Java

public class AppOpenAdManager {
  // ...
  /** Keep track of the time an app open ad is loaded to make sure you don't show an expired ad. */
  private long loadTime = 0;
  
  /**
   * Load an ad.
   *
   * @param context a context used to perform UI-related operations (e.g. display Toast messages).
   *     Loading the app open ad itself does not require a context.
   */
  public void loadAd(@NonNull Context context) {
    // Do not load ad if there is an unused ad or one is already loading.
    if (isLoadingAd || isAdAvailable()) {
      Log.d(Constant.TAG, "App open ad is either loading or has already loaded.");
      return;
    }

    isLoadingAd = true;
    AppOpenAd.load(
        new AdRequest.Builder(AppOpenFragment.AD_UNIT_ID).build(),
        new AdLoadCallback<AppOpenAd>() {
          @Override
          public void onAdLoaded(@NonNull AppOpenAd ad) {
            appOpenAd = ad;
            isLoadingAd = false;
            loadTime = new Date().getTime();
            Log.d(Constant.TAG, "App open ad loaded.");
          }

          @Override
          public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
            isLoadingAd = false;
            Log.w(Constant.TAG, "App open ad failed to load: " + loadAdError);
          }
        });
  }

  // ...

  /** Check if ad was loaded more than n hours ago. */
  private boolean wasLoadTimeLessThanNHoursAgo(long numHours) {
    long dateDifference = new Date().getTime() - loadTime;
    long numMilliSecondsPerHour = 3600000L;
    return dateDifference < numMilliSecondsPerHour * numHours;
  }

  /** Check if ad exists and can be shown. */
  private boolean isAdAvailable() {
    // App open ads expire after four hours. Ads rendered more than four hours after request time
    // are no longer valid and may not earn revenue.
    return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4);
  }
}

Melacak aktivitas saat ini

Untuk menampilkan iklan, Anda memerlukan konteks Activity. Untuk melacak aktivitas terbaru yang sedang digunakan, daftarkan dan terapkan Application.ActivityLifecycleCallbacks.

Kotlin

class MyApplication : Application(), Application.ActivityLifecycleCallbacks {

  private var currentActivity: Activity? = null

  override fun onCreate() {
    super<Application>.onCreate()
    registerActivityLifecycleCallbacks(this)
  }

  /** ActivityLifecycleCallback methods. */
  override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {}

  override fun onActivityStarted(activity: Activity) {
    currentActivity = activity
  }

  override fun onActivityResumed(activity: Activity) {}

  override fun onActivityPaused(activity: Activity) {}

  override fun onActivityStopped(activity: Activity) {}

  override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}

  override fun onActivityDestroyed(activity: Activity) {}

  // ...
}

Java

public class MyApplication extends Application
  implements Application.ActivityLifecycleCallbacks {

  private Activity currentActivity;

  @Override
  public void onCreate() {
    super.onCreate();
    registerActivityLifecycleCallbacks(this);
  }

  /** ActivityLifecycleCallback methods. */
  @Override
  public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle bundle) {}

  @Override
  public void onActivityStarted(@NonNull Activity activity) {
    currentActivity = activity;
  }

  @Override
  public void onActivityResumed(@NonNull Activity activity) {}

  @Override
  public void onActivityPaused(@NonNull Activity activity) {}

  @Override
  public void onActivityStopped(@NonNull Activity activity) {}

  @Override
  public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) {}

  @Override
  public void onActivityDestroyed(@NonNull Activity activity) {}

  // ...
}

registerActivityLifecycleCallbacks memungkinkan Anda memproses semua peristiwa Activity. Dengan memantau saat aktivitas dimulai dan dihentikan, Anda dapat melacak referensi ke Activity saat ini, yang kemudian akan Anda gunakan dalam menampilkan iklan pembuka aplikasi.

Memproses peristiwa transisi aplikasi ke latar depan

Untuk memproses peristiwa latar depan aplikasi, lakukan langkah-langkah berikut:

Tambahkan library ke file gradle Anda

Untuk mendapatkan notifikasi tentang peristiwa latar depan aplikasi, Anda harus mendaftarkan DefaultLifecycleObserver. Tambahkan dependensinya ke file build tingkat aplikasi Anda:

Kotlin

  dependencies {
    implementation("com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:0.21.0-beta01")
    implementation("androidx.lifecycle:lifecycle-process:2.8.3")
  }

Groovy

  dependencies {
    implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:0.21.0-beta01'
    implementation 'androidx.lifecycle:lifecycle-process:2.8.3'
  }

Menerapkan antarmuka observer siklus proses

Anda dapat memproses peristiwa pengaktifan di latar depan dengan mengimplementasikan antarmuka DefaultLifecycleObserver.

Terapkan onStart() untuk menampilkan iklan di layar pembuka aplikasi.

Kotlin

class MyApplication :
  Application(), Application.ActivityLifecycleCallbacks, DefaultLifecycleObserver {

  private var currentActivity: Activity? = null

  override fun onCreate() {
    super<Application>.onCreate()
    registerActivityLifecycleCallbacks(this)
    ProcessLifecycleOwner.get().lifecycle.addObserver(this)
  }

  /**
  * DefaultLifecycleObserver method that shows the app open ad when the app moves to foreground.
  */
  override fun onStart(owner: LifecycleOwner) {
    currentActivity?.let { activity ->
      AppOpenAdManager.showAdIfAvailable(activity, null)
    }
  }

  // ...
}

Java

public class MyApplication extends Application
  implements Application.ActivityLifecycleCallbacks, DefaultLifecycleObserver {

  private Activity currentActivity;

  @Override
  public void onCreate() {
    super.onCreate();
    registerActivityLifecycleCallbacks(this);
    ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
  }

  /**
  * DefaultLifecycleObserver method that shows the app open ad when the app moves to foreground.
  */
  @Override
  public void onStart(@NonNull LifecycleOwner owner) {
    if (currentActivity == null) {
      return;
    }

    AppOpenAdManager.getInstance().showAdIfAvailable(currentActivity, null);
  }

  // ...
}

Cold start dan layar pemuatan

Sejauh ini, dokumentasi mengasumsikan bahwa Anda hanya menampilkan iklan di layar pembuka aplikasi saat pengguna menampilkan aplikasi Anda di latar depan saat ditangguhkan dalam memori. "Cold start" terjadi saat aplikasi Anda diluncurkan, tetapi sebelumnya tidak ditangguhkan dalam memori.

Contoh cold start adalah saat pengguna membuka aplikasi Anda untuk pertama kalinya. Dengan cold start, Anda tidak akan memiliki iklan di layar pembuka aplikasi yang dimuat sebelumnya dan siap ditampilkan langsung. Penundaan antara saat Anda meminta iklan dan menerima iklan kembali dapat menciptakan situasi yang memungkinkan pengguna menggunakan aplikasi Anda sesaat sebelum dikejutkan dengan iklan yang tidak sesuai konteks. Hal ini harus dihindari karena merupakan pengalaman pengguna yang buruk.

Cara yang lebih disukai untuk menggunakan iklan di layar pembuka aplikasi saat cold start adalah menggunakan layar pemuatan untuk memuat aset aplikasi atau game, dan hanya menampilkan iklan dari layar pemuatan. Jika aplikasi Anda telah selesai dimuat dan telah mengarahkan pengguna ke konten utama aplikasi, jangan tampilkan iklan.

Praktik terbaik

Iklan di layar pembuka aplikasi membantu Anda memonetisasi layar pemuatan aplikasi, saat aplikasi pertama kali diluncurkan dan selama peralihan aplikasi, tetapi penting untuk mengingat praktik terbaik agar pengguna menikmati penggunaan aplikasi Anda. Sebaiknya:

  • Tampilkan iklan di layar pembuka aplikasi pertama setelah pengguna menggunakan aplikasi Anda beberapa kali.
  • Tampilkan iklan di layar pembuka aplikasi pada waktu pengguna menunggu aplikasi Anda dimuat.
  • Jika Anda memiliki layar pemuatan di bawah iklan di layar pembuka aplikasi, dan layar pemuatan selesai dimuat sebelum iklan ditutup, sebaiknya tutup layar pemuatan dalam metode onAdDismissedFullScreenContent().

Contoh

Download dan jalankan aplikasi contoh yang menunjukkan penggunaan Google Mobile Ads SDK (beta).