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.
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?
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:
başlangıç: Bu codelab'de derleyeceğiniz başlangıç kodu.
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
- 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 mı listeleniyor? sorusu sorulduğunda HAYIR'ı tıklayın.
- Uygulama adı alanına
AdMob app open ad
yazın. - 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
- 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 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
- 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 mı listeleniyor? sorusu sorulduğunda HAYIR'ı tıklayın.
- Uygulama adı alanına
AdMob app open ad
yazın. - 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
- 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 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 |
|
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 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ç
- Unity Hub'ı başlatın.
- Projeler sekmesinde EKLE düğmesini tıklayın.
- Geliştirme ortamını ayarlama adımında indirdiğiniz kodu çıkardığınız klasöre gidin.
- starter klasörünü açın.
- Proje listesinde starter projesini görürsünüz. Projeyi tıklayarak Unity Editor'da açın.
Mobil Reklamlar Unity eklentisini içe aktarma
- Unity Editor'da Öğeler > Paketi İçe Aktar > Özel Paket'i seçin.
- Önceki adımda indirdiğiniz
GoogleMobileAds-{VERSION}.unitypackage
dosyası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 Öğeler > Google Mobil Reklamlar > Ayarlar'ı tıklayın.
- 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.
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.
7. Hepsi bu kadar.
Codelab'i tamamladınız. Bu codelab için tamamlanmış kodu complete klasöründe bulabilirsiniz.