Bu kılavuz, Google Mobile Ads SDK (Legacy) 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 özel bir reklam biçimidir. Uygulama açılış reklamları, kullanıcılarınız uygulamanızı ön plana getirdiğinde gösterilecek şekilde 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ış reklamının nasıl göründüğüne dair bir örneği aşağıda bulabilirsiniz:

Ön koşullar
Her zaman test reklamlarıyla test edin
Uygulamalarınızı oluştururken ve test ederken yayındaki üretim reklamları yerine test reklamlarını kullandığınızdan emin olun. Bu koşula uymamanız halinde 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:
ca-app-pub-3940256099942544/9257395921
Bu kimlik, her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test ve hata ayıklama sırasında bu kimliği kendi uygulamalarınızda kullanabilirsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirmeyi unutmayın.
Google Mobile Ads SDK (Legacy) test reklamlarının işleyiş şekli hakkında daha fazla bilgi için Test reklamlarını 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, tek bir Activity yerine uygulamanın durumuna bağlı reklamları yönetmek için yaşam döngüsüne duyarlı bir yöntem sunar:
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 :
Application(), Application.ActivityLifecycleCallbacks, DefaultLifecycleObserver {
private lateinit var appOpenAdManager: AppOpenAdManager
private var currentActivity: Activity? = null
override fun onCreate() {
super<Application>.onCreate()
registerActivityLifecycleCallbacks(this)
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
appOpenAdManager = AppOpenAdManager()
}
Ardından, AndroidManifest.xml dosyanıza 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ın hızlı bir şekilde gösterilmesi gerekir. Bu nedenle, reklamınızı göstermeniz gerekmeden önce yüklemeniz en iyisidir. Böylece, kullanıcı uygulamanıza girer girmez gösterilmeye hazır bir reklamınız olur.
Uygulama açılış reklamlarını yükleme ve gösterme ile ilgili işlemleri kapsüllemek için 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 = "ca-app-pub-3940256099942544/9257395921";
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 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 öğesini kullanmak için tekil MyApplication örneğinde herkese açık sarmalayıcı yöntemlerini çağırın. Application sınıfı, kodun geri kalanıyla arayüz oluşturarak reklamı yükleme ve gösterme işini yöneticiye devreder.
Reklam yükleme
Sonraki adım, loadAd yöntemini doldurmak ve reklam yükleme geri çağırmalarını işlemektir.
Java
Kotlin
AD_UNIT_ID yerine kendi reklam birimi kimliğinizi yazın.
Reklamı göster
En yaygın uygulama açılış reklamı uygulama yöntemi, uygulama başlatılırken uygulama açılış reklamı göstermeye çalışmak, reklam hazır değilse uygulama içeriğini başlatmak ve bir sonraki uygulama açılış fırsatı için başka bir reklamı önceden yüklemektir. Uygulama örnekleri için Uygulama açılış reklamı kılavuzu bölümüne 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 ayarlama
FullScreenContentCallback, AppOpenAd öğenizin gösterilmesiyle ilgili etkinlikleri işler. AppOpenAd reklamını göstermeden önce geri çağırmayı 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
Süresi dolmuş bir reklam göstermediğinizden emin olmak için AppOpenAdManager öğesine, 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ı gerekir. Kullanılan en güncel etkinliği takip etmek için Application.ActivityLifecycleCallbacks'ne kaydolun ve 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 ne zaman başlatılıp yok edildiğini dinleyerek mevcut Activity referansını takip edebilir ve ardından uygulama açılış reklamınızı sunarken bu referansı kullanabilirsiniz.
Uygulamayı ön plana alma etkinliklerini dinleme
Uygulamanın ön plana alma etkinliklerini dinlemek için aşağıdaki adımları uygulayın:
Kitaplıkları gradle dosyanıza ekleme
Uygulamanın ön plana alınması etkinliğinden haberdar olmak için bir DefaultLifecycleObserver kaydetmeniz gerekir. Bağımlılığını uygulama düzeyindeki derleme dosyanıza ekleyin:
Kotlin
dependencies { implementation("com.google.android.gms:play-services-ads:25.5.0") implementation("androidx.lifecycle:lifecycle-process:2.8.3") }
Modern
dependencies { implementation 'com.google.android.gms:play-services-ads:25.5.0' implementation 'androidx.lifecycle:lifecycle-process:2.8.3' }
Yaşam döngüsü gözlemci arayüzünü uygulama
DefaultLifecycleObserver arayüzünü uygulayarak ön plana alma etkinliklerini dinleyebilirsiniz.
Uygulama açılış reklamını göstermek için onStart() yöntemini uygulayın.
Java
@Override
public void onStart(@NonNull LifecycleOwner owner) {
DefaultLifecycleObserver.super.onStart(owner);
// Show the ad (if available) when the app moves to foreground.
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)
}
}
Baştan başlatmalar ve yükleme ekranları
Şimdiye kadarki belgelerde, uygulama açılış reklamlarını yalnızca kullanıcılar uygulamanızı bellekte askıya alındığında ön plana getirdiğinde gösterdiğiniz varsayılmıştır. "Baştan başlatma", uygulamanız başlatıldığında ancak daha önce bellekte askıya alınmadığında gerçekleşir.
Kullanıcının uygulamanızı ilk kez açması, baştan başlatmaya örnek olarak verilebilir. Baştan başlatmalarda, önceden yüklenmiş ve hemen gösterilmeye hazır bir uygulama açılış reklamınız olmaz. Reklam isteğinde bulunmanız ile reklamın alınması arasında geçen süre, kullanıcıların uygulamanızı kısa bir süre kullanmasına ve ardından bağlam dışı bir reklamla karşılaşmasına neden olabilir. Kullanıcı deneyimini olumsuz etkileyeceğinden bu tür uygulamalardan kaçının.
Uygulama açılış reklamlarını baştan başlatmalarda 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 yüklemeyi tamamladıysa ve kullanıcıyı uygulamanızın ana içeriğine yönlendirdiyse reklamı göstermeyin.
En iyi uygulamalar
Uygulama açılış reklamları, uygulamanızın yükleme ekranından, uygulama ilk başlatıldığında ve uygulama geçişleri sırasında para kazanmanıza yardımcı olur. Ancak kullanıcılarınızın uygulamanızı kullanmaktan keyif alması için en iyi uygulamaları göz önünde bulundurmanız önemlidir. En iyi yöntemler şunlardır:
- Kullanıcılarınız uygulamanızı birkaç defa kullandıktan sonra ilk uygulama açılış reklamınızı gösterin.
- Uygulama açılış reklamlarını, kullanıcılarınızın uygulamanızın yüklenmesini beklediği zamanlarda 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
Sonraki adımlar
Aşağıdaki konuları inceleyin: