Bu kılavuzda, bir Unity uygulamasında AdMob doğal reklamlarını uygulamak için doğal reklamlar eklentisini nasıl kullanacağınız ve bu süreçte dikkat etmeniz gereken bazı önemli noktalar gösterilmektedir.
Doğal reklamlar, yerleştirildikleri kullanıcı deneyiminin hem şekline hem de işlevine uygundur. Bu tür reklamlar yayınlandıkları uygulamanın görsel tasarımına da uyum sağlar. AdMob'un doğal reklam 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 yer aldıkları kullanıcı deneyiminin görsel tasarımına uyacak şekilde biçimlendirilebilir. Doğal reklam yüklendiğinde uygulamanız, öğelerini içeren bir yerel nesne alır ve Unity uygulaması (SDK yerine) bunları gösterir.
Ön koşullar
- Google Mobile Ads Unity eklentisi 7.0.0 veya daha sonraki bir sürüm
- Başlangıç kılavuzunu tamamlayın.
- Doğal reklamlar eklentisini indirip yükleyin.
Doğal reklam biçimlerini yükleme
Doğal reklamlar, oluşturma sırasında özelleştirmek için kendi AdLoader.Builder sınıfına sahip olan AdLoader sınıfı aracılığıyla yüklenir. ForNativeAd()
yöntemi, AdLoader'ı doğal 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ğıda listelenen etkinlikler için AdLoader sınıfına temsilciler ekleyin.
OnNativeAdLoaded
Doğal reklam başarıyla yüklendiğinde çağrılır. Yüklenen reklama erişmek için bu etkinliğin bir temsilcisi olması gerekir.
OnAdFailedToLoad
Doğal reklam yüklenemediğinde çağrılır.
Reklamı yükleme
AdLoader oluşturmayı tamamladıktan sonra reklam isteğinde bulunmak için LoadAd() yöntemini çağırın:
adLoader.LoadAd(new AdRequest.Builder().Build());
Reklam isteğini oluşturma
Aşağıdaki kod snippet'i, doğal reklamlar isteyecek şekilde yapılandırılmış bir AdLoader oluşturmayı, başarılı ve başarısız reklam yüklemeleri için temsilciler ayarlamayı ve reklam isteği göndermeyi 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 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österme
Doğal reklam yüklendiğinde ilgili reklam biçimi için reklam etkinliği çağrılır. Bu durumda uygulamanız reklamı göstermekle yükümlü olur ancak bunu hemen yapması gerekmez.
Reklam yükleme işlemini gerçekleştirme
OnNativeAdLoaded etkinliği EventHandler<NativeAdEventArgs> türündedir. NativeAd nesnesinde kapsüllenen reklam, NativeAdEventArgs nesnesinden aşağıdaki gibi 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ğıda gösterildiği gibi 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ığından (ör. bir Unity komut dosyasının Update() yönteminden) erişilmesi gerektiğini unutmayın. Ayrıca, aşağıdaki öğelerin her zaman mevcut olacağı garanti edilmez ve gösterilmeden önce kontrol edilmeleri gerekir:
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ı gösteren 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.
}
Reklam öğesi için kaydedilen GameObject, GameObject boyutunu ve şeklini temsil eden dışbükey bir Collider bileşenine sahip olmalıdır. Reklam öğelerine kayıtlı GameObject nesnelerinde Collider bileşenleri eksikse veya yanlış yapılandırılmış bir bileşen varsa doğal reklamlar düzgün çalışmaz.
Aşağıdaki kod snippet'inde, doğal reklamın başlık reklam öğesini görüntülemek için TextMesh kullanan GameObject öğesine BoxCollider eklenir. BoxCollider, GameObject bileşenine eklendikten sonra TextMesh bileşeninin metnine uyacak ş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österileceğini ve öğeyi göstermek 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;
}