Bu kılavuzda, AdMob doğal reklamlarını Unity uygulamasında uygulamak için doğal reklamlar eklentisinin nasıl kullanılacağı ve bu süreçte dikkate alınması gereken bazı önemli noktalar gösterilmektedir.
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 olan 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.
Doğal reklamlar, uygulamalarınızı oluştururken kullandığınız GameObjects
türleriyle gösterilir ve içinde bulundukları kullanıcı deneyiminin görsel tasarımına uyacak şekilde biçimlendirilebilir. Bir yerel reklam yüklendiğinde uygulamanız, öğelerini içeren bir yerel nesne alır ve bunları SDK yerine Unity uygulaması görüntüler.
Ön koşullar
- Google Mobile Ads Unity eklentisi 7.0.0 veya daha sonraki bir sürüm
- Başlangıç kılavuzunu tamamlayın.
- Yerel reklam eklentisini indirip yükleyin.
Yerel reklam biçimlerini yükleme
Yerel reklamlar, oluşturma sırasında özelleştirilebilmesi için 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
Bir doğal reklam başarıyla yüklendiğinde veya yüklenemediğinde bildirim almak için aşağıdaki etkinlikler için AdLoader
sınıfına temsilciler ekleyin.
OnNativeAdLoaded
Bir doğal reklam başarıyla yüklendiğinde çağrılır. Yüklenen reklama erişmek için bu etkinlik için bir temsilci olması gerekir.
OnAdFailedToLoad
Bir doğal reklam yüklenemediğinde çağrılır.
Reklamı yükleme
Bir AdLoader
oluşturmayı tamamladığınızda reklam isteğinde bulunmak için LoadAd()
yöntemini çağırın:
adLoader.LoadAd(new AdRequest.Builder().Build());
Reklam isteğini bir araya getirin
Aşağıdaki kod snippet'i, yerel reklam isteğinde bulunacak şekilde yapılandırılmış, başarılı ve başarısız reklam yüklemeleri için temsilciler ayarlayan ve reklam isteğinde bulunan bir AdLoader
oluşturmayı gösterir.
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 bir reklam yükleme hatasının nedenini ayrıştırma işlemi 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
Bir yerel reklam yüklendiğinde, ilgili reklam biçiminin reklam etkinliği çağrılır. Reklamın gösterilmesi uygulamanızın sorumluluğundadır ancak reklamın hemen gösterilmesi zorunlu değildir.
Reklam sayısını yönetme
OnNativeAdLoaded
etkinliği, EventHandler<NativeAdEventArgs>
türündedir. NativeAd
nesnesine yerleştirilmiş reklam, aşağıdaki örnekte gösterildiği gibi NativeAdEventArgs
adresinden 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 şekilde erişilebilir. Grafik öğeler Texture2D
nesneleri, metin öğeleri ise string
nesneleri 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 olmayabileceğ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 önemli olduğundan arka plan renklerini ve resimlerini uygun şekilde seçin.
Reklam öğesi için GameObject'leri kaydetme
Reklam öğesinin Unity uygulamanızda gösterilmesi için GameObject
kaydetmeniz gerekir. Kayıt başarılı olursa GameObject
kaydetmek için kullanılan yöntem 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
boyutunu ve şeklini temsil eden bir dışbükey çarpışma bileşenine sahip olmalıdır. Reklam öğelerine kaydedilen GameObject
nesnelerinde Collider
bileşenler eksikse veya yanlış yapılandırılmışsa yerel reklamlar düzgün çalışmaz.
Aşağıdaki kod snippet'inde, bir yerel reklamın başlık reklam öğesini göstermek için TextMesh
kullanan GameObject
öğesine BoxCollider
eklenir. BoxCollider
, GameObject
öğesine eklendiğinde TextMesh
bileşeninin metnini barındıracak şekilde otomatik olarak ölçeklendirilir.
// 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 kod, başarıyla yüklenen bir doğal reklamın simge öğesinin nasıl alınacağını, Quad
dokusunu ayarlayarak simge reklam öğesinin nasıl görüntüleneceğini ve öğeyi görüntülemek için kullanılacak GameObject
öğesinin nasıl kaydedileceğini gösterir. 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;
}