Reklam önceden yükleme, GMA Next-Gen SDK içinde Google tarafından yönetilen bir reklam yükleme özelliğidir. Bu özellik, reklam yükleme ve önbelleğe alma işlemlerini sizin adınıza yönetir. Reklam önceden yükleme, reklam yüklemeyi yönetme şeklinizde bir değişiklik yapılmasını gerektirir. Reklam önceden yükleme özelliğini kullanarak performansı optimize etmek için özel önbelleğe almayı devre dışı bırakın ve bu sorumluluğu GMA Next-Gen SDK'ya devredin.
Reklam önceden yükleme, manuel reklam yüklemeye kıyasla aşağıdaki avantajları sunar:
- Referans yönetimi: Yüklenen reklamları tutar. Böylece, göstermeye hazır olana kadar referansları korumanız gerekmez.
- Otomatik yeniden yükleme: Önbellekten bir reklam çektiğinizde otomatik olarak yeni bir reklam yükler.
- Yönetilen yeniden denemeler: Başarısız olan istekleri eksponansiyel geri yükleme kullanarak otomatik olarak yeniden dener.
- Geçerlilik süresi yönetimi: Reklamları geçerlilik süreleri dolmadan (genellikle bir saat sonra) otomatik olarak yeniler.
- Önbellek optimizasyonu: Birden büyük bir önbellek boyutu kullanıyorsanız GMA Next-Gen SDK, en iyi reklamı sunmak için önbellek sırasını optimize eder.
Bu kılavuzda, önceden yüklenen reklamların yapılandırılması, önceden yüklenen reklamların kullanılabilirliğinin kontrol edilmesi ve önceden yüklenen reklamın gösterilmesi ele alınmaktadır.
Ön koşullar
Eğiticiye devam etmeden önce aşağıdaki öğeleri tamamlamanız gerekir:
- GMA Next-Gen SDK 0.14.0-alpha01 veya sonraki bir sürümünü yükleyin.
- GMA Next-Gen SDK kurulumunu yapın.
- İsteğe bağlı: Örnek uygulamayı indirip çalıştırın.
Reklamları önceden yüklemeye başlama
Reklamları önceden yüklemeye başlamak için startPreload() işlevini çağırın. Bu yöntemi yalnızca uygulamanın başında bir kez çağırın. startPreload() yöntemini çağırdıktan sonra GMA Next-Gen SDK, reklamları otomatik olarak önceden yükler ve önceden yüklenmiş yapılandırmalar için başarısız olan istekleri yeniden dener.
Aşağıdaki örnekte reklamlar önceden yüklenmeye başlar:
Kotlin
private fun startPreloading(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
Java
private void startPreloading(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}
Önceden yüklenmiş reklamı alma ve gösterme
Reklam önceden yükleme kullanılırken GMA Next-Gen SDK, önbelleğe alınmış reklamları tutar.
Reklam göstermek istediğinizde pollAd() işlevini çağırın.
GMA Next-Gen SDK, kullanılabilir reklamı alır ve arka planda bir sonraki reklamı otomatik olarak önceden yükler.
Reklam göstermeye hazır olana kadar bu yöntemi çağırmaktan kaçının. Reklamları önbellekte tutmak, GMA Next-Gen SDK süresi dolan reklamların otomatik olarak yenilenmesini ve önbellek optimizasyonunun yapılmasını sağlar.
Aşağıdaki örnekte, önceden yüklenmiş bir reklam alınır ve gösterilir:
Kotlin
private fun pollAndShowAd(activity: Activity, adUnitId: String) {
// Polling returns the next available ad and loads another ad in the background.
val ad = InterstitialAdPreloader.pollAd(adUnitId)
// Interact with the ad object as needed.
ad?.apply {
Log.d(TAG, "Interstitial ad response info: ${this.getResponseInfo()}")
this.adEventCallback =
object : InterstitialAdEventCallback {
override fun onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.")
}
override fun onAdPaid(value: AdValue) {
Log.d(TAG, "Interstitial ad onPaidEvent: ${value.valueMicros} ${value.currencyCode}")
}
}
// Show the ad.
ad.show(activity)
}
}
Java
private void pollAndShowAd(Activity activity, String adUnitId) {
// Polling returns the next available ad and loads another ad in the background.
final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);
// Interact with the ad object as needed.
if (ad != null) {
Log.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
ad.setAdEventCallback(
new InterstitialAdEventCallback() {
@Override
public void onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.");
}
@Override
public void onAdPaid(AdValue value) {
Log.d(
TAG,
"Interstitial ad onPaidEvent: "
+ value.getValueMicros()
+ " "
+ value.getCurrencyCode());
}
});
// Show the ad.
ad.show(activity);
}
}
Önceden yükleme reklamlarının kullanılabilirliğini kontrol etme
Reklam kullanılabilirliğini kontrol etmek için aşağıdakilerden birini seçin:
- Önceden yüklenen reklamların kullanılabilirliğini öğrenme
- Önceden yükleme reklamı kullanılabilirliğini dinleme
Önceden yüklenmiş reklamların kullanılabilirliğini alma
Aşağıdaki örnekte reklamın kullanılabilirliği kontrol edilir:
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean {
return InterstitialAdPreloader.isAdAvailable(adUnitId)
}
Java
private boolean isAdAvailable(String adUnitId) {
return InterstitialAdPreloader.isAdAvailable(adUnitId);
}
Önceden yüklenmiş reklamların kullanılabilirliğini dinleme
Reklamlar başarıyla önceden yüklendiğinde, önceden yüklenemediğinde veya reklam önbelleği tükendiğinde bildirim almak için önceden yükleme etkinliklerine kaydolun.
Önceden yükleme etkinlikleri analiz amacıyla kullanılır. Önceden yükleme etkinliği geri çağırmaları içinde:
startPreload()numaralı telefonu aramayın.- Reklam hemen gösterilmeyecekse
pollAd()işlevini çağırmaktan kaçının.
Aşağıdaki örnekte reklam etkinliklerine kaydolunur:
Kotlin
private fun startPreloadingWithCallback(adUnitId: String) {
val preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
object : PreloadCallback {
override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
Log.i(
TAG,
("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
)
// [Optional] Get the error response info for additional details.
// val responseInfo = adError.responseInfo
}
override fun onAdsExhausted(preloadId: String) {
Log.i(TAG, "Interstitial preload ad $preloadId is not available")
// [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
}
override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
Log.i(TAG, "Interstitial preload ad $preloadId is available")
}
}
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
}
Java
private void startPreloadingWithCallback(String adUnitId) {
PreloadCallback preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
new PreloadCallback() {
@Override
public void onAdFailedToPreload(String preloadId, LoadAdError adError) {
Log.e(
TAG,
String.format(
"Interstitial preload ad %s failed to load with error: %s",
preloadId, adError.getMessage()));
// [Optional] Get the error response info for additional details.
// ResponseInfo responseInfo = adError.getResponseInfo();
}
@Override
public void onAdsExhausted(String preloadId) {
Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available");
// [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
}
@Override
public void onAdPreloaded(String preloadId, ResponseInfo responseInfo) {
Log.i(TAG, "Interstitial preload ad " + preloadId + " is available");
}
};
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
}
Reklamların önceden yüklenmesini durdurma
Oturumda bir önceden yükleme kimliği için tekrar reklam göstermeniz gerekmiyorsa reklamların önceden yüklenmesini durdurabilirsiniz. Belirli bir önceden yükleme kimliği için reklamların önceden yüklenmesini durdurmak istiyorsanız önceden yükleme kimliğiyle destroy() işlevini çağırın.
Arabellek boyutunu ayarlama
Arabellek boyutu, bellekte tutulan önceden yüklenmiş reklamların sayısını kontrol eder. Google, varsayılan olarak bellek tüketimi ile reklam yayınlama gecikmesi arasında denge kurmak için arabellek boyutunu optimize eder. Uygulamanız, bir sonraki reklam yüklenmeden önce reklam gösteriyorsa bellekte tutulan reklam sayısını artırmak için özel bir arabellek boyutu ayarlayabilirsiniz. En fazla dört arabellek boyutu öneririz.
Kotlin
private fun setBufferSize(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 3)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
Java
private void setBufferSize(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 3);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}