Uygulama Açılış Reklamları

Platform seçin: Android iOS Unity Flutter

Bu kılavuz, Google Mobile Ads SDK'sını kullanarak uygulama açılış reklamlarını entegre eden yayıncılar için hazırlanmıştır.

Uygulama açılış reklamları, uygulama yükleme ekranlarından para kazanmak isteyen yayıncılar için tasarlanmış özel bir reklam biçimidir. Uygulama açılış reklamları, kullanıcılar uygulamanızı ön plana getirdiğinde gösterilmek üzere tasarlanmıştır ve istendiği zaman kapatılabilir.

Uygulama açılış reklamları, kullanıcılara uygulamanızda olduklarını hatırlatmak için otomatik olarak küçük bir marka alanı gösterir. Uygulama açılış reklamlarının görünümüyle ilgili örneği aşağıda bulabilirsiniz:

Ön koşullar

Her zaman test reklamlarıyla test yapın

Uygulamalarınızı oluşturup test ederken canlı yayınlanan üretim reklamları yerine test reklamlarını kullandığınızdan emin olun. Bu işlemi yapmazsanız hesabınız askıya alınabilir.

Test reklamlarını yüklemenin en kolay yolu, uygulama açılış reklamları için özel test reklam birimi kimliğimizi kullanmaktır:

/21775744923/example/app-open

Bu kimlik, her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır ve kodlama, test etme ve hata ayıklama sırasında kendi uygulamalarınızda kullanabilirsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirdiğinizden emin olun.

Google Mobile Ads SDK test reklamlarının nasıl çalıştığı hakkında daha fazla bilgi için Test reklamları etkinleştirme başlıklı makaleyi inceleyin.

Application sınıfını genişletme

Application sınıfını genişleten yeni bir sınıf oluşturun. Bu, Activity yerine uygulamanın durumuyla ilişkili reklamları yaşam döngüsüne duyarlı bir şekilde yönetmenizi sağlar:

Java

public class MyApplication extends Application
    implements ActivityLifecycleCallbacks, DefaultLifecycleObserver {

  private AppOpenAdManager appOpenAdManager;
  private Activity currentActivity;

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

    ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
    appOpenAdManager = new AppOpenAdManager();
  }

Kotlin

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

  private lateinit var appOpenAdManager: AppOpenAdManager
  private var currentActivity: Activity? = null

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

    ProcessLifecycleOwner.get().lifecycle.addObserver(this)
    appOpenAdManager = AppOpenAdManager()
  }

Ardından, AndroidManifest.xml dosyasına aşağıdaki kodu ekleyin:

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

Yardımcı program bileşeninizi uygulama

Reklamınız hızlı bir şekilde gösterilmelidir. Bu nedenle, reklamınızı göstermeniz gerekmeden önce yüklemeniz en iyisidir. Bu sayede, kullanıcınız uygulamanıza girer girmez yayınlanmaya hazır bir reklamınız olur.

Uygulama açılış reklamlarının yüklenmesi ve gösterilmesiyle ilgili işlemleri kapsayacak bir yardımcı bileşen AppOpenAdManager uygulayın:

Java

private class AppOpenAdManager {

  private static final String LOG_TAG = "AppOpenAdManager";
  private static final String AD_UNIT_ID = "/21775744923/example/app-open";

  private AppOpenAd appOpenAd = null;
  private boolean isLoadingAd = false;
  private boolean isShowingAd = false;

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

