Unity uygulamalarına AdMob uygulama açılış reklamı ekleme

1. Giriş

Bu codelab'de, bir Unity uygulamasına AdMob uygulama açılış reklamı uygulayacaksınız.

Neler oluşturacaksınız?

Bu codelab'de, Google Mobile Ads Unity eklentisini kullanarak Unity uygulamasında AdMob uygulama açılış reklamı uygulama konusunda yol gösterici bilgiler verilmektedir.

6338548c3f73e7cf.gif

Bu codelab'de çalışırken herhangi bir sorun yaşarsanız (kod hataları, dil bilgisi hataları, net olmayan ifadeler vb.) codelab'in sol alt köşesindeki Hata bildir bağlantısını kullanarak sorunu bildirin.

Neler öğreneceksiniz?

  • Google Mobil Reklamlar Unity eklentisini yapılandırma
  • Unity uygulamasında uygulama açılış reklamı uygulama

Gerekenler

  • Unity 2018.4 veya sonraki sürümler
  • Xcode 12 veya sonraki sürümler ve CocoaPods (iOS'e dağıtmak için)

AdMob deneyim düzeyinizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

2. Geliştirme ortamını ayarlama

Kodu indirme

ZIP dosyasını indirdikten sonra içeriğini çıkarın. admob-appopen-unity-main adlı bir klasörünüz olacak.

Alternatif olarak, GitHub deposunu komut satırından klonlayabilirsiniz:

$ git clone https://github.com/googlecodelabs/admob-appopen-unity

Depoda iki klasör bulunur:

  • android_studio_folder.png başlangıç: Bu codelab'de derleyeceğiniz başlangıç kodu.
  • android_studio_folder.png tamamlandı: Bu codelab için tamamlanmış kod.

3. AdMob uygulamasını ve reklam birimlerini ayarlama

Unity çok platformlu bir SDK olduğundan AdMob'da hem Android hem de iOS için uygulama ve reklam birimleri eklemeniz gerekir.

Android için kurulum

Android için kurulum yapmak üzere bir Android uygulaması eklemeniz ve reklam birimleri oluşturmanız gerekir.

Android uygulaması ekleme

  1. AdMob konsolunda Uygulamalar menüsünden UYGULAMA EKLE'yi tıklayın.
  2. Platform olarak Android'i seçin. Uygulama desteklenen bir uygulama mağazasında mı listeleniyor? sorusu sorulduğunda HAYIR'ı tıklayın.
  3. Uygulama adı alanına AdMob app open ad yazın.
  4. Bu codelab'i tamamlamak için kullanıcı metriklerinin etkinleştirilmesi gerekmez. Ancak, kullanıcı davranışını daha ayrıntılı bir şekilde anlamanıza olanak sağladığı için bunu yapmanızı öneririz. İşlemi tamamlamak için EKLE'yi tıklayın.

Reklam birimi oluşturma

  1. AdMob konsolundaki Uygulamalar menüsünden AdMob uygulama açılış reklamı uygulamasını (Android) seçin.
  2. Reklam birimleri menüsünü tıklayın.

  1. REKLAM BİRİMİ EKLE'yi tıklayın.
  2. Biçim olarak Uygulama açılışı'nı seçin.
  3. Reklam birimi adı alanına android-appopen girin.
  4. İşlemi tamamlamak için REKLAM BİRİMİ OLUŞTUR'u tıklayın.

Yeni bir reklam biriminin reklam yayınlayabilmesi genellikle birkaç saat sürer.

Reklamın davranışını hemen test etmek istiyorsanız Android uygulama kimliği/reklam birimi kimliği ve iOS uygulaması kimliği/reklam birimi kimliği tablolarında listelenen test uygulaması kimliğini ve reklam birimi kimliklerini kullanın.

iOS için kurulum

iOS için kurulum yapmak üzere bir iOS uygulaması eklemeniz ve reklam birimleri oluşturmanız gerekir.

iOS uygulaması ekleme

  1. AdMob konsolunda Uygulamalar menüsünden UYGULAMA EKLE'yi tıklayın.
  2. Platform olarak iOS'i seçin. Uygulama desteklenen bir uygulama mağazasında mı listeleniyor? sorusu sorulduğunda HAYIR'ı tıklayın.
  3. Uygulama adı alanına AdMob app open ad yazın.
  4. Bu codelab'i tamamlamak için kullanıcı metriklerinin etkinleştirilmesi gerekmez. Ancak, kullanıcı davranışını daha ayrıntılı bir şekilde anlamanıza olanak sağladığı için bunu yapmanızı öneririz. İşlemi tamamlamak için EKLE'yi tıklayın.

Reklam birimi oluşturma

  1. AdMob konsolundaki Uygulamalar menüsünden AdMob satır içi reklamları uygulamasını (iOS) seçin.
  2. Reklam birimleri menüsünü tıklayın.

  1. REKLAM BİRİMİ EKLE'yi tıklayın.
  2. Biçim olarak Uygulama açılışı'nı seçin.
  3. Reklam birimi adı alanına ios-appopen girin.
  4. İşlemi tamamlamak için REKLAM BİRİMİ OLUŞTUR'u tıklayın.

Yeni bir reklam biriminin reklam yayınlayabilmesi genellikle birkaç saat sürer.

Reklamın davranışını hemen test etmek istiyorsanız aşağıdaki tabloda listelenen test uygulama kimliğini ve reklam birimi kimliklerini kullanın.

İsteğe bağlı: Test AdMob uygulamasını ve reklam birimlerini kullanın

Kendi başınıza yeni bir uygulama ve reklam birimleri oluşturmak yerine codelab'i izlemek isterseniz aşağıdaki tablolarda listelenen test AdMob uygulama kimliği ve reklam birimi kimliklerini kullanabilirsiniz.

Android uygulama kimliği/reklam birimi kimliği

Öğe

uygulama kimliği/reklam birimi kimliği

AdMob uygulama kimliği

ca-app-pub-3940256099942544~3347511713

Reklam birimi kimliği

ca-app-pub-3940256099942544/3419835294

iOS uygulama kimliği/reklam birimi kimliği

Öğe

uygulama kimliği/reklam birimi kimliği

AdMob uygulama kimliği

ca-app-pub-3940256099942544~1458002511

Reklam birimi kimliği

ca-app-pub-3940256099942544/5662855259

Test reklamları hakkında daha fazla bilgi için Android test reklamları ve iOS test reklamları geliştirici belgelerine bakın.

4. Google Mobil Reklamlar Unity eklentisini ekleyin

AdMob reklamları göstermenin ve gelir elde etmenin ilk adımı, Google Mobile Ads Unity eklentisinin entegre edilmesidir.

Mobil Reklamlar Unity eklentisini indirin

Google Mobil Reklamlar Unity eklentisi, Unity geliştiricilerinin Android ve iOS uygulamalarında Google Mobil Reklamları'nı kolayca sunmasını sağlar. Eklenti, Unity projenizde C# komut dosyaları tarafından kullanılan reklamları istemek için bir C# arayüzü sağlar.

Eklentinin Unity paketini indirmek için aşağıdaki bağlantıyı kullanın.

Başlangıç projesini aç

  1. Unity Hub'ı başlatın.
  2. Projeler sekmesinde EKLE düğmesini tıklayın.
  3. Geliştirme ortamını ayarlama adımında indirdiğiniz kodu çıkardığınız klasöre gidin.
  4. starter klasörünü açın.
  5. Proje listesinde starter projesini görürsünüz. Projeyi tıklayarak Unity Editor'da açın.

Mobil Reklamlar Unity eklentisini içe aktarma

  1. Unity Editor'da Öğeler > Paketi İçe Aktar > Özel Paket'i seçin.
  2. Önceki adımda indirdiğiniz GoogleMobileAds-{VERSION}.unitypackage dosyasını seçin.
  3. Tüm dosyaların seçili olduğundan emin olun ve İçe Aktar'ı tıklayın.

AdMob uygulama kimliğinizi ayarlama

  1. Unity Editor'da Öğeler > Google Mobil Reklamlar > Ayarlar'ı tıklayın.
  2. Her alana Android ve iOS AdMob uygulama kimliğinizi girin. Kendi başınıza yeni bir uygulama ve reklam birimleri oluşturmak yerine codelab'i izlemek istiyorsanız test AdMob uygulama kimliğini aşağıdaki gibi girin.

8890521e199b1090.png

5. Yardımcı program sınıfı oluşturma

Komut Dosyaları klasörünün altında AppOpenAdManager adlı yeni bir sınıf oluşturun. Bu sınıf, yüklenen bir reklamı ve her bir platform için reklam birimi kimliğini izlemek için bir örnek değişkeni yönetir.

AppOpenAdManager.cs

using System;
using GoogleMobileAds.Api;
using UnityEngine;

public class AppOpenAdManager
{
#if UNITY_ANDROID
    // Test ad unit ID: ca-app-pub-3940256099942544/3419835294
    private const string AD_UNIT_ID = "<YOUR_ANDROID_APPOPEN_AD_UNIT_ID>";
#elif UNITY_IOS
    // Test ad unit ID: ca-app-pub-3940256099942544/5662855259
    private const string AD_UNIT_ID = "<YOUR_IOS_APPOPEN_AD_UNIT_ID>";
#else
    private const string AD_UNIT_ID = "unexpected_platform";
#endif

    private static AppOpenAdManager instance;

    private AppOpenAd ad;

    private bool isShowingAd = false;

    public static AppOpenAdManager Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new AppOpenAdManager();
            }

            return instance;
        }
    }

    private bool IsAdAvailable
    {
        get
        {
            return ad != null;
        }
    }

    public void LoadAd()
    {
        // TODO: Load an app open ad.
    }
}

