1. Giriş
Bu codelab'de, bir Unity uygulamasında AdMob uygulama açılış reklamı kullanacaksınız.
Ne oluşturacaksınız?
Bu Codelab'de, Google Mobile Ads Unity eklentisini kullanarak bir Unity uygulamasında AdMob uygulama açılış reklamı uygulama adımları açıklanmaktadır.

Bu codelab'i uygularken herhangi bir sorunla (kod hataları, dilbilgisi hataları, net olmayan ifadeler vb.) karşılaşırsanız 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
- Bir Unity uygulamasında uygulama açılış reklamı kullanma
Gerekenler
- Unity 2018.4 veya sonraki sürümler
- Xcode 12 veya üzeri ve CocoaPods (iOS'e dağıtmak için)
AdMob ile ilgili deneyim düzeyinizi nasıl değerlendirirsiniz?
2. Geliştirme ortamını kurma
Kodu indirme
ZIP dosyasını indirdikten sonra içeriğini ayıklayın. admob-appopen-unity-main adlı bir klasörünüz olur.
Alternatif olarak, GitHub deposunu komut satırından klonlayabilirsiniz:
$ git clone https://github.com/googlecodelabs/admob-appopen-unity
Depoda iki klasör bulunur:
starter: Bu codelab'de oluşturacağınız başlangıç kodu.
complete: Bu codelab'in tamamlanmış kodu.
3. AdMob uygulamasını ve reklam birimlerini oluşturma
Unity, çok platformlu bir SDK olduğundan AdMob'da hem Android hem de iOS için bir 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
- AdMob konsolunda, Uygulamalar menüsünden UYGULAMA EKLE'yi tıklayın.
- Platform olarak Android'i seçin. Uygulama, desteklenen bir uygulama mağazasında listeleniyor mu? sorusu sorulduğunda HAYIR'ı tıklayın.
- Uygulama adı alanına
AdMob app open adgirin. - Bu codelab'i tamamlamak için kullanıcı metriklerini etkinleştirmeniz gerekmez. Ancak kullanıcı davranışını daha ayrıntılı bir şekilde anlamanıza olanak tanıdığı için bunu yapmanızı öneririz. İşlemi tamamlamak için EKLE'yi tıklayın.
Reklam birimi oluşturma
- AdMob konsolundaki Uygulamalar menüsünden AdMob uygulama açılış reklamı uygulamasını (Android) seçin.
- Reklam birimleri menüsünü 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 uygulama kimliği/reklam birimi kimliği tablolarında listelenen test uygulama kimliğini ve reklam birimi kimliklerini kullanın.
iOS'te kurulum
iOS için kurulum yapmak üzere bir iOS uygulaması eklemeniz ve reklam birimleri oluşturmanız gerekir.
iOS uygulaması ekleme
- AdMob konsolunda, Uygulamalar menüsünden UYGULAMA EKLE'yi tıklayın.
- Platform olarak iOS'i seçin. Uygulama, desteklenen bir uygulama mağazasında listeleniyor mu? sorusu sorulduğunda HAYIR'ı tıklayın.
- Uygulama adı alanına
AdMob app open adgirin. - Bu codelab'i tamamlamak için kullanıcı metriklerini etkinleştirmeniz gerekmez. Ancak kullanıcı davranışını daha ayrıntılı bir şekilde anlamanıza olanak tanıdığı için bunu yapmanızı öneririz. İşlemi tamamlamak için EKLE'yi tıklayın.
Reklam birimi oluşturma
- AdMob konsolundaki Uygulamalar menüsünden AdMob satır içi reklamları uygulamasını (iOS) seçin.
- Reklam birimleri menüsünü 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 kullanma
Yeni bir uygulama ve reklam birimleri oluşturmak yerine codelab'i takip etmek istiyorsanız aşağıdaki tablolarda listelenen test AdMob uygulama kimliğini 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 |
|
Reklam birimi kimliği |
|
iOS uygulama kimliği/reklam birimi kimliği
Öğe | Uygulama kimliği/reklam birimi kimliği |
AdMob uygulama kimliği |
|
Reklam birimi kimliği |
|
Test reklamları hakkında daha fazla bilgi için Android test reklamları ve iOS test reklamları geliştirici belgelerini inceleyin.
4. Google Mobil Reklamlar Unity eklentisini ekleme
Google Mobile Ads Unity eklentisini entegre etmek, AdMob reklamları göstermenin ve gelir elde etmenin ilk adımıdır.
Mobile Ads Unity eklentisini indirme
Google Mobile Ads Unity eklentisi, Unity geliştiricilerin Android ve iOS uygulamalarında Google Mobil Reklamları kolayca yayınlamasına olanak tanır. Eklenti, Unity projenizdeki C# komut dosyaları tarafından kullanılan reklam isteğinde bulunma 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çın
- Unity Hub'ı başlatın.
- Projeler sekmesinde EKLE düğmesini tıklayın.
- Geliştirme ortamını ayarlama adımında indirilen kodu çıkardığınız klasöre gidin.
- Başlangıç klasörünü açın.
- Proje listesinde başlangıç projesini görürsünüz. Projeyi Unity Editor'da açmak için tıklayın.
Mobile Ads Unity eklentisini içe aktarma
- Unity düzenleyicide menüden Assets > Import Package > Custom Package'ı (Öğeler > Paket İçe Aktar > Özel Paket) seçin.
- Önceki adımda indirdiğiniz
GoogleMobileAds-{VERSION}.unitypackagedosyasını seçin. - Tüm dosyaların seçili olduğundan emin olun ve İçe aktar'ı tıklayın.
AdMob uygulama kimliğinizi ayarlama
- Unity Editor'da menüden Assets > Google Mobile Ads > Settings'i (Öğeler > Google Mobile Ads > Ayarlar) seçin.
- Her alana Android ve iOS AdMob uygulama kimliğinizi girin. Yeni bir uygulama ve reklam birimleri oluşturmak yerine codelab'i takip etmek istiyorsanız test AdMob uygulama kimliğini aşağıdaki gibi girin.

5. Yardımcı sınıf oluşturma
Scripts klasöründe AppOpenAdManager adlı yeni bir sınıf oluşturun. Bu sınıf, yüklenen bir reklamı ve her platform için reklam birimi kimliğini takip etmek üzere 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 işlemi, statik AppOpenAd.LoadAd() yöntemi kullanılarak gerçekleştirilir. Yükleme yöntemi için bir reklam birimi kimliği, bir ScreenOrientation modu, bir AdRequest nesnesi ve reklam yükleme işlemi başarılı olduğunda veya başarısız olduğunda çağrılan bir tamamlanma işleyicisi gerekir.
Yüklenen AppOpenAd nesnesi, tamamlanma işleyicide parametre olarak sağlanır. LoadAd() yöntemini aşağıdaki şekilde 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öster
Reklamı göstermeden önce her reklam etkinliğini dinlemek için her etkinlik işleyiciye kaydolun.
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 göz önünde bulundurma
Uygulama açılışındaki reklam referansları dört saat sonra zaman aşımına uğrar. İstek zamanından sonra dört saatten daha uzun süre oluşturulan reklamlar artık geçersiz olur ve gelir sağlamayabilir.
Geçerlilik süresi dolan bir reklamı göstermediğinizden emin olmak için IsAdAvailable özelliğini, reklamınız yüklendikten sonra ne kadar süre geçtiğini 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 uygulama açılış reklamı yüklemek için MainScene sınıfındaki Start() yöntemini güncelleyin.
Uygulama ön plana getirme etkinliklerinden haberdar olmak için AppStateEventNotifier tekilini dinlemenizi öneririz. AppStateEventNotifier.AppStateChanged temsilcisini uyguladığınızda uygulamanız, uygulama başlatma ve ön plana getirme etkinlikleri konusunda uyarılı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 oluşturup çalıştırın. Uygulama başlatıldıktan sonra reklamın tamamen yüklenmesi için birkaç saniye bekleyin.
Ardından, diğer uygulamalardan/ana ekrandan uygulamaya geri döndüğünüzde uygulama açılış reklamı aşağıdaki gibi gösterilir.

7. İşlem tamamlandı
Codelab'i tamamladınız. Bu codelab'in tamamlanmış kodunu
complete klasöründe bulabilirsiniz.