  /** Constructor. */
  public AppOpenAdManager() {}

Kotlin

private inner class AppOpenAdManager {

  private val googleMobileAdsConsentManager =
  private var appOpenAd: AppOpenAd? = null
  private var isLoadingAd = false
  var isShowingAd = false

  /** Keep track of the time an app open ad is loaded to ensure you don't show an expired ad. */
  private var loadTime: Long = 0

AppOpenAdManager kullanmak için tekil AppOpenAdManager örneğinde genel sarmalayıcı yöntemleri çağırın.MyApplication Application sınıfı, kodun geri kalanıyla arayüz oluşturur ve reklamın yüklenmesi ile gösterilmesi işini yöneticiye devreder.

Reklam yükleme

Bir sonraki adım, loadAd() yöntemini doldurmak ve reklam yükleme geri çağırmalarını yönetmektir.

Java

AppOpenAd.load(
    context,
    "AD_UNIT_ID",
    new AdManagerAdRequest.Builder().build(),
    new AppOpenAdLoadCallback() {
      @Override
      public void onAdLoaded(AppOpenAd ad) {
        // Called when an app open ad has loaded.
        Log.d(LOG_TAG, "App open ad loaded.");

        appOpenAd = ad;
        isLoadingAd = false;
        loadTime = (new Date()).getTime();
      }

      @Override
      public void onAdFailedToLoad(LoadAdError loadAdError) {
        // Called when an app open ad has failed to load.
        Log.d(LOG_TAG, "App open ad failed to load with error: " + loadAdError.getMessage());

        isLoadingAd = false;
      }
    });

Kotlin

AppOpenAd.load(
  context,
  "AD_UNIT_ID",
  AdManagerAdRequest.Builder().build(),
  object : AppOpenAdLoadCallback() {
    override fun onAdLoaded(ad: AppOpenAd) {
      // Called when an app open ad has loaded.
      Log.d(LOG_TAG, "App open ad loaded.")

      appOpenAd = ad
      isLoadingAd = false
      loadTime = Date().time
    }

    override fun onAdFailedToLoad(loadAdError: LoadAdError) {
      // Called when an app open ad has failed to load.
      Log.d(LOG_TAG, "App open ad failed to load with error: " + loadAdError.message)

      isLoadingAd = false
    }
  },
)

AD_UNIT_ID öğesini kendi reklam birimi kimliğinizle değiştirin.

Reklamı göster

En yaygın uygulama açılış reklamı uygulama yöntemi, uygulama açılış reklamını uygulama başlatılırken göstermeye çalışmak, reklam hazır değilse uygulama içeriğini başlatmak ve bir sonraki uygulama açılış reklamı fırsatı için başka bir reklamı önceden yüklemektir. Uygulama örnekleri için Uygulama açılış reklamı kılavuzu'na bakın.

Aşağıdaki kod, bir reklamı gösterir ve ardından yeniden yükler:

Java

public void showAdIfAvailable(
    @NonNull final Activity activity,
    @NonNull OnShowAdCompleteListener onShowAdCompleteListener) {
  // If the app open ad is already showing, do not show the ad again.
  if (isShowingAd) {
    Log.d(TAG, "The app open ad is already showing.");
    return;
  }

  // If the app open ad is not available yet, invoke the callback then load the ad.
  if (appOpenAd == null) {
    Log.d(TAG, "The app open ad is not ready yet.");
    onShowAdCompleteListener.onShowAdComplete();
    // Load an ad.
    return;
  }

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

Kotlin

fun showAdIfAvailable(activity: Activity, onShowAdCompleteListener: OnShowAdCompleteListener) {
  // If the app open ad is already showing, do not show the ad again.
  if (isShowingAd) {
    Log.d(TAG, "The app open ad is already showing.")
    return
  }

  // If the app open ad is not available yet, invoke the callback then load the ad.
  if (appOpenAd == null) {
    Log.d(TAG, "The app open ad is not ready yet.")
    onShowAdCompleteListener.onShowAdComplete()
    // Load an ad.
    return
  }

  isShowingAd = true
  appOpenAd?.show(activity)
}

FullScreenContentCallback'i ayarlayın.

FullScreenContentCallback, AppOpenAd görüntülemeyle ilgili etkinlikleri işler. AppOpenAd öğesini göstermeden önce geri aramayı ayarladığınızdan emin olun:

Java

appOpenAd.setFullScreenContentCallback(
    new FullScreenContentCallback() {
      @Override
      public void onAdDismissedFullScreenContent() {
        // Called when full screen content is dismissed.
        Log.d(TAG, "Ad dismissed fullscreen content.");
        // Don't forget to set the ad reference to null so you
        // don't show the ad a second time.
        appOpenAd = null;
        isShowingAd = false;

        onShowAdCompleteListener.onShowAdComplete();
        // Load an ad.
      }

      @Override
      public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
        // Called when full screen content failed to show.
        Log.d(TAG, adError.getMessage());
        appOpenAd = null;
        // Don't forget to set the ad reference to null so you
        // don't show the ad a second time.
        isShowingAd = false;

        onShowAdCompleteListener.onShowAdComplete();
        // Load an ad.
      }

      @Override
      public void onAdShowedFullScreenContent() {
        Log.d(TAG, "Ad showed fullscreen content.");
      }

      @Override
      public void onAdImpression() {
        // Called when an impression is recorded for an ad.
        Log.d(TAG, "The ad recorded an impression.");
      }

      @Override
      public void onAdClicked() {
        // Called when ad is clicked.
        Log.d(TAG, "The ad was clicked.");
      }
    });

Kotlin

appOpenAd?.fullScreenContentCallback =
  object : FullScreenContentCallback() {
    override fun onAdDismissedFullScreenContent() {
      // Called when full screen content is dismissed.
      Log.d(TAG, "Ad dismissed fullscreen content.")
      // Don't forget to set the ad reference to null so you
      // don't show the ad a second time.
      appOpenAd = null
      isShowingAd = false

      onShowAdCompleteListener.onShowAdComplete()
      // Load an ad.
    }

    override fun onAdFailedToShowFullScreenContent(adError: AdError) {
      // Called when full screen content failed to show.
      Log.d(TAG, adError.message)
      // Don't forget to set the ad reference to null so you
      // don't show the ad a second time.
      appOpenAd = null
      isShowingAd = false

      onShowAdCompleteListener.onShowAdComplete()
      // Load an ad.
    }

    override fun onAdShowedFullScreenContent() {
      Log.d(TAG, "Ad showed fullscreen content.")
    }

    override fun onAdImpression() {
      // Called when an impression is recorded for an ad.
      Log.d(TAG, "The ad recorded an impression.")
    }

    override fun onAdClicked() {
      // Called when ad is clicked.
      Log.d(TAG, "The ad was clicked.")
    }
  }

Reklam geçerlilik süresini göz önünde bulundurma

Geçerlilik süresi dolan bir reklamı göstermediğinizden emin olmak için AppOpenAdManager reklam referansınızın yüklenmesinden bu yana ne kadar süre geçtiğini kontrol eden bir yöntem ekleyin. Ardından, reklamın hâlâ geçerli olup olmadığını kontrol etmek için bu yöntemi kullanın.

Java

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

/** Check if ad exists and can be shown. */
private boolean isAdAvailable() {
  // For time interval details, see: https://support.google.com/admob/answer/9341964
  return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4);
}

Kotlin

/** 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 {
  // For time interval details, see: https://support.google.com/admob/answer/9341964
  return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4)
}

Mevcut etkinliği takip etme

Reklamı göstermek için Activity bağlamına ihtiyacınız vardır. En güncel etkinliğin kullanımını takip etmek için Application.ActivityLifecycleCallbacks'ye kaydolun ve bu özelliği uygulayın.

Java

@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {}

@Override
public void onActivityStarted(@NonNull Activity activity) {
  // An ad activity is started when an ad is showing, which could be AdActivity class from Google
  // SDK or another activity class implemented by a third party mediation partner. Updating the
  // currentActivity only when an ad is not showing will ensure it is not an ad activity, but the
  // one that shows the ad.
  if (!appOpenAdManager.isShowingAd) {
    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 outState) {}

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

Kotlin

override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {}

override fun onActivityStarted(activity: Activity) {
  // An ad activity is started when an ad is showing, which could be AdActivity class from Google
  // SDK or another activity class implemented by a third party mediation partner. Updating the
  // currentActivity only when an ad is not showing will ensure it is not an ad activity, but the
  // one that shows the ad.
  if (!appOpenAdManager.isShowingAd) {
    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) {}

registerActivityLifecycleCallbacks tüm Activity etkinliklerini dinlemenize olanak tanır. Etkinliklerin başlatıldığı ve yok edildiği zamanları dinleyerek mevcut Activity öğesine yapılan referansı takip edebilirsiniz. Bu referansı daha sonra uygulama açılış reklamınızı sunarken kullanırsınız.

Uygulamanın ön plana alınması etkinliklerini dinleme

Uygulama ön plana alma etkinliklerini dinlemek için aşağıdaki adımları uygulayın:

Kitaplıkları Gradle dosyanıza ekleyin.

Uygulama ön plana getirme etkinliklerinden haberdar olmak için DefaultLifecycleObserver kaydetmeniz gerekir. Bağımlılığını uygulama düzeyindeki derleme dosyanıza ekleyin:

Kotlin

  dependencies {
    implementation("com.google.android.gms:play-services-ads:24.5.0")
    implementation("androidx.lifecycle:lifecycle-process:2.8.3")
  }

Modern

  dependencies {
    implementation 'com.google.android.gms:play-services-ads:24.5.0'
    implementation 'androidx.lifecycle:lifecycle-process:2.8.3'
  }

Yaşam döngüsü gözlemcisi arayüzünü uygulama

DefaultLifecycleObserver arayüzünü uygulayarak ön plana çıkarma etkinliklerini dinleyebilirsiniz.

Uygulama açılış reklamını göstermek için onStart() işlevini uygulayın.

Java

@Override
public void onStart(@NonNull LifecycleOwner owner) {
  DefaultLifecycleObserver.super.onStart(owner);
  appOpenAdManager.showAdIfAvailable(currentActivity);
}

Kotlin

override fun onStart(owner: LifecycleOwner) {
  super.onStart(owner)
  currentActivity?.let {
    // Show the ad (if available) when the app moves to foreground.
    appOpenAdManager.showAdIfAvailable(it)
  }
}

Soğuk başlatmalar ve yükleme ekranları

Şu ana kadarki dokümanlarda, uygulama açılış reklamlarını yalnızca kullanıcılar uygulamayı bellekte askıya alındığında ön plana çıkardığında gösterdiğiniz varsayılmaktadır. "Soğuk başlatmalar", uygulamanız başlatıldığında ancak daha önce bellekte askıya alınmadığında gerçekleşir.

Sıfırdan başlatmaya örnek olarak, kullanıcının uygulamanızı ilk kez açması verilebilir. Sıfırdan başlatmalarda, daha önce yüklenmiş ve hemen gösterilmeye hazır bir uygulama açılış reklamınız olmaz. Reklam isteğinde bulunmanız ile reklam yanıtı almanız arasındaki gecikme, kullanıcıların bağlam dışı bir reklamla karşılaşmadan önce uygulamanızı kısa bir süre kullanabildiği bir durum yaratabilir. Bu durum kötü bir kullanıcı deneyimi olduğundan kaçınılmalıdır.

Uygulama açılış reklamlarını baştan başlatma sırasında kullanmanın tercih edilen yolu, oyun veya uygulama öğelerinizi yüklemek için bir yükleme ekranı kullanmak ve reklamı yalnızca yükleme ekranından göstermektir. Uygulamanızın yüklenmesi tamamlandıysa ve kullanıcı uygulamanızın ana içeriğine yönlendirildiyse reklamı göstermeyin.

En iyi uygulamalar

Uygulama açılış reklamları, uygulama ilk kez başlatıldığında ve uygulamalar arasında geçiş yapıldığında uygulamanızın yükleme ekranından para kazanmanıza yardımcı olur. Ancak kullanıcılarınızın uygulamanızı keyifle kullanabilmesi için en iyi uygulamaları göz önünde bulundurmanız önemlidir. En iyi uygulama şunlardır:

  • Kullanıcılarınız uygulamanızı birkaç defa kullandıktan sonra ilk uygulama açılış reklamınızı gösterin.
  • Kullanıcılarınızın uygulamanızın yüklenmesini bekleyeceği zamanlarda uygulama açılış reklamları gösterin.
  • Uygulama açılış reklamının altında yükleme ekranınız varsa ve reklam kapatılmadan önce yükleme ekranınızın yüklenmesi tamamlanırsa, yükleme ekranınızı onAdDismissedFullScreenContent() yönteminde kapatmayı deneyebilirsiniz.

GitHub'daki örnekler

  • Uygulama açılış reklamları örneği: Java | Kotlin

Sonraki adımlar

Aşağıdaki konuları inceleyin: