Başlama

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 dikkate alınması 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, kullandığınız GameObjects türlerini kullanarak gösterilir oluşturmak için kullanabilirsiniz. Ayrıca, uygulamanızın görsel tasarımına uyacak şekilde yaşattıkları kullanıcı deneyimi. 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.
  • İndir ve yerel reklam eklentisini 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 kaydolun

Yerel 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 delege sağlar.

OnNativeAdLoaded

Doğal bir reklam başarıyla yüklendiğinde çağrılır. Bu nedenle, Bu etkinlik için yüklenen reklama erişim yetkisi verin.

OnAdFailedToLoad

Yerel reklam yüklenemediğinde ç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ünde. Bu etkinlikteki 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çimi için reklam etkinliği çağrılır. Bu durumda reklamınızın gösterilmesinden uygulamanız sorumludur, ancak bunu hemen yapması gerekir.

Reklam sayısını yönetme

OnNativeAdLoaded etkinliği EventHandler<NativeAdEventArgs> türündedir. İlgili içeriği oluşturmak için kullanılan reklam öğesi, NativeAd nesnesi içine yerleştirilmiş şekilde, Gösterilen NativeAdEventArgs:

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 nesne olarak döndürülür, metin öğeleri ise string nesne.

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 erişilmesi gerektiğini unutmayın. Örneğin, Unity komut dosyasının Update() yönteminden alınır. Ayrıca aşağıdaki öğelerin her zaman bulunacağı garanti edilmez ve bu durumun görüntülenen:

  • 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. Reklam Seçenekleri reklam öğesinin kolayca görülmesi de önemlidir. Bu nedenle, arka plan renklerini ve resimlerini uygun şekilde ayarlayın.

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, karşılık gelen doğal reklam 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. Eğer Reklam öğelerine kaydedilen GameObject nesnede Collider bileşen eksik veya yanlış yapılandırılmış bir reklamınız varsa 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 GameObject'a TextMesh kullanan 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. Bu süreç reklam öğesini alıp yerel reklam sınıfına kaydettirmek tekrarlandığından emin olun.

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;
}