Reklam yükleme

Reklam yükleme, statik AppOpenAd.LoadAd() yöntemi kullanılarak gerçekleştirilir. Yükleme yöntemi bir reklam birimi kimliği, ScreenOrientation modu, AdRequest nesnesi ve reklam yükleme başarılı ya da başarısız olduğunda çağrılan bir tamamlama işleyici gerektirir.

Yüklenen AppOpenAd nesnesi, tamamlama işleyicide parametre olarak sağlanır. LoadAd() yöntemini aşağıdaki gibi uygulayın.

AppOpenAdManager.cs

public class AppOpenAdManager
{
    ...

    public void LoadAd()
    {
        AdRequest request = new AdRequest.Builder().Build();

        // Load an app open ad for portrait orientation
        AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
        {
            if (error != null)
            {
                // Handle the error.
                Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
                return;
            }

            // App open ad is loaded.
            ad = appOpenAd;
        }));
    }
}

Reklamı gösterme

Reklamı göstermeden önce, her bir reklam etkinliğini dinlemek üzere her bir etkinlik işleyici için kayıt yapın.

AppOpenAdManager.cs

public class AppOpenAdManager
{
    ...

    public void ShowAdIfAvailable()
    {
        if (!IsAdAvailable || isShowingAd)
        {
            return;
        }

        ad.OnAdDidDismissFullScreenContent += HandleAdDidDismissFullScreenContent;
        ad.OnAdFailedToPresentFullScreenContent += HandleAdFailedToPresentFullScreenContent;
        ad.OnAdDidPresentFullScreenContent += HandleAdDidPresentFullScreenContent;
        ad.OnAdDidRecordImpression += HandleAdDidRecordImpression;
        ad.OnPaidEvent += HandlePaidEvent;

        ad.Show();
    }

    private void HandleAdDidDismissFullScreenContent(object sender, EventArgs args)
    {
        Debug.Log("Closed app open ad");
        // Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
        ad = null;
        isShowingAd = false;
        LoadAd();
    }

    private void HandleAdFailedToPresentFullScreenContent(object sender, AdErrorEventArgs args)
    {
        Debug.LogFormat("Failed to present the ad (reason: {0})", args.AdError.GetMessage());
        // Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
        ad = null;
        LoadAd();
    }

    private void HandleAdDidPresentFullScreenContent(object sender, EventArgs args)
    {
        Debug.Log("Displayed app open ad");
        isShowingAd = true;
    }

    private void HandleAdDidRecordImpression(object sender, EventArgs args)
    {
        Debug.Log("Recorded ad impression");
    }

    private void HandlePaidEvent(object sender, AdValueEventArgs args)
    {
        Debug.LogFormat("Received paid event. (currency: {0}, value: {1}",
                args.AdValue.CurrencyCode, args.AdValue.Value);
    }
}

Reklam geçerlilik süresini dikkate alma

Uygulama açılışındaki reklam referansları dört saat sonra zaman aşımına uğrar. İstek zamanından sonra dört saatten uzun süre oluşturulan reklamlar artık geçerli olmaz ve gelir sağlamayabilir.

