Geçiş reklamları, barındıkları uygulamanın arayüzünü kaplayan tam ekran reklamlardır. Genellikle bir uygulamanın akışındaki doğal geçiş noktalarında (ör. oyun seviyeleri arasındaki duraklatmalar sırasında) gösterilir. Bir uygulama geçiş reklamı gösterdiğinde kullanıcı, reklama dokunup hedef sayfaya devam edebilir veya reklamı kapatıp uygulamaya geri dönebilir.
Bu kılavuzda, geçiş reklamlarının Unity uygulamasına nasıl entegre edileceği açıklanmaktadır.
Ön koşullar
- Başlangıç kılavuzunu tamamlayın.
Her zaman test reklamlarıyla test yapın
Aşağıdaki örnek kod, test reklamları istemek için kullanabileceğiniz bir reklam birimi kimliği içerir. Her istek için yayın reklamları yerine test reklamları döndürecek şekilde özel olarak yapılandırılmıştır. Bu sayede güvenli bir şekilde kullanılabilir.
Ancak Ad Manager web arayüzüne bir uygulama kaydettikten ve uygulamanızda kullanmak için kendi reklam birimi kimliklerinizi oluşturduktan sonra, geliştirme sırasında cihazınızı test cihazı olarak açıkça yapılandırın.
/21775744923/example/interstitial
Mobile Ads SDK'sını ilk kullanıma hazırlayın
Reklamları yüklemeden önce uygulamanızın MobileAds.Initialize()
çağrısını yaparak Mobile Ads SDK'sını ilk kullanıma hazırlamasını sağlayın. Bu işlemin ideal olarak uygulamanın lansmanında bir kez yapılması gerekir.
using GoogleMobileAds;
using GoogleMobileAds.Api;
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
public void Start()
{
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize((InitializationStatus initStatus) =>
{
// This callback is called once the MobileAds SDK is initialized.
});
}
}
Uyumlulaştırma kullanıyorsanız reklamları yüklemeden önce geri çağırma işlevinin gerçekleşmesini bekleyin. Bu, tüm uyumlulaştırma bağdaştırıcıların başlatılmasını sağlar.
Uygulama
Geçiş reklamlarını entegre etmenin ana adımları şunlardır:
- Geçiş reklamını yükleme
- Geçiş reklamını gösterme
- Geçiş reklamı etkinliklerini dinleme
- Geçiş reklamını temizleyin
- Sonraki geçiş reklamını önceden yükleme
Geçiş reklamını yükleme
Geçiş reklamı yükleme işlemi, InterstitialAd
sınıfındaki statik Load()
yöntemi kullanılarak gerçekleştirilir. load yöntemi için bir reklam birimi kimliği, bir AdManagerAdRequest
nesnesi ve reklam yükleme başarılı olduğunda veya başarısız olduğunda çağrılan bir tamamlama işleyici gerekir. Yüklenen AdManagerInterstitialAd
nesnesi, tamamlama işleyicide parametre olarak sağlanır. Aşağıdaki örnekte bir AdManagerInterstitialAd
öğesinin nasıl yükleneceği gösterilmektedir.
// This ad unit is configured to always serve test ads.
private string _adUnitId = "/21775744923/example/interstitial";
private InterstitialAd _interstitialAd;
/// <summary>
/// Loads the interstitial ad.
/// </summary>
public void LoadInterstitialAd()
{
// Clean up the old ad before loading a new one.
if (_interstitialAd != null)
{
_interstitialAd.Destroy();
_interstitialAd = null;
}
Debug.Log("Loading the interstitial ad.");
// create our request used to load the ad.
var adRequest = new AdManagerAdRequest();
// send the request to load the ad.
AdManagerInterstitialAd.Load(_adUnitId, adRequest,
(InterstitialAd ad, LoadAdError error) =>
{
// if error is not null, the load request failed.
if (error != null || ad == null)
{
Debug.LogError("interstitial ad failed to load an ad " +
"with error : " + error);
return;
}
Debug.Log("Interstitial ad loaded with response : "
+ ad.GetResponseInfo());
_interstitialAd = ad;
});
}
Geçiş reklamını gösterme
Yüklenen bir geçiş reklamını göstermek için AdManagerInterstitialAd
örneğinde Show()
yöntemini çağırın. Reklamlar her yükleme için bir kez gösterilebilir. Reklamın gösterilmeye hazır olduğunu doğrulamak için CanShowAd()
yöntemini kullanın.
/// <summary>
/// Shows the interstitial ad.
/// </summary>
public void ShowInterstitialAd()
{
if (_interstitialAd != null && _interstitialAd.CanShowAd())
{
Debug.Log("Showing interstitial ad.");
_interstitialAd.Show();
}
else
{
Debug.LogError("Interstitial ad is not ready yet.");
}
}
Geçiş reklamı etkinliklerini dinleme
Reklamınızın davranışını daha da özelleştirmek için reklamın yaşam döngüsünde çeşitli etkinliklere bağlanabilirsiniz. Aşağıda gösterildiği gibi bir temsilci kaydederek bu etkinlikleri dinleyin.
private void RegisterEventHandlers(InterstitialAd interstitialAd)
{
// Raised when the ad is estimated to have earned money.
interstitialAd.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("Interstitial ad paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
// Raised when an impression is recorded for an ad.
interstitialAd.OnAdImpressionRecorded += () =>
{
Debug.Log("Interstitial ad recorded an impression.");
};
// Raised when a click is recorded for an ad.
interstitialAd.OnAdClicked += () =>
{
Debug.Log("Interstitial ad was clicked.");
};
// Raised when an ad opened full screen content.
interstitialAd.OnAdFullScreenContentOpened += () =>
{
Debug.Log("Interstitial ad full screen content opened.");
};
// Raised when the ad closed full screen content.
interstitialAd.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Interstitial ad full screen content closed.");
};
// Raised when the ad failed to open full screen content.
interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Interstitial ad failed to open full screen content " +
"with error : " + error);
};
}
Geçiş reklamını temizleyin
Bir AdManagerInterstitialAd
ile işiniz bittiğinde, referansınızı bırakmadan önce Destroy()
yöntemini çağırdığınızdan emin olun:
_interstitialAd.Destroy();
Bu işlem, eklentiye nesnenin artık kullanılmadığını ve kapladığı belleğin geri alınabileceğini bildirir. Bu yöntemin çağrılmaması bellek sızıntısına neden olur.
Sonraki geçiş reklamını önceden yükleme
Geçiş reklamları tek kullanımlık bir nesnedir. Bu, geçiş reklamı gösterildikten sonra nesnenin tekrar kullanılamayacağı anlamına gelir. Başka bir geçiş reklamı istemek için yeni bir AdManagerInterstitialAd
nesnesi oluşturun.
Bir sonraki gösterim fırsatı için geçiş reklamı hazırlamak üzere OnAdFullScreenContentClosed
veya OnAdFullScreenContentFailed
reklam etkinliği oluşturulduktan sonra geçiş reklamını önceden yükleyin.
private void RegisterReloadHandler(InterstitialAd interstitialAd)
{
// Raised when the ad closed full screen content.
interstitialAd.OnAdFullScreenContentClosed += ()
{
Debug.Log("Interstitial Ad full screen content closed.");
// Reload the ad so that we can show another as soon as possible.
LoadInterstitialAd();
};
// Raised when the ad failed to open full screen content.
interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Interstitial ad failed to open full screen content " +
"with error : " + error);
// Reload the ad so that we can show another as soon as possible.
LoadInterstitialAd();
};
}
Uygulama etkinlikleri
Uygulama etkinlikleri, uygulama kodlarına mesaj gönderebilen reklamlar oluşturmanıza olanak tanır. Uygulama, bu mesajlara göre işlem yapabilir.
AppEvent
kullanarak Ad Manager'a özgü uygulama etkinliklerini dinleyebilirsiniz. Bu etkinlikler, load çağrılmadan önce bile reklamın yaşam döngüsü sırasında herhangi bir zamanda gerçekleşebilir.
namespace GoogleMobileAds.Api.AdManager;
/// The App event message sent from the ad.
public class AppEvent
{
// Name of the app event.
string Name;
// Argument passed from the app event.
string Value;
}
OnAppEventReceived
, bir reklamda uygulama etkinliği gerçekleştiğinde tetiklenir. Bu etkinliğin kodunuzda nasıl ele alınacağına dair bir örnek aşağıda verilmiştir:
_interstitialAd.OnAppEventReceived += (AppEvent args) =>
{
Debug.Log($"Received app event from the ad: {args.Name}, {args.Value}.");
};
Aşağıda, adı color olan bir uygulama etkinliğine bağlı olarak uygulamanızın arka plan renginin nasıl değiştirileceğini gösteren bir örnek verilmiştir:
_interstitialAd.OnAppEventReceived += (AppEvent args) =>
{
if (args.Name == "color")
{
Color color;
if (ColorUtility.TryParseColor(arg.Value, out color))
{
gameObject.GetComponent<Renderer>().material.color = color;
}
}
};
Renk uygulama etkinliği gönderen ilgili reklam öğesi aşağıda verilmiştir:
<html>
<head>
<script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
// Send a color=green event when ad loads.
admob.events.dispatchAppEvent("color", "green");
document.getElementById("ad").addEventListener("click", function() {
// Send a color=blue event when ad is clicked.
admob.events.dispatchAppEvent("color", "blue");
});
});
</script>
<style>
#ad {
width: 320px;
height: 50px;
top: 0px;
left: 0px;
font-size: 24pt;
font-weight: bold;
position: absolute;
background: black;
color: white;
text-align: center;
}
</style>
</head>
<body>
<div id="ad">Carpe diem!</div>
</body>
</html>
En iyi uygulamalar
- Geçiş reklamlarının uygulamanız için doğru reklam türü olup olmadığını belirleyin.
- Geçiş reklamları, doğal geçiş noktalarının olduğu uygulamalarda en iyi sonucu verir. Uygulama içinde resim paylaşma veya oyun seviyesini bitirme gibi bir görevin tamamlanması, geçiş noktası olarak değerlendirilebilir. Uygulamanızın akışında geçiş reklamlarının en iyi şekilde gösterileceği noktaları ve kullanıcının nasıl yanıt verebileceğini göz önünde bulundurun.
- Geçiş reklamı gösterilirken işlemi duraklatın.
- Metin, resim veya video gibi birkaç farklı türde geçiş reklamı kullanabilirsiniz. Uygulamanız bir geçiş reklamı gösterdiğinde, reklamın bu kaynaklardan yararlanabilmesi için bazı kaynakların kullanımını da askıya alması önemlidir. Örneğin, geçiş reklamı gösterme çağrısı yaptığınızda uygulamanız tarafından üretilen tüm ses çıkışlarını duraklattığınızdan emin olun. Kullanıcı reklamla etkileşimi bitirdiğinde çağrılabilecek
OnAdFullScreenContentClosed()
etkinliğinde sesleri oynatmaya devam edebilirsiniz. Ayrıca, reklam gösterilirken oyun döngüsü gibi yoğun hesaplama görevlerini geçici olarak duraklatabilirsiniz. Bu sayede kullanıcı, yavaş veya yanıt vermeyen grafikler ya da takılan videolar yaşamaz. - Kullanıcıyı reklamlarla boğmayın.
- Uygulamanızda geçiş reklamlarının sıklığını artırmak, geliri artırmanın mükemmel bir yolu gibi görünse de kullanıcı deneyimini olumsuz etkileyebilir ve tıklama oranlarını düşürebilir. Kullanıcıların uygulamanızı kullanmanın keyfini çıkaramayacak kadar sık kesintiye uğramamasını sağlayın.
Ek kaynaklar
- Merhaba Dünya örneği: Tüm reklam biçimlerinin minimum düzeyde uygulanması.