Bu kılavuzda, AdMob doğal reklamlarını bir Unity uygulamasına uygulamak için doğal reklam eklentisinin nasıl kullanılacağı ve bu süreçte dikkat edilmesi gereken bazı önemli noktalar açıklanmaktadır.
Doğal reklamlar, yerleştirildikleri kullanıcı deneyiminin hem şekline hem de işlevine uygundur. Yayınlandıkları uygulamanın görsel tasarımına da uyum sağlarlar. AdMob'un doğal reklamlar biçimi, yayıncılara içerikle tamamen uyumlu reklamlar oluşturma olanağı tanır. Unity uygulamalarındaki yerel koddan tam olarak yararlanan, son derece özel oluşturmalar uygulamak için bu teknolojiyi kullanabilirsiniz.
Yerel reklamlar, uygulamalarınızı oluşturmak için kullandığınız GameObjects
türleriyle gösterilir ve yerleştirildikleri kullanıcı deneyiminin görsel tasarımıyla eşleşecek şekilde biçimlendirilebilir. Yerel bir reklam yüklendiğinde uygulamanız, öğelerini içeren bir yerel nesne alır ve bu öğeler SDK yerine Unity uygulaması tarafından gösterilir.
Ön koşullar
- Google Mobile Ads Unity eklentisi 7.0.0 veya daha yeni bir sürüm.
- Başlangıç kılavuzunu tamamlayın.
- Yerel reklam eklentisini indirin ve yükleyin.
Yerel reklam biçimlerini yükleme
Yerel reklamlar, oluşturma sırasında özelleştirilebilecek kendi AdLoader.Builder
sınıfına sahip olan AdLoader
sınıfı aracılığıyla yüklenir. ForNativeAd()
yöntemi, AdLoader'ı yerel reklamları işleyecek şekilde yapılandırır.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
AdLoader reklam etkinliklerine kaydolma
Doğal bir reklam başarıyla yüklendiğinde veya yüklenmediğinde bildirim almak için aşağıda listelenen etkinlikler için AdLoader
sınıfına temsilciler ekleyin.
OnNativeAdLoaded
Doğal bir reklam başarıyla yüklendiğinde çağrılır. Bu etkinliğin, yüklenen reklama erişebilmesi için bir temsilciye sahip olması gerekir.
OnAdFailedToLoad
Doğal reklam yüklenemezse çağrılır.
Reklamı yükleme
AdLoader
oluşturmayı tamamladığınızda reklam istemek için LoadAd()
yöntemini çağırın:
adLoader.LoadAd(new AdRequest.Builder().Build());
Reklam isteğini bir araya getirme
Aşağıdaki kod snippet'inde, doğal reklam isteyecek şekilde yapılandırılmış, başarılı ve başarısız reklam yüklemeleri için temsilci ayarlayan ve reklam isteği gönderen bir AdLoader
'ün nasıl oluşturulacağı gösterilmektedir.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
Başarısız reklam yüklemelerini işleme
OnAdFailedToLoad
etkinliği EventHandle<AdFailedToLoadEventArgs>
türündedir.
Bu etkinlikten alınan reklam yükleme hatasının nedeninin ayrıştırılması aşağıda gösterilmiştir.
private void RequestNativeAd() {
...
adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
Debug.Log("Native ad failed to load: " + args.Message);
}
Doğal reklam görüntüleme
Yerel reklam yüklendiğinde, ilgili reklam biçiminin reklam etkinliği çağrılır. Ardından, reklamı göstermek uygulamanızın sorumluluğundadır ancak bunu hemen yapması gerekmez.
Reklam sayısını yönetme
OnNativeAdLoaded
etkinliği EventHandler<NativeAdEventArgs>
türündedir. NativeAd
nesnesine yerleştirilmiş reklam, aşağıdaki gibi NativeAdEventArgs
öğesinden alınabilir:
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
Doğal reklam öğelerini alma
Reklamlar yüklendikten sonra öğelerine aşağıdaki gibi erişilebilir. Grafik öğeler Texture2D
nesnesi olarak, metin öğeleri ise string
nesnesi olarak döndürülür.
private bool nativeAdLoaded;
private NativeAd nativeAd;
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for the icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
// Get string for headline asset of native ad.
string headline = this.nativeAd.GetHeadlineText();
}
}
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}
Reklam öğelerine yalnızca ana iş parçacığında (ör. Unity komut dosyasının Update()
yönteminden) erişilmesi gerektiğini unutmayın. Ayrıca aşağıdaki öğelerin her zaman mevcut olmasının garanti edilmediğini ve gösterilmeden önce kontrol edilmesi gerektiğini unutmayın:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
Reklam Seçenekleri öğesi
Reklam Seçenekleri reklam öğesinin doğal reklamın bir parçası olarak gösterilmesi zorunludur. Ayrıca, Reklam Seçenekleri reklam öğesinin kolayca görülebilmesi önemlidir. Bu nedenle, arka plan renklerini ve resimlerini uygun şekilde seçin.
Reklam öğesi için GameObjects'i kaydetme
Reklam öğesinin Unity uygulamanızda gösterilmesi için GameObject
öğesini kaydetmeniz gerekir. Kayıt başarılı olursa GameObject
öğesini kaydetmek için kullanılan yöntem bir bool
döndürür. List<GameObject>
için yöntem, başarıyla kaydedilen GameObject
sayısını belirten bir int
döndürür.
Bir reklam öğesinin kaydı başarısız olursa ilgili doğal reklamdaki gösterimler ve tıklamalar tanınmaz.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
Bir reklam öğesi için kaydedilen GameObject
, GameObject
'ün boyutunu ve şeklini temsil eden dışbükey bir Collider bileşenine sahip olmalıdır. Reklam öğelerine kaydedilen GameObject
nesnelerinde Collider
bileşenleri eksikse veya yanlış yapılandırılmışsa yerel reklamlar düzgün çalışmaz.
Aşağıdaki kod snippet'inde, doğal bir reklamın başlık reklam öğesini görüntülemek için TextMesh
kullanan GameObject
'e bir BoxCollider
eklenmiştir. BoxCollider
, GameObject
'e eklendikten sonra TextMesh
bileşeninin metnini alacak şekilde otomatik olarak ölçeklenir.
// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;
// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;
// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();
Demo
Aşağıdaki kodda, başarıyla yüklenen bir doğal reklamın simge öğesinin nasıl alınacağı, bir Quad
'ün dokusunu ayarlayarak simge reklam öğesinin nasıl gösterileceği ve öğeyi göstermek için kullanılacak GameObject
'un nasıl kaydedileceği gösterilmektedir. Reklam öğesini alma ve doğal reklam sınıfına kaydetme işlemi, uygulamanın gösterdiği her öğe için tekrarlanmalıdır.
private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
icon.transform.position = new Vector3(1, 1, 1);
icon.transform.localScale = new Vector3(1, 1, 1);
icon.GetComponent<Renderer>().material.mainTexture = iconTexture;
// Register GameObject that will display icon asset of native ad.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
}
}
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}