Süresi dolmuş bir reklamı göstermediğinizden emin olmak için IsAdAvailable özelliğini, reklamınızın yüklenmesinden bu yana ne kadar zaman aldığını kontrol eden AppOpenAdManager olarak değiştirin. Ardından, reklamın hâlâ geçerli olup olmadığını kontrol etmek için bu yöntemi kullanın.

AppOpenAdManager.cs

public class AppOpenAdManager
{
    ...

    // TODO: Add loadTime field
    private DateTime loadTime;

    private bool IsAdAvailable
    {
        get
        {
            // TODO: Consider ad expiration
            return ad != null && (System.DateTime.UtcNow - loadTime).TotalHours < 4;
        }
    }

    public void LoadAd()
    {
        if (IsAdAvailable)
        {
            return;
        }

        AdRequest request = new AdRequest.Builder().Build();
        AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
        {
            if (error != null)
            {
                Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
                return;
            }

            ad = appOpenAd;
            Debug.Log("App open ad loaded");

            // TODO: Keep track of time when the ad is loaded.
            loadTime = DateTime.UtcNow;
        }));
    }
}

6. Reklamı yüklemek/göstermek için sahneyi güncelleme

Sahne başladığında bir uygulama açılış reklamı yüklemek için MainScene sınıfında Start() yöntemini güncelleyin.

Uygulama ön planlama etkinlikleri hakkında bildirim almak için AppStateEventNotifier single'ını dinlemenizi öneririz. AppStateEventNotifier.AppStateChanged yetkisini uyguladığınızda uygulamanız, uygulama başlatma ve ön plandaki etkinlikler konusunda uyarı alır ve reklamı gösterebilir.

MainScene.cs

using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine;

public class MainScene : MonoBehaviour
{
    public void Start()
    {
        // TODO: Request an app open ad.
        MobileAds.Initialize((initStatus) =>
        {
            AppOpenAdManager.Instance.LoadAd();
            AppStateEventNotifier.AppStateChanged += OnAppStateChanged;
        });
    }

    public void OnAppStateChanged(AppState state)
    {
        if (state == AppState.Foreground)
        {
            // TODO: Show an app open ad if available.
            AppOpenAdManager.Instance.ShowAdIfAvailable();
        }
    }
}

İşte bu kadar. Projeyi bir cihazda veya emülatörde derleyip çalıştırın. Uygulama başlatıldıktan sonra, reklamın tam olarak yüklenmesi için birkaç saniye bekleyin.

Bu tarihten sonra diğer uygulamalardan/ana ekrandan uygulamaya geri döndüğünüzde uygulama açılış reklamı aşağıdaki gibi gösterilir.

6338548c3f73e7cf.gif

7. Hepsi bu kadar.

Codelab'i tamamladınız. Bu codelab için tamamlanmış kodu android_studio_folder.pngcomplete klasöründe bulabilirsiniz.