Başlama

Bu kılavuzda, AdMob yerel reklamları bir Unity uygulamasına uygulamak için yerel reklam eklentisini nasıl kullanacağınız ve bu süreçte 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 tamamen uyumlu reklamlar oluşturmasına olanak tanır. Unity uygulamalarındaki yerel koddan tam olarak yararlanan son derece özel öğeler oluşturmak için bu teknolojiyi kullanabilirsiniz.

Yerel reklamlar, uygulamalarınızı oluştururken kullandığınız GameObjects türleri kullanılarak gösterilir ve bu reklamlar, yaşadıkları kullanıcı deneyiminin görsel tasarımına uyacak şekilde biçimlendirilebilir. Yerel reklam yüklendiğinde uygulamanız öğelerini içeren bir yerel nesne alır ve Unity uygulaması (SDK yerine) bunları 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 reklamlar eklentisini indirin ve yükleyin.

Yerel reklam biçimlerini yükleme

Yerel reklamlar, oluşturma sırasında özelleştirmek için 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 kaydolun

Yerel bir 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 yetki verilmiş kullanıcılar ekleyin.

OnNativeAdLoaded

Yerel bir reklam başarıyla yüklendiğinde çağrılır. Yüklenen reklama erişmesi için bu etkinlikte bir temsilciye sahip olmanız gerekir.

OnAdFailedToLoad

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

Reklamı yükle

Bir AdLoader oluşturmayı tamamladıktan sonra, reklam istemek için öğenin LoadAd() yöntemini çağırın:

adLoader.LoadAd(new AdRequest.Builder().Build());

Reklam isteğini bir araya getirme

Aşağıdaki kod snippet'i yerel reklam isteğinde bulunacak şekilde yapılandırılan, başarılı ve başarısız reklam yüklemeleri için yetki verilen kişileri ayarlayan ve reklam isteği gönderen bir AdLoader öğesinin 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ğinin türü EventHandle<AdFailedToLoadEventArgs>. Bu etkinlikten gelen reklam yükleme hatasının nedeni 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 gösterin

Yerel Reklam yüklendiğinde, ilgili reklam biçimi için reklam etkinliği çağrılır. Bu durumda reklamı göstermekten uygulamanız sorumlu olur ancak bu işlemi hemen yapmak zorunda değildir.

Reklam yükünü yönetin

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

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

Yerel reklam öğelerini alma

Reklamlar yüklendikten sonra öğelerin öğelerine aşağıda gösterildiği gibi erişilebilir. Grafik öğeleri 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 (örneğin, bir Unity komut dosyasının Update() yönteminden) erişilmesi gerektiğini unutmayın. Ayrıca, aşağıdaki öğelerin her zaman mevcut olduğunun 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 de önemlidir. Bu nedenle, arka plan renklerini ve resimlerini uygun şekilde seçin.

GameObjects'i reklam öğesi için kaydet

Reklam öğesinin Unity uygulamanızda gösterilmesi için GameObject öğesini kaydetmeniz gerekir. Kayıt başarılı olursa GameObject cihazını kaydetmek için kullanılan yöntem bir bool döndürür. Bir List<GameObject> için yöntem, başarıyla kaydedilen GameObject sayısını belirten bir int döndürür.

Reklam öğesinin kaydı başarısız olursa ilgili yerel reklamın aldığı 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ıcı bileşenine sahip olmalıdır. Reklam öğelerine kayıtlı GameObject nesnelerinde Collider bileşen yoksa veya yanlış yapılandırılmış bir bileşene sahipse yerel reklamlar düzgün çalışmaz.

Aşağıdaki kod snippet'inde, GameObject öğesine bir 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 metnine uygun ş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österileceğini ve öğenin gösterilmesi için kullanılacak GameObject öğesinin nasıl kaydedileceğini gösterir. Reklam öğesini alma ve yerel reklam sınıfına kaydetme süreci, 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;
}