Başlama

Bu kılavuzda, AdMob yerel reklamlarını Unity uygulamasına uygulamak için yerel reklamlar eklentisinin nasıl kullanılacağı ve bu arada dikkate alınması gereken bazı önemli noktalar gösterilmektedir.

Yerel 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 yerel reklam biçimi, yayıncıların içerikle uyumlu reklamlar oluşturmasına olanak tanır. Unity uygulamalarındaki yerel koddan tam olarak yararlanan son derece özel oluşturma işlemleri uygulamak için bu teknolojiyi kullanabilirsiniz.

Yerel reklamlar, halihazırda uygulamalarınızı oluşturmakta olduğunuz GameObjects türleri kullanılarak gösterilir ve bu tür uygulamaların içinde bulundukları kullanıcı deneyiminin görsel tasarımına uyacak şekilde biçimlendirilebilir. Yerel reklam yüklendiğinde uygulamanız öğenin öğelerini içeren bir yerel nesne alır ve bunları SDK yerine Unity uygulaması 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.
  • Yerel reklamlar eklentisini indirip yükleyin.

Yerel reklam biçimlerini yükleme

Yerel reklamlar, oluşturma sırasında özelleştirilmesi için kendi AdLoader.Builder sınıfına sahip 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 kaydolun

Bir yerel reklam başarıyla yüklendiğinde veya yüklenemediğinde bildirim almak istiyorsanız aşağıda listelenen etkinlikler için AdLoader sınıfına yetki verilmiş kullanıcıları ekleyin.

OnNativeAdLoaded

Yerel reklam başarıyla yüklendiğinde çağrılır. Yüklenen reklama erişmek için bu etkinlikte bir yetki verilmiş olması gerekir.

OnAdFailedToLoad

Yerel reklam yüklenemediğinde çağrılır.

Reklamı yükle

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'i, doğal reklam isteyecek şekilde yapılandırılmış, başarılı ve başarısız reklam yüklemeleri için yetki verilmiş kullanıcıları belirleyen ve reklam isteğinde bulunan bir AdLoader'ın nasıl oluşturulacağını göstermektedir.

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 ele alma

OnAdFailedToLoad etkinliği EventHandle<AdFailedToLoadEventArgs> türünde. Bir reklam yükleme hatasının nedeninin bu etkinlikten ayrıştırılması aşağıda gösterilmektedir.

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 yayınlama

Yerel reklam yüklendiğinde ilgili reklam biçimi için reklam etkinliği çağrılır. Bu durumda reklamın gösterilmesinden uygulamanız sorumlu olur, ancak bunu hemen yapması gerekmez.

Reklam sayısını yönetme

OnNativeAdLoaded etkinliği EventHandler<NativeAdEventArgs> türünde. NativeAd nesnesine kapsüllenmiş reklam, aşağıda gösterildiği gibi NativeAdEventArgs kaynağından alınabilir:

private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
}

Doğal reklam öğeleri 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ğı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, yerel 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.

GameObjects'i reklam öğesi için kaydetme

Unity uygulamanızda reklam öğesinin görüntülenmesi 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. Yöntem, List<GameObject> için başarıyla kaydedilen GameObject sayısını gösteren bir int döndürür.

Reklam öğesinin kaydı başarısız olursa karşılık gelen doğal reklamın gösterimleri 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 öğesinin boyutunu ve şeklini temsil eden dışbükey Çarpıştırıcı bileşenine sahip olmalıdır. Reklam öğelerine kaydedilen GameObject nesnede Collider bileşeni eksikse veya yanlış yapılandırılmış bir bileşen varsa yerel reklamlar doğru şekilde çalışmaz.

Aşağıdaki kod snippet'inde GameObject öğesine, yerel reklamın başlık reklam öğesini göstermek için TextMesh kullanan bir BoxCollider eklenmiştir. BoxCollider, GameObject öğesine eklendikten sonra TextMesh bileşeninin metnini içerecek ş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üklenmiş bir yerel 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 yerel 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;
}