Unity 3D Android Oyunlarınıza AdMob Reklamları Eklemek – Resimli Anlatım

Yayınlandı: 26 Mayıs 2014 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde
Etiketler:, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

GÜNCELLEME – 13.11.2018: Talimatlar güncellendi.

Hepinize merhaba,

Bana gerek Facebook’tan gerek başka platformlardan, Unity‘de yapılan Android oyunlarına nasıl reklam eklenebileceği ile ilgili çok fazla soru geliyordu. Ama kendi oyunlarıma hiç reklam eklemediğimden ben de bilmiyordum. Hem kendim bu işin nasıl yapıldığını öğrenmek hem de size göstermek için bu yazıyı yazıyorum.

Derste AdMob reklamlarını kullanacağız (dersin devamında Unity Ads için mediation talimatları da mevcut). Eğer henüz Android SDK‘yı kurmadıysanız, sizi önce şuraya alayım: https://yasirkula.com/2013/07/17/unity-android-sdk-kurulumu-resimli-anlatim/

Yazıyı yazarken faydalandığım kaynak: https://firebase.google.com/docs/admob/unity/start

İlk yapmanız gereken, şu adresten GoogleMobileAds.unitypackage‘ı indirmek: https://github.com/googleads/googleads-mobile-plugins/releases/latest

Ardından AdMob web sitesinden yeni bir hesap oluşturun (Sign up for AdMob)(Gmail hesabı gerekli) veya mevcut hesabınızla sisteme giriş yapın (Sign into Admob): https://www.google.com/admob/

Hesabınızı oluşturduktan ve sisteme giriş yaptıktan sonra, solda yer alan menüden Uygulamalar-UYGULAMA EKLE yolunu izleyip hesabınıza yeni bir uygulama ekleyin. Yeni oluşturduğunuz uygulamaya reklam eklemek için, sol menüden Uygulamalar-uygulama_ismi‘ni seçin ve yine sol menüde yer alan Reklam birimleri‘ne tıklayın. Son olarak da, gelen ekrandan REKLAM BİRİMİ EKLEYİN butonuna tıklayın.

a) Banner Reklamlar

Reklam türü olarak Banner seçin ve bir Reklam birimi adı girin (mesela İlk Banner Reklamım). REKLAM BİRİMİ OLUŞTUR butonuna tıklayarak işlemi sonlandırın.

b) Interstitial (Geçiş)(Tam ekran) Reklamlar

Yine banner reklamda olduğu gibi, özgün bir Reklam birimi adı girip reklam biriminizi oluşturun.

c) Rewarded (Ödüllü) Video Reklamlar

Bu video reklam türünde, kullanıcı reklamı baştan sona izlediği taktirde kullanıcıyı oyun içerisinde bir şekilde ödüllendirmeniz gerekir (örneğin 100 altın vererek). Bu durumda Ödül ayarları‘ndan Ödül miktarı olarak 100, Ödül öğesi olarak da altın girebilirsiniz. Burada belirlediğiniz değerler Unity kodunuza parametre olarak gittiği için, burası vasıtasıyla kullanıcıların reklam izleyerek kazandığı altın sayısını dinamik olarak değiştirebilirsiniz (Unity kodunuzu değiştirmeye gerek kalmadan). Tabi dilerseniz bu değerleri yok sayabilir ve reklam izlenince kaç altın kazanılacağını direkt Unity kodunuzda belirleyebilirsiniz.

Reklam birim(ler)inizi oluşturduktan sonra TAMAMLANDI butonuna tıklayarak işlemi sonlandırın. Reklam birimleri menüsünden yeni oluşturduğunuz reklama tıklayın ve gelen ekranda sağ üstten UYGULAMA TALİMATLARI‘na basın. Burada gözüken uygulama kimliğinizi ve reklam birimi kimliğinizi bir yere not edin (ca-app-pub- kısmını da ilave etmeyi unutmayın!):

DİKKAT: bu kimliklerinizi internette kimseyle paylaşmayın. Eğer kimlikleriniz kötü niyetli birinin eline geçerse, bu kişi AdMob hesabınızı banlatabilir. Örneğin reklam kodunuzu internette paylaşacaksanız, kimliklerinizi koddan silmeyi unutmayın.

Şimdi Android SDK‘yı açın ve Extras kısmından “Google Play services“ı kurun. Eğer zaten kuruluysa güncel olduğundan emin olun:

resim6

NOT: işinizi garantiye almak için, Google Play services’a ilaveten güncel bir Android API’sini de yüklemenizi öneririm; örneğin Android 6.0 (API 23).

İşlem tamamlandıktan sonra, Unity projenizi açıp Build Settings‘ten Platform olarak Android‘in seçili olduğundan ve Player Settings-Other Settings‘teki Minimum API Level‘ın da en az “Android 4.0 ‘Ice Cream Sandwich’ (API level 14)” olduğundan emin olun. Ardından Assets-Import Package-Custom Package… yolunu izleyin ve daha önce indirdiğiniz GoogleMobileAds.unitypackage‘ı projenize import edin (import penceresinde tüm dosyalar seçili olmalı). Sonrasında Project panelinde herhangi bir yere sağ tıklayın ve Play Services Resolver-Android Resolver-Resolve yolunu izleyin. Son olarak da, projenizin olduğu klasördeki Assets/Plugins/Android/GoogleMobileAdsPlugin/AndroidManifest.xml dosyasının içinde yer alan <application> ve </application> etiketleri arasına şu eklemeyi yapın:

<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="UYGULAMA KİMLİĞİNİZİ BURAYA GİRİN" />

En nihayetinde gelelim reklamları uygulamamızda göstermeye…

a) Banner Reklamlar

Diyelim ki oyunun ilk sahnesinde, ekranın tepesinde bir banner reklam göstermek istiyorsunuz. O zaman Reklam adında yeni bir C# scripti oluşturun ve içini şöyle değiştirin:

using UnityEngine;
using GoogleMobileAds.Api;

public class Reklam : MonoBehaviour
{
	void Start()
	{
		MobileAds.Initialize( "UYGULAMA KİMLİĞİ" );

		BannerView reklamObjesi = new BannerView( "REKLAM KİMLİĞİ", AdSize.SmartBanner, AdPosition.Top );
		AdRequest reklamIstegi = new AdRequest.Builder().Build();
		reklamObjesi.LoadAd( reklamIstegi );
	}
}

Buradaki UYGULAMA KİMLİĞİ‘ni ve REKLAM KİMLİĞİ‘ni kendi kimlikleriniz ile değiştirin. Sonrasında Reklam scriptini sürükleyerek sahnedeki bir objeye atayın.

Peki kodda ne yapıyoruz? İlk olarak MobileAds.Initialize fonksiyonu ile Admob plugin’ini kullanıma hazır hale getiriyoruz. Bu fonksiyonu sadece bir kere çağırmanız yeterli.

Plugin’i initialize ettikten sonra, new BannerView() ile yeni bir banner reklam oluşturuyoruz. Reklam boyutu olarak çeşitli seçeneklerimiz mevcut ancak en garantisi SmartBanner çünkü bu değer, telefonun ekran boyutuna ve o anki oryantasyonuna (Portrait, Landscape…) bağlı olarak en uygun reklam boyutunu otomatik olarak ayarlıyor. Eğer başka bir reklam boyutu belirlemek isterseniz, reklam boyutunun ekranın dpi cinsinden boyutundan büyük olmadığından emin olun; aksi taktirde banner reklamlarınız gözükmeyecektir.

Reklamın ekranın tepesinde gözükmesi için AdPosition.Top diyoruz ancak mesela ekranın altında gözükmesini istersek AdPosition.Bottom diyebiliriz.

Reklam objesini oluşturduktan sonra, bu objeye Admob sunucularından reklam yüklemek için yeni bir AdRequest objesi oluşturuyoruz ve bu objeyi LoadAd fonksiyonu ile reklam objesine veriyoruz.

b) Interstitial Reklamlar

ReklamInterstitial adında yeni bir C# scripti oluşturun. Yapacağımız şey şu: ekranda bir buton olacak ve biz bu butona tıklayınca Interstitial reklam ekranda belirecek. Bunun için C# scriptinin içeriğini şöyle değiştirin:

using UnityEngine;
using System.Collections;
using GoogleMobileAds.Api;

public class ReklamInterstitial : MonoBehaviour
{
	private InterstitialAd reklamObjesi;

	private void Start()
	{
		MobileAds.Initialize( "UYGULAMA KİMLİĞİ" );
	}

	void OnGUI()
	{
		if( GUI.Button( new Rect( Screen.width / 2 - 150, Screen.height / 2 - 150, 300, 300 ), "Reklamı Göster" ) )
		{
			if( reklamObjesi != null )
				reklamObjesi.Destroy();

			reklamObjesi = new InterstitialAd( "REKLAM KİMLİĞİ" );
			AdRequest reklamIstegi = new AdRequest.Builder().Build();
			reklamObjesi.LoadAd( reklamIstegi );

			StartCoroutine( ReklamiGoster() );
		}
	}

	IEnumerator ReklamiGoster()
	{
		while( !reklamObjesi.IsLoaded() )
			yield return null;

		reklamObjesi.Show();
	}
}

Butona bastıktan sonra ReklamiGoster() coroutine’ini çalıştırıyor ve reklamın sunucudan indirilmesini bekliyoruz. Reklamın henüz sunucudan inip inmediğini öğrenmek için InterstitialAd objesinin IsLoaded() fonksiyonunu kullanıyoruz. Reklam indikten sonra da Show() fonksiyonu vasıtasıyla reklamı ekranda gösteriyoruz.

Burada dikkat edilmesi gereken bir nokta, InterstitialAd objesinin Destroy fonksiyonu. Aynı fonksiyon BannerView için de mevcut. Bir reklamla işiniz bittiğinde, o reklam objesinden kurtulmadan önce Destroy fonksiyonu vasıtasıyla reklamın hafızada kapladığı yeri boşaltmalısınız. Aksi taktirde memory leak dediğimiz istenmeyen bir durumla karşı karşıya kalırsınız. Destroy fonksiyonu sadece banner ve interstitial reklamlar için geçerli; yani rewarded reklamlarda böyle bir durum yok.

Koddaki UYGULAMA KİMLİĞİ ve REKLAM KİMLİĞİ‘ni kendi kimlikleriniz ile değiştirdikten sonra scripti sahnedeki bir objeye verebilirsiniz.

c) Rewarded Video Reklamlar

ReklamRewardedVideo adında yeni bir C# scripti oluşturun. Bu script ile ekranda bir buton oluşturacak ve bu butona tıklayınca rewarded video reklam oynatacağız:

using UnityEngine;
using System.Collections;
using GoogleMobileAds.Api;

public class ReklamRewardedVideo : MonoBehaviour
{
	private void Start()
	{
		MobileAds.Initialize( "UYGULAMA KİMLİĞİ" );
	}

	void OnGUI()
	{
		if( GUI.Button( new Rect( Screen.width / 2 - 150, 0, 300, 300 ), "Reklamı Göster" ) )
		{
			RewardBasedVideoAd reklamObjesi = RewardBasedVideoAd.Instance;

			AdRequest reklamIstegi = new AdRequest.Builder().Build();
			reklamObjesi.LoadAd( reklamIstegi, "REKLAM KİMLİĞİ" );

			StartCoroutine( ReklamiGoster() );
		}
	}

	IEnumerator ReklamiGoster()
	{
		while( !RewardBasedVideoAd.Instance.IsLoaded() )
			yield return null;

		RewardBasedVideoAd.Instance.Show();
	}
}

Bu kod interstitial reklam koduna fazlasıyla benziyor. Tek farkı, yeni bir reklam objesi oluşturmak yerine halihazırda var olan RewardBasedVideoAd.Instance objesini kullanıyoruz.

UYGULAMA KİMLİĞİ ve REKLAM KİMLİĞİ değerlerini kendi kimliklerinizle değiştirdikten sonra scripti sahnedeki bir objeye verebilirsiniz.

Artık oyunu Build alıp cihazda test edebiliriz. Reklamlar maalesef Unity Editor’de gözükmüyor, bu yüzden oyunu illa ki bir Android cihazda veya emülatörde test etmelisiniz. Interstitial ve rewarded video reklamların gelmesi biraz sürebilir; hatta sunucuda yeterince reklam yoksa rewarded video reklam hiç gelmeyebilir de (fillrate sorunu).

NOT: artık uygulamanız Google Play’de yüklenirken “full network access” izni isteyecektir. Ve tahmin edeceğiniz üzere, reklamlar sadece cihazınız internete bağlıyken karşınıza gelecektir.

Build Alma Sorunları

Oyunu build alırken sıkıntı yaşarsanız şu yöntemleri deneyebilirsiniz:

  • Eğer daha önce Bundle Identifier belirlemediyseniz, Player Settings-Other Settings-Bundle Identifier yolunu izleyerek oradaki değeri “com.SirketinizinAdi.OyununAdi” şeklinde değiştirin
  • Bilgisayarım’a sağ tıklayıp ÖzelliklerGelişmiş sistem ayarlarıOrtam Değişkenleri… yolunu izleyin. Eğer ne Kullanıcı Değişkenleri‘nde ne de Sistem Değişkenleri‘nde JAVA_HOME girdisi yoksa, herhangi bir Yeni… butonuna tıklayıp değerleri şöyle doldurun:

resim8

Eğer sizde “C:\Program Files\Java\jdk1.7.0_51” klasörü yoksa, kendi jdk klasörünüzü bulup Değişken değeri‘ne değer olarak onu yazın. Sonrasında Path isimli sistem değişkenini listeden bulup çift tıklayın ve Değişken değeri‘nin sonuna şunu ekleyin: “;C:\Program Files\Java\jdk1.7.0_51\bin” (eğer değişkenin değeri yukarıdan aşağıya liste olarak gözüküyorsa ; işaretine gerek yok). Son olarak bilgisayarınızı yeniden başlatın.

  • SDK Manager‘da “Android SDK Build-tools“un son sürümü kurulu değilse kurun. Ardından Android SDK’nın kurulu olduğu klasördeki “android-sdk\build-tools\SON_SÜRÜM\zipalign.exe” dosyasını kopyalayın ve “android-sdk\tools” konumuna yapıştırın
  • JDK’nın 64-bit’lik sürümünü yüklediyseniz bir de 32-bit’lik sürümünü yüklemeyi deneyin
  • Belki saçma gelecek ancak bazen Admob ile alakalı hatalar, plugin ile gelen tüm dosyaları silip plugini yeniden import ederek çözülüyor (başıma geldi)

Reklam Gözükmemesi Sorunları

Her şeyi düzgün yaptığınıza inanmanıza ve hata almadan build alabilmenize rağmen bir türlü reklam göremiyor musunuz?

  • Eğer reklamı Admob üzerinden daha yeni oluşturduysanız ertesi gün tekrar deneyin, başka bir reklam kimliği kullanmayı deneyin veya test modunu açın (nasıl olacağı yazının devamında yazmakta). Henüz yeni oluşturulan reklam birimlerine reklam sağlan(a)madığını okumuştum
  • Bundle Identifier‘ı rastgele bir şekilde değiştirmeyi deneyin. Bunun sebebi; eğer başka birisi girdiğiniz o Bundle Identifier ile Admob reklamları sunarken ban yemiş ise, artık o Bundle Identifier’ı kullanan uygulamalarda Admob reklamları gözükmeyecektir
  • Cihazınızın internete bağlı olduğundan emin olun
  • logcat kullanarak bir hata alıp almadığınıza bakın. Örneğin bende rewarded video reklamlar çok ender gözüküyor ve genel olarak da fillrate hatası alıyorum, yani sunucuda herkese yetecek kadar reklam olmaması hatası. Bu gibi durumlarda elden bir şey gelmiyor maalesef (sadece Admob ile alakalı log’ları görmek için “adb logcat -s Ads” (tırnaksız) komutunu kullanabilirsiniz). Reklamlarla ilgili bir sorun yaşarsanız, lütfen bana danışmadan önce logcat’ten sorunun kaynağını tespit etmeye çalışıp sorunu internette hızlıca bir arayın

Gelişmiş Özellikler

a) Banner Reklamlar

Şimdi dilerseniz, reklamlarla yapabileceklerimizi görmek amaçlı scriptlerimizi birazcık daha geliştirelim. Yapmak istediğimiz şey şu: banner reklam her iki saniyede bir belirip kaybolsun. Böylece istediğimiz zaman reklamı gizlemeyi, istediğimiz zaman geri getirmeyi göreceğiz.

using UnityEngine;
using GoogleMobileAds.Api;

public class Reklam : MonoBehaviour
{
	private float reklamBelirmeAni;
	private bool reklamDurumu = false;
	private BannerView reklamObjesi;

	void Start()
	{
		MobileAds.Initialize( "UYGULAMA KİMLİĞİ" );

		reklamBelirmeAni = Time.time + 2f;

		reklamObjesi = new BannerView( "REKLAM KİMLİĞİ", AdSize.SmartBanner, AdPosition.Top );
		AdRequest reklamIstegi = new AdRequest.Builder().Build();
		reklamObjesi.LoadAd( reklamIstegi );
	}

	void Update()
	{
		if( Time.time > reklamBelirmeAni )
		{
			reklamBelirmeAni = Time.time + 2f;
			reklamDurumu = !reklamDurumu;

			if( reklamDurumu )
				reklamObjesi.Show();
			else
				reklamObjesi.Hide();
		}
	}
}

Update fonksiyonunda iki saniyede bir reklamDurumu‘nun değerini değiştiriyoruz ve değeri true ise reklamı Show() fonksiyonu ile gösteriyor, false ise Hide() fonksiyonuyla gizliyoruz. Bu kadar basit!

Burada şöyle bir ilave bilgi de vereyim: banner reklam objeleri scene geçişlerinden etkilenmez. Bu yüzden eğer bir banner reklamı diğer sahneye geçmeden önce gizlemezseniz, o reklam diğer sahnede de görünür halde olur.

Ayrıca madem bahsi geçmiş, tekrar hatırlatayım: eğer bir reklamla işiniz kesinlikle bittiyse, Destroy fonksiyonuyla o reklamın hafızada kapladığı yeri boşaltın. Örneğin A sahnesinde banner reklam gösteriyorsanız ama bu banner reklama B sahnesinde ihtiyacınız yoksa, A’dan B’ye geçmeden önce reklamObjesi.Destroy(); fonksiyonunu çağırın.

b) Interstitial Reklamlar

Eğer siz de Interstitial reklamları test ettiyseniz fark etmişsinizdir: reklamların yüklenmesi çok uzun sürüyor. Bunun için benim düşündüğüm yöntem, oyunun en başında reklam değişkeninde bir tane Interstitial reklamı hazır bulundurmak. Bu reklamı kullanıcıya gösterdikten ve kullanıcı reklamı kapattıktan hemen sonra ise yeni bir reklam alıp artık bu yeni reklamı değişkende depolamak. Böylece reklamlar, onları göstermek istediğimiz zaman elimizde hazır olacak ve reklamın gözükmesi için daha az bekleyeceğiz. Bunu yapmak için ReklamInterstitial scriptini şöyle değiştirin:

using UnityEngine;
using System.Collections;
using System;
using GoogleMobileAds.Api;

public class ReklamInterstitial : MonoBehaviour
{
	private InterstitialAd reklamObjesi;

	void Start()
	{
		MobileAds.Initialize( "UYGULAMA KİMLİĞİ" );
		YeniReklamAl( null, null );
	}

	void OnGUI()
	{
		if( GUI.Button( new Rect( Screen.width / 2 - 150, Screen.height / 2 - 150, 300, 300 ), "Reklamı Göster" ) )
		{
			StartCoroutine( ReklamiGoster() );
		}
	}

	IEnumerator ReklamiGoster()
	{
		while( !reklamObjesi.IsLoaded() )
			yield return null;

		reklamObjesi.Show();
	}

	public void YeniReklamAl( object sender, EventArgs args )
	{
		if( reklamObjesi != null )
			reklamObjesi.Destroy();

		reklamObjesi = new InterstitialAd( "REKLAM KİMLİĞİ" );
		reklamObjesi.OnAdClosed += YeniReklamAl; // Kullanıcı reklamı kapattıktan sonra çağrılır

		AdRequest reklamIstegi = new AdRequest.Builder().Build();
		reklamObjesi.LoadAd( reklamIstegi );
	}
}

c) Rewarded Video Reklamlar

Tıpkı üstteki interstitial kodunda olduğu gibi, rewarded video reklamın da oyunun en başında yüklenmesini sağlayalım. Kullanıcı reklamı kapattıktan sonra da otomatik olarak yeni bir video reklamı yükleyip hazırda bulunduralım. reklamObjesi‘nin IsLoaded() fonksiyonunu kullanarak, ekrandaki reklamı göstermeye yarayan butonun sadece reklam sunucudan tamamen indirilmişse tıklanabilir olmasını sağlayalım. Son olarak da, kullanıcı rewarded videoyu baştan sona izlerse ona ödül olarak 100 altın verelim:

using UnityEngine;
using System;
using GoogleMobileAds.Api;

public class ReklamRewardedVideo : MonoBehaviour
{
	private int altin = 0;

	void Start()
	{
		MobileAds.Initialize( "UYGULAMA KİMLİĞİ" );
		YeniReklamAl( null, null );

		RewardBasedVideoAd reklamObjesi = RewardBasedVideoAd.Instance;
		reklamObjesi.OnAdClosed -= YeniReklamAl;
		reklamObjesi.OnAdClosed += YeniReklamAl; // Kullanıcı reklamı kapattıktan sonra çağrılır
		reklamObjesi.OnAdRewarded -= OyuncuyuOdullendir;
		reklamObjesi.OnAdRewarded += OyuncuyuOdullendir; // Kullanıcı reklamı tamamen izledikten sonra çağrılır
	}

	void OnGUI()
	{
		GUI.Label( new Rect( 0, 0, 500, 150 ), altin + " altının var!" );

		// Butonu sadece reklam tamamen yüklenmişse (IsLoaded() true ise) tıklanabilir yap
		GUI.enabled = RewardBasedVideoAd.Instance.IsLoaded();

		if( GUI.Button( new Rect( Screen.width / 2 - 150, 0, 300, 300 ), "Reklamı Göster" ) )
		{
			RewardBasedVideoAd.Instance.Show();
		}

		GUI.enabled = true;
	}

	public void YeniReklamAl( object sender, EventArgs args )
	{
		RewardBasedVideoAd reklamObjesi = RewardBasedVideoAd.Instance;

		AdRequest reklamIstegi = new AdRequest.Builder().Build();
		reklamObjesi.LoadAd( reklamIstegi, "REKLAM KİMLİĞİ" );
	}

	private void OyuncuyuOdullendir( object sender, Reward odul )
	{
		Debug.Log( "Ödül türü: " + odul.Type );
		altin += (int) odul.Amount;
	}
}

Burada OyuncuyuOdullendir fonksiyonuna parametre olarak gelen Reward türündeki odul değişkeni, siz ödüllü reklamı Admob üzerinde oluştururken girdiğiniz “Ödül miktarı” (odul.Amount) ve “Ödül öğesi” (odul.Type) değerlerini depolamakta. Ben kendi reklamımı oluştururken “Ödül miktarı“nı 100 girmiştim ve bu yüzden altin değişkenim her seferinde 100 artıyor. Daha önceden de bahsettiğim gibi, burada işin güzel yanı, bu Reward parametrelerini oyunu güncellemeye gerek kalmadan direkt olarak Admob panelinden güncelleyebiliyorsunuz.

Ekstralar

1) Test Reklamları ( **ÖNEMLİ** )

Reklamları test ederken olur da reklamlara çok tıklarsanız, hesabınızda çok fazla para birikebilir ve Admob servisinden banlanabilirsiniz. Hatta reklamlara tıklamasanız bile, sürekli aynı cihazdan reklam gösterip bundan para kazanarak yine ban yiyebilirsiniz. Bu durumu engellemek ve oyunu kendi telefonunuzdan test ederken reklamların para kazandırmasını önlemek için izleyebileceğiniz iki yol var:

  • Admob’un Test İçin Olan Reklam Kimliklerini Kullanmak

Admob her reklam türü için birer adet test reklam kimliği sunmakta. Bu kimlikleri kullanan reklamları test esnasında dilediğinizce gösterebilir, reklamlara tıklayabilirsiniz. Bu kimliklerin bir başka avantajı da, uygulamanızda bir türlü reklam gösteremediğiniz durumlarda, sorunun sizin reklam kimliklerinizden mi kaynaklandığını tespit etmek için kullanılabilmeleridir. Eğer kendi reklam kimliklerinizi kullanırken reklam gelmiyor ama test reklam kimliklerini kullanırken geliyorsa sorun sizin reklam kimliklerinizdedir; her iki durumda da reklam gelmiyorsa sorun Admob entegrasyonunuzdadır.

Güncel test reklam kimlikleri şöyle:

Banner: ca-app-pub-3940256099942544/6300978111

Interstitial: ca-app-pub-3940256099942544/1033173712

Rewarded: ca-app-pub-3940256099942544/5224354917

Tek yapmanız gereken, kodunuzdaki reklam kimlik(ler)ini test aşamasında bu kimlikler ile değiştirmek.

  • Cihazınızda Test Modunu Aktifleştirmek

Bu aşamanın önceki aşamaya göre bir avantajı, direkt kendi reklam kimlikleriniz üzerinden reklamları test edebilmenize olanak sağlamasıdır. Ayrıca test reklam kimliklerinin aksine, bu modda gösterilen reklamlar gerçek reklamlardır. Bu modda bir reklama tıkladığınızda para kazanmazsınız.

Cihazınız için test modunu aktifleştirebilemek için öncelikle cihazınızın özgün ID’sini bulmanız lazım. Bunun en garanti yolu da adb logcat kullanmak. İşinizi garantiye almak ve ban riskini önlemek için öncelikle kendi reklam kimliklerinizi yukarıdaki test reklam kimlikleri ile değiştirin ve ardından konsoldan adb logcat -s Ads komutunu çalıştırın. Uygulama esnasında, reklam gösterirken logcat konsoluna şuna benzer log’lar gelecek:

Use AdRequest.Builder.addTestDevice(“CİHAZ_IDSİ”) to get test ads on this device (dipnot: bu log emülatörlerde gözükmez çünkü onlar için test modu otomatik olarak aktiftir).

Yapmanız gereken, reklam kodunuzun AdRequest kısmını şu şekilde güncellemek:

AdRequest reklamIstegi = new AdRequest.Builder().AddTestDevice("CİHAZ_IDSİ").Build();

Artık kendi reklam kimliklerinizi kullanabilirsiniz. Bundan böyle reklamlarınızın üzerinde ufak bir “Test Ad” yazısı gözükecek ve reklamlarınıza rahatlıkla tıklayabileceksiniz (bazen emülatörde interstitial reklam test ederken “Test Ad” yazısını görmüyorum, bu bir hata mı bilmiyorum ama “Test Ad” yazısı görmediğiniz zaman ne olur ne olmaz reklama tıklamamanızı öneririm).

2) Reklamı Kişiselleştirmek

Eğer ki yaptığınız oyun çocuklara yönelik ise ve(ya) oyununuzu Google Play‘e koyarken “Designed for Families” programına katılmayı seçerseniz, o zaman oyununuzda çocuklara yönelik reklamlar sunabilmeniz ve daha da önemlisi, reklamlarınızın görünebilmesi için kodda ufak bir değişiklik yapmanız gerekmekte:

AdRequest reklamIstegi = new AdRequest.Builder().TagForChildDirectedTreatment( true ).Build();

Çocuklara yönelik reklamlarda bilmeniz gereken iki husus var:

  • Çocuklara yönelik reklam veren daha az firma olduğu için, eğer bir reklam isteği yolladığınız anda AdMob sunucularında çocuklara yönelik reklam kalmadıysa o reklam gözükmez
  • Oyununuzun Google Play’e kabul edilebilmesi için, oyun başlar başlamaz (oyun ilk açıldığında) interstitial reklam göstermemeye ve aynı anda birden çok reklam göstermemeye (mesela 2 banner reklam) özen göstermeniz gerekiyor (kaynak: https://play.google.com/about/families/designed-for-families/ads-and-monetization/)

Çocuklara yönelik reklamlardan farklı olarak, dilerseniz göstermek istediğiniz reklamın hedef kitle etiketini de belirleyebilirsiniz. Örneğin hedef kitle yaşınıza en çok PG etiketi uyuyorsa, reklam kodunuzu şu şekilde güncelleyebilirsiniz:

AdRequest reklamIstegi = new AdRequest.Builder().AddExtra( "max_ad_content_rating", "PG" ).Build();

Bu arada belirtmeden geçmeyeyim, AdRequest’e birden çok değişikliği aynı anda uygulamanız mümkün. Örneğin hem AddTestDevice hem de AddExtra fonksiyonlarını kullanmak istiyorsanız:

AdRequest reklamIstegi = new AdRequest.Builder().AddTestDevice("CİHAZ_IDSİ").AddExtra( "max_ad_content_rating", "PG" ).Build();

3) Unity Ads Entegrasyonu (Mediation)

Admob’un özellikle rewarded video reklamlarda reklam havuzu zaman zaman yetersiz kalmakta ve fillrate hatası döndürmektedir. Bu tarz bir durumla daha az karşılaşmak (daha geniş bir reklam havuzuna sahip olmak) için, mediation denen sistem vasıtasıyla, uygulamalarınızda Admob’un reklamlarına ilaveten diğer popüler reklam firmalarının reklamlarını da gösterebilirsiniz.

Mediation’da bilinmesi gereken önemli bir nokta, mediation ile Admob üzerinden gösterilen reklamların ödemesi, Admob tarafından değil de mediation’ı yapılan firma tarafından sağlanır. Yani Unity Ads mediation’ı yaparsanız, uygulamanızda gösterilen Unity Ads reklamlarının gelirlerini Admob’dan değil Unity Ads’ten alırsınız ve bunun için ödeme bilgilerinizin Unity Ads’te yer alması gereklidir. Ben nasıl ödeme bilgilerinizi Unity Ads’e ekleyebileceğinizden de burada basitçe bahsedeceğim ancak şunu baştan bilin: Unity Ads’ten ödeme alabilmek için (bildiğim kadarıyla) bankanızda USD dolar hesabınızın olması lazım, çünkü para SWIFT ile buraya aktarılacak. Eğer henüz dolar hesabınız yoksa, dolar hesabı açana kadar paranın Unity Ads hesabınızda birikmesini talep etmeniz de mümkün.

Unity Ads mediation’ı, interstitial ve rewarded video reklamları desteklemektedir. Mediation’a başlamadan önce, Admob’da tanımlı interstitial/rewarded video reklam kimlikleriniz olmalıdır. Mediation’ını bu reklam kimliklerinin üzerine uygulayacaksınız.

Faydalanılan kaynak: https://developers.google.com/admob/unity/mediation/unity

Öncelikle https://dashboard.unityads.unity3d.com/ adresine gidin, soldan Projects sekmesine geçiş yapın ve NEW PROJECT butonuna tıklayın. “Project name“e projenizin ismini girin ve eğer uygulamanız özellikle 13 yaş altı çocuk kitlesine hitap ediyorsa “This game is directed to children under the age of 13 in the United States” seçeneğini işaretleyin. “App Store ID“leri şimdilik boş bırakabilirsiniz. İşlemi tamamlamak için ADD PROJECT butonuna tıklayın.

Reklam kimlikleri oluşturmak için projenizin ana sayfasında sol tarafta yer alan menüden Monetization-Placements yolunu izleyin ve ADD PLACEMENT butonuna tıklayın. “Placement name“e reklam kimliği için bir isim girin ve eğer interstitial reklam kimliği oluşturuyorsanız Non-rewarded, yoksa Rewarded seçeneğini seçip CREATE NEW PLACEMENT butonuna tıklayarak işlemi sonlandırın. Eğer interstitial reklam oluşturduysanız, reklama tıklayıp Allow skip‘in değerini değiştirerek reklamın gözüktükten kaç saniye sonra geçilebileceğini belirleyebilirsiniz (değeri değiştirdikten sonra SAVE butonuna basmayı unutmayın).

Unity Ads mediation’ınınızda not almanız gereken üç farklı değer var:

  • Reklam kimlik(ler)inizin Placement ID'(ler)i: oluşturduğunuz bir reklam kimliğine tıklayınca gelen sayfadan öğrenebilirsiniz
  • GAME ID: sol taraftan Monetization-Platforms sekmesine geçiş yapınca “Google Play Store” satırında yer alır
  • API Key: sol üstten All projects‘e tıkladıktan sonra Ad Data Export-API Access yolunu izleyince gelen ekrandan öğrenilebilir

Artık Unity Ads reklam kimliklerini mediation vasıtasıyla Admob’a tanıtabiliriz. Bunun için Admob hesabınıza giriş yaptıktan sonra soldan Uyumlulaştırma sekmesine geçiş yapıp UYUMLULAŞTIRMA GRUBU OLUŞTUR butonuna tıklayın. “Reklam biçimi” olarak interstitial reklam için Geçiş, Rewarded video reklam için Ödüllü seçeneğini seçip DEVAM‘a tıklayın. Mediation için bir Ad girip REKLAM BİRİMİ EKLE butonuna tıklayın ve Admob üzerinde halihazırda var olan ilgili reklam kimliğinizi seçip TAMAMLANDI‘ya tıklayın. Şimdi Reklam kaynakları bölümünde yer alan REKLAM AĞI EKLE butonuna tıklayıp Unity Ads‘i seçin. API Key‘i Unity Ads’ten aldığınız key ile doldurup Yetkilendirme kutucuğunu işaretledikten sonra eBGBM kısmına bir değer girin (ben henüz bu konuda tecrübeli değilim, o yüzden buraya temsili olarak 2 girdim) ve DEVAM‘a tıklayın. Son olarak, Game ID ve Placement ID‘leri de Unity Ads’ten aldığınız ID’lerle doldurduktan sonra TAMAMLANDI butonuna tıklayın. Artık KAYDET butonuna tıklayarak mediation (uyumlulaştırma) grubunuzu kaydedebilirsiniz. Eğer hem interstitial hem rewarded video reklamlar için Unity Ads mediation’ı ekleyecekseniz, tahmin edeceğiniz üzere her bir reklam türü için ayrı bir uyumlulaştırma grubu oluşturmalısınız.

NOT1: eğer rewarded video reklam için mediation uyguluyorsanız, Admob’daki rewarded video reklam kimliğinizin Ödül ayarları‘ndaki “Uyumlulaştırma grubundaki tüm ağlara uygula” seçeneğinin seçili olduğundan emin olun.

NOT2: uygulamanızı test ederken Unity Ads’ten de test reklamları almak için, Unity Ads arayüzündeki Monetization-Platforms sayfasından “Google Play Store“a tıklayın, SETTINGS sekmesine geçiş yapın, TEST MODE kısmında yer alan override client test mode seçeneğini aktifleştirin ve “Force test mode ON“u işaretleyip SAVE butonuna tıklayın. Maalesef Admob kodunuz test modunda olsa bile bu ayar otomatik olarak Unity Ads’e işlemiyor, o yüzden böyle bir prosedür işliyoruz. Yalnız uygulamanızı yayınladıktan sonra override client test mode‘u kapatmayı unutmayın! Test moduna yapılan değişikliklerin reklamlara yansıması biraz vakit alabilir, o yüzden hemen niye olmuyor bu demeyin.

NOT3: uygulamanızı yayımladıktan sonra, Monetization-Platforms‘tan “Google Play Store“un sağında yer alan ADD STORE DETAILS butonuna tıklayarak, mağazadaki uygulamanızı Unity Ads’e bağlayabilirsiniz. Bunu yapmanın bir avantajı var mı bilmiyorum, o yüzden bunu yapıp yapmamak size kalmış. Ancak uygulamanızın burada gözükebilmesi için, uygulamayı yayımladıktan sonra birkaç gün beklemeniz gerekebilir.

Geriye sadece Unity Ads mediation’ı için gerekli şeyleri Unity’e import etmek kaldı. Bunun için şu adresteki en güncel versiyonun zip‘ini indirin: https://bintray.com/google/mobile-ads-adapters-unity/GoogleMobileAdsUnityAdsMediation#files

Sonra zip’in içindeki unitypackage’ı dışarı çıkarın ve Unity’e import edin ve emin olmak için bir kere daha Play Services Resolver-Android Resolver-Resolve yapın. İşte bu kadar! Artık Admob reklam havuzunda reklam yoksa, otomatik olarak Unity Ads reklam havuzundan reklam çekilecek. Bu reklamların ödemesi ise Unity Ads tarafından sağlanacak.

O halde gelelim Unity Ads reklamlarının ödemesini alabilmek için ödeme bilgilerimizi girmeye. https://id.unity.com adresine giriş yapın ve soldan Organizations butonuna tıklayıp hesabınızı seçin. Ardından yine soldan Payout Profile sayfasına geçiş yapıp Add profile butonuna tıklayın. Eğer oyununuzu bir şirket ile değil de tek başınıza yaptıysanız “Payment recipient is“i Private individual yapın. Sonra diğer istenen bilgileri de doldurup Create butonuna tıklayın. “Full Name” ile ilgili bir hata alırsanız, isminizde Türkçe karakter kullanmayın.

Ödeme bilgilerinizi girmeden önce, vergi bilgilerinizi girmek için Payout Tax Info‘nun yanındaki Create butonuna tıklayın. Buradan sonra, sizden adım adım bir takım bilgiler girmeniz istenecek. Doğruya doğru, bu kısım gerçekten biraz karışık. Bu yüzden bu esnada yanınızda, İngilizce’den anlayan ve mümkünse daha önce bu tarz işlerle uğraşmış birinin olması oldukça işinize yarayacaktır.

Vergi işlemlerini tamamladıktan sonra artık ödeme bilgilerinizi girebilirsiniz. Bunun için Payout Method‘daki Add payout method butonuna tıklayın. Eğer henüz bir USD dolar hesabınız yoksa, paranın Unity Ads hesabınızda birikmesi için “Hold my payments“ı seçin ve işlemi tamamlayın. Dolar hesabınız varsa “Bank transfer” seçeneğini seçin. Minimum Payout Amount, Unity Ads hesabınızda ne kadar para biriktikten sonra, bu paranın bankanıza aktarılacağıdır. Ancak uluslararası para transferi demek aynı zamanda bankanın bundan komisyon alması da demek olduğu için (ilaveten Unity de 7.5 euro komisyon alıyor), transfer sayısını minimuma indirmek adına bu değeri yüksek tutmanızı öneririm. Sonrasında Add bank transfer details butonu ile, banka bilgilerinizi Worldpay sistemi üzerinden girebilirsiniz. Bankanızın SWIFT bilgilerini, bankanın web sitesi üzerinden bulmanız mümkün. Banka bilgilerinizi de girdikten sonra artık yapmanız gereken bir şey kalmıyor.

4) Singleton Reklam Scripti (Son Güncelleme 23.05.2018)

Admob dersim şimdiye kadar tahminimden çok daha fazla ilgi gördü. Ben de boş durmadım ve hem banner, hem interstitial, hem de rewarded reklamları bir arada destekleyen ve singleton pattern kullanan örnek bir script yazarak işinizi kolaylaştırmak istedim.

Oyunun ilk sahnesinde boş bir GameObject oluşturup içine aşağıdaki ReklamScript C# scriptini atın (scripti kameraya atmayın, içinde Transform hariç başka component olmayan boş bir objeye atın!):

using UnityEngine;
using System.Collections;
using System;
using GoogleMobileAds.Api;

public class ReklamScript : MonoBehaviour
{
	private static ReklamScript instance = null;

	[Header( "Kimlikler" )]
	public string uygulamaKimligi;
	public string bannerKimligi;
	public string interstitialKimligi;
	public string rewardedVideoKimligi;

	[Header( "Test Modu" )]
	public bool testModu = false;
	public string testDeviceID;

	[Header( "Diğer Ayarlar" )]
	public bool cocuklaraYonelikReklamGoster = false;
	public AdPosition bannerPozisyonu = AdPosition.Top;

	private BannerView bannerReklam;
	private InterstitialAd interstitialReklam;

	private float interstitialIstekTimeoutZamani;
	private float rewardedVideoIstekTimeoutZamani;

	private IEnumerator interstitialGosterCoroutine;
	private IEnumerator rewardedVideoGosterCoroutine;

	public delegate void RewardedVideoOdul( Reward odul );
	private RewardedVideoOdul odulDelegate;

	private bool BannerGosterebilirMi { get { return !string.IsNullOrEmpty( bannerKimligi ) || ( testModu && string.IsNullOrEmpty( testDeviceID ) ); } }
	private bool InterstitialGosterebilirMi { get { return !string.IsNullOrEmpty( interstitialKimligi ) || ( testModu && string.IsNullOrEmpty( testDeviceID ) ); } }
	private bool RewardedVideoGosterebilirMi { get { return !string.IsNullOrEmpty( rewardedVideoKimligi ) || ( testModu && string.IsNullOrEmpty( testDeviceID ) ); } }

	private void Awake()
	{
		if( instance == null )
		{
			instance = this;
			DontDestroyOnLoad( this );

			MobileAds.Initialize( uygulamaKimligi );

			BannerReklamYukle();
			InterstitialReklamYukle();
			RewardedReklamYukle();
		}
		else if( this != instance )
			Destroy( this );
	}

	private void BannerReklamYukle()
	{
		if( !BannerGosterebilirMi )
			return;

		if( bannerReklam != null )
			bannerReklam.Destroy();

		if( testModu && string.IsNullOrEmpty( testDeviceID ) )
		{
#if UNITY_ANDROID
			bannerReklam = new BannerView( "ca-app-pub-3940256099942544/6300978111", AdSize.SmartBanner, bannerPozisyonu );
#elif UNITY_IOS
			bannerReklam = new BannerView( "ca-app-pub-3940256099942544/2934735716", AdSize.SmartBanner, bannerPozisyonu );
#endif
		}
		else
			bannerReklam = new BannerView( bannerKimligi, AdSize.SmartBanner, bannerPozisyonu );

		bannerReklam.OnAdFailedToLoad += BannerYuklenemedi;
		bannerReklam.LoadAd( ReklamIstegiOlustur() );
		bannerReklam.Hide();
	}

	private void InterstitialReklamYukle()
	{
		if( !InterstitialGosterebilirMi )
			return;

		if( interstitialReklam != null )
			interstitialReklam.Destroy();

		if( testModu && string.IsNullOrEmpty( testDeviceID ) )
		{
#if UNITY_ANDROID
			interstitialReklam = new InterstitialAd( "ca-app-pub-3940256099942544/1033173712" );
#elif UNITY_IOS
			interstitialReklam = new InterstitialAd( "ca-app-pub-3940256099942544/4411468910" );
#endif
		}
		else
			interstitialReklam = new InterstitialAd( interstitialKimligi );

		interstitialReklam.OnAdClosed += InterstitialDelegate;
		interstitialReklam.OnAdFailedToLoad += InterstitialYuklenemedi;
		interstitialReklam.LoadAd( ReklamIstegiOlustur() );

		interstitialIstekTimeoutZamani = Time.realtimeSinceStartup + 10f;
	}

	private void RewardedReklamYukle()
	{
		if( !RewardedVideoGosterebilirMi )
			return;

		RewardBasedVideoAd rewardedReklam = RewardBasedVideoAd.Instance;
		rewardedReklam.OnAdClosed -= RewardedVideoDelegate;
		rewardedReklam.OnAdClosed += RewardedVideoDelegate;
		rewardedReklam.OnAdRewarded -= RewardedVideoOdullendir;
		rewardedReklam.OnAdRewarded += RewardedVideoOdullendir;

		if( testModu && string.IsNullOrEmpty( testDeviceID ) )
		{
#if UNITY_ANDROID
			rewardedReklam.LoadAd( ReklamIstegiOlustur(), "ca-app-pub-3940256099942544/5224354917" );
#elif UNITY_IOS
			rewardedReklam.LoadAd( ReklamIstegiOlustur(), "ca-app-pub-3940256099942544/1712485313" );
#endif
		}
		else
			rewardedReklam.LoadAd( ReklamIstegiOlustur(), rewardedVideoKimligi );

		rewardedVideoIstekTimeoutZamani = Time.realtimeSinceStartup + 30f;
	}

	private AdRequest ReklamIstegiOlustur()
	{
		AdRequest.Builder reklamIstegi = new AdRequest.Builder();

		if( testModu && !string.IsNullOrEmpty( testDeviceID ) )
			reklamIstegi.AddTestDevice( testDeviceID );

		if( cocuklaraYonelikReklamGoster )
			reklamIstegi.TagForChildDirectedTreatment( true );

		return reklamIstegi.Build();
	}

	private void InterstitialDelegate( object sender, EventArgs args )
	{
		InterstitialReklamYukle();
	}

	private void RewardedVideoDelegate( object sender, EventArgs args )
	{
		RewardedReklamYukle();
	}

	private void BannerYuklenemedi( object sender, AdFailedToLoadEventArgs args )
	{
		if( bannerReklam != null )
		{
			bannerReklam.Destroy();
			bannerReklam = null;
		}
	}

	private void InterstitialYuklenemedi( object sender, AdFailedToLoadEventArgs args )
	{
		if( interstitialReklam != null )
		{
			interstitialReklam.Destroy();
			interstitialReklam = null;
		}
	}

	//private void OnGUI()
	//{
	//  Color c = GUI.color;

	//  if( GUI.Button( new Rect( Screen.width / 2 - 150, 0, 300, 120 ), "Banner Goster" ) )
	//      ReklamScript.BannerGoster();

	//  if( GUI.Button( new Rect( Screen.width / 2 - 150, 120, 300, 120 ), "Banner Gizle" ) )
	//      ReklamScript.BannerGizle();

	//  GUI.color = InterstitialHazirMi() ? Color.green : Color.red;
	//  if( GUI.Button( new Rect( Screen.width / 2 - 150, 240, 300, 120 ), "Interstitial Goster" ) )
	//      ReklamScript.InsterstitialGoster();

	//  GUI.color = RewardedReklamHazirMi() ? Color.green : Color.red;
	//  if( GUI.Button( new Rect( Screen.width / 2 - 150, 360, 300, 120 ), "Rewarded Goster" ) )
	//      ReklamScript.RewardedReklamGoster( null );

	//  GUI.color = c;
	//}

	public static void BannerReklamAl()
	{
		if( instance == null )
			return;

		instance.BannerReklamYukle();
	}

	public static void BannerGoster()
	{
		if( instance == null )
			return;

		if( instance.bannerReklam == null )
		{
			instance.BannerReklamYukle();
			if( instance.bannerReklam == null )
				return;
		}

		instance.bannerReklam.Show();
	}

	public static void BannerGizle()
	{
		if( instance == null )
			return;

		if( instance.bannerReklam == null )
			return;

		instance.bannerReklam.Hide();
	}

	public static bool InterstitialHazirMi()
	{
		if( instance == null )
			return false;

		if( instance.interstitialReklam == null )
			return false;

		return instance.interstitialReklam.IsLoaded();
	}

	public static void InterstitialReklamAl()
	{
		if( instance == null )
			return;

		if( instance.interstitialReklam != null && instance.interstitialReklam.IsLoaded() )
			return;

		instance.InterstitialReklamYukle();
	}

	public static void InsterstitialGoster()
	{
		if( instance == null )
			return;

		if( instance.interstitialReklam == null )
		{
			instance.InterstitialReklamYukle();
			if( instance.interstitialReklam == null )
				return;
		}

		if( instance.interstitialGosterCoroutine != null )
		{
			instance.StopCoroutine( instance.interstitialGosterCoroutine );
			instance.interstitialGosterCoroutine = null;
		}

		if( instance.interstitialReklam.IsLoaded() )
			instance.interstitialReklam.Show();
		else
		{
			if( Time.realtimeSinceStartup >= instance.interstitialIstekTimeoutZamani )
				instance.InterstitialReklamYukle();

			instance.interstitialGosterCoroutine = instance.InsterstitialGosterCoroutine();
			instance.StartCoroutine( instance.interstitialGosterCoroutine );
		}
	}

	public static bool RewardedReklamHazirMi()
	{
		if( instance == null )
			return false;

		return RewardBasedVideoAd.Instance.IsLoaded();
	}

	public static void RewardedReklamAl()
	{
		if( instance == null )
			return;

		if( RewardBasedVideoAd.Instance.IsLoaded() )
			return;

		instance.RewardedReklamYukle();
	}

	public static void RewardedReklamGoster( RewardedVideoOdul odulFonksiyonu )
	{
		if( instance == null )
			return;

		if( !instance.RewardedVideoGosterebilirMi )
			return;

		if( instance.rewardedVideoGosterCoroutine != null )
		{
			instance.StopCoroutine( instance.rewardedVideoGosterCoroutine );
			instance.rewardedVideoGosterCoroutine = null;
		}

		instance.odulDelegate = odulFonksiyonu;

		RewardBasedVideoAd rewardedReklam = RewardBasedVideoAd.Instance;
		if( rewardedReklam.IsLoaded() )
			rewardedReklam.Show();
		else
		{
			if( Time.realtimeSinceStartup >= instance.rewardedVideoIstekTimeoutZamani )
				instance.RewardedReklamYukle();

			instance.rewardedVideoGosterCoroutine = instance.RewardedVideoGosterCoroutine();
			instance.StartCoroutine( instance.rewardedVideoGosterCoroutine );
		}
	}

	private IEnumerator InsterstitialGosterCoroutine()
	{
		float istekTimeoutAni = Time.realtimeSinceStartup + 2.5f;
		while( !interstitialReklam.IsLoaded() )
		{
			if( Time.realtimeSinceStartup > istekTimeoutAni )
				yield break;

			yield return null;

			if( interstitialReklam == null )
				yield break;
		}

		interstitialReklam.Show();
	}

	private IEnumerator RewardedVideoGosterCoroutine()
	{
		RewardBasedVideoAd rewardedReklam = RewardBasedVideoAd.Instance;
		float istekTimeoutAni = Time.realtimeSinceStartup + 10f;
		while( !rewardedReklam.IsLoaded() )
		{
			if( Time.realtimeSinceStartup > istekTimeoutAni )
				yield break;

			yield return null;
		}

		rewardedReklam.Show();
	}

	private void RewardedVideoOdullendir( object sender, Reward odul )
	{
		if( odulDelegate != null )
			odulDelegate( odul );
	}
}

Şimdi Inspector’dan Reklam Script‘teki Uygulama Kimliği, Banner Kimliği, Interstitial Kimliği ve Rewarded Video Kimliği yazan yerlere ilgili kimlikleri yapıştırın (kimliklerin başında veya sonunda bir karakter bile boşluk kalmamasına dikkat edin). Kullanmadığınız reklam birimlerinin kimliklerini boş bırakabilirsiniz. Eğer Admob’un test reklam kimliklerini kullanarak reklamları test etmek isterseniz Test Modu‘nu aktifleşirin ama Test Device ID‘yi boş bırakın. Bu durumda script otomatik olarak test reklam kimliklerini kullanacak. Eğer cihazda test modunu aktifleştirerek kendi reklam kimlikleriniz üzerinden reklamları test etmek isterseniz de Test Modu‘nu aktifleştirin ve ilaveten Test Device ID‘ye cihaz ID’nizi girin. Oyununuz çocuklara yönelik ise ve(ya) Google Play’de Designed for Families programına katılmayı planlıyorsanız, o zaman Cocuklara Yonelik Reklam Goster seçeneğini işaretleyin; aksi taktirde oyununuzda reklamlar gözükmeyebilir. Son olarak da, Banner Pozisyonu değişkeni vasıtasıyla, banner reklamın ekranda gözükmesini istediğiniz yeri seçin. Varsayılan olarak bu değer AdPosition.Top, yani ekranın tepesidir ancak değerini AdPosition.Bottom yaparsanız banner reklam ekranın altında çıkar. Artık scripti kullanmaya hazırsınız.

Scriptin kullanımı oldukça basit: banner reklamı göstermek için ReklamScript.BannerGoster(); fonksiyonunu, banner reklamı gizlemek için ise ReklamScript.BannerGizle(); fonksiyonunu kullanabilirsiniz.

Interstitial reklam göstermek isterseniz ReklamScript.InsterstitialGoster(); fonksiyonunu kullanmanız yeterli. Eğer o esnada bir interstitial reklam yüklenmişse reklam anında gösterilir, yoksa yeni bir reklam yüklenmeye başlar veya mevcut yüklenmekte olan reklamın yüklenmesi beklenir. Eğer reklam 2.5 saniye içerisinde yüklenirse ekranda gösterilir, yoksa interstitial reklam gösterme isteğiniz başarısız olur. Bunun sebebi ise, reklamın siz bu fonksiyonu çağırdıktan onlarca saniye sonra anca yüklenmesi durumunda, oyunun ortasında *puf* diye ekranda belirerek kullanıcıları kızdırmasının önüne geçmek. Eğer ki sistem üzerinde biraz daha kontrol sahibi olmak isterseniz, ReklamScript.InterstitialHazirMi() fonksiyonu ile interstitial reklamın göstermeye hazır olup olmadığını (yüklenip yüklenmediğini) kontrol edebilir (ve ancak reklam hazırsa göster fonksiyonunu çağırabilir) veya ReklamScript.InterstitialReklamAl() fonksiyonu ile manual olarak bir interstitial reklam yükleme talebinde bulunabilirsiniz. Yüklenen bu reklam arkaplanda ReklamScript.InterstitialGoster() fonksiyonunun çağrılmasını bekler. Aslında singleton kod, sizin bu fonksiyonu çağırmanıza gerek kalmadan gerektiğinde otomatik olarak yeni bir reklam yüklüyor ancak yine de böyle bir seçeneğiniz olduğunu bilin.

Gelelim rewarded video reklamlara. Kullanıcı bu reklamı baştan sona izlerse kullanıcıyı ödüllendirmek zorunda olduğunuz için, bu reklam biraz daha özel kategoriye giriyor. Rewarded video reklam göstermek için aşağıdaki örnek kodu inceleyebilirsiniz:

using UnityEngine;

public class RewardedGosterTest : MonoBehaviour 
{
	private int altin = 0;

	void OnGUI()
	{
		if( GUILayout.Button( "Rewarded reklam göster" ) )
		{
			ReklamScript.RewardedReklamGoster( RewardedReklamGosterildi );
		}
	}

	void RewardedReklamGosterildi( GoogleMobileAds.Api.Reward odul )
	{
		altin += (int) odul.Amount;
	}
}

Gördüğünüz üzere, rewarded reklam başarılı bir şekilde gösterilirse yapılacak şeyleri RewardedReklamGosterildi isimli, GoogleMobileAds.Api.Reward türünde odul parametresi alan bir fonksiyonda belirliyor ve ReklamScript.RewardedReklamGoster( RewardedReklamGosterildi ); fonksiyonu ile rewarded reklam gösterme talebinde bulunuyoruz. Böylece kullanıcı rewarded video reklamı izledikten sonra RewardedReklamGosterildi fonksiyonu çağrılıyor ve kullanıcı ödüllendiriliyor. Tıpkı interstitial’da olduğu gibi, rewarded reklamda da reklam çağrıldıktan sonra bir timeout mevcut ancak bu değer 2.5 saniye yerine bu sefer 10 saniye çünkü interstitial’ın aksine, genelde rewarded video reklamlar kullanıcının izniyle çağrılır (mesela kullanıcı ‘bedava coin’ butonuna tıklayınca) ve bu durumda kullanıcının 2.5 saniyeden daha uzun bir süre bekletilmesi normaldir. Ancak yine de, sadece bir rewarded reklam hazırda bekliyorsa ‘bedava coin’ butonunu aktifleştirmek istiyorsanız, ReklamScript.RewardedReklamHazirMi() fonksiyonu ile reklamın yüklenip yüklenmediğini kontrol edebilir veya uzun süredir rewarded reklam yüklenmediyse ReklamScript.RewardedReklamAl() fonksiyonu ile manual bir şekilde rewarded reklam talebinde bulunarak tekrar şansınızı deneyebilirsiniz.

Son olarak da, dilerseniz ReklamScript kodundaki OnGUI fonksiyonunun comment’ini kaldırarak reklam birimlerinizi test etmeye yarayan GUI butonlarını ekranda gösterebilirsiniz.

Script singleton’dan faydalandığı için sahne değişse bile yok olmuyor ve böylece bir önceki sahnede tanımladığınız bir reklamın kontrolü bir sonraki sahnede de elinizde oluyor.

Kanımca dersi böylece tamamlamış oldum. Umarım faydalı olmuştur. Başka derslerde görüşmek üzere!

yorum
  1. Batuhan Mafratoglu dedi ki:

    Abi ben reklamalı ekeldim oyuna gozukuyorlar ama google playe atiyorum indiriyorum sonra ama onda reklam gozukmuyor aynı apk yukluyorum google playe ama gozukmuyor yardımcı olursan sevinirim

  2. toprak41 dedi ki:

    using UnityEngine;
    using System.Collections;
    using System;
    using GoogleMobileAds.Api;

    public class ReklamInterstitial : MonoBehaviour
    {
    private InterstitialAd reklamObjesi;

    void Start()
    {
    MobileAds.Initialize(“ca-app-pub-32***********************”);
    YeniReklamAl(null, null);
    }

    public void Reklamigoster()
    {

    {
    StartCoroutine(ReklamiGoster());
    }
    }

    IEnumerator ReklamiGoster()
    {
    while (!reklamObjesi.IsLoaded())
    yield return null;

    reklamObjesi.Show();
    }

    public void YeniReklamAl(object sender, EventArgs args)
    {
    if (reklamObjesi != null)
    reklamObjesi.Destroy();

    reklamObjesi = new InterstitialAd(“ca-app-pub-32********************”);
    reklamObjesi.OnAdClosed += YeniReklamAl;

    AdRequest reklamIstegi = new AdRequest.Builder().Build();
    reklamObjesi.LoadAd(reklamIstegi);
    }
    }

    Yasir bey ben bu kodu kullanıyorum hata vermiyor fakat uygulamamın apksını manuel olarak cihazıma yüklediğimde reklamlar görünüyor ama playstore dan indirdiğimde reklamlar görünmüyor admoba reklam isteği gönderiliyor fakat reklam gelmiyor.

    GoogleMobileAds.Api.InterstitialAd:Show() (at Assets/GoogleMobileAds/Api/InterstitialAd.cs:104)
    c__Iterator0:MoveNext() (at Assets/kodlar/ReklamInterstitial.cs:29)
    UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
    ReklamInterstitial:Reklamigoster() (at Assets/kodlar/ReklamInterstitial.cs:20)
    UnityEngine.EventSystems.EventSystem:Update()

    Dummy IsLoaded, Dummy LoadAd, Dummy CreateInterstitialAd, Dummy Initialize, Dummy .ctor

    gibi uyarılar çıkıyor logcatte sorun kodda mı yoksa başka birşeyde mi anlayamadım beni bu konuda aydınlatırsanız çok memnun olurum.

    • yasirkula dedi ki:

      Dummy’li mesajların logcat’te değil Unity’nin konsolunda çıkması lazım. Logcat’te daha detaylı mesajlar çıkar ve reklam alınamazsa, sorunun kaynağını tespit etmeye yardımcı bir hata kodu döndürülür. Sizin o hata kodunu, logcat kullanarak (Unity’nin konsolunu kullanarak değil) bulmanız lazım.

  3. Alperen dedi ki:

    Hocam selamun aleyküm öncelikle verdiğiniz bilgi ve bilgiler için çok teşekkürler fakat kafam durmuş durumda ben geçiş reklamını oyun içerisindeki bir butona tıklandığında vede yanlış cevap verildiğinde çıkmasını istiyorum bi türlü beceremedim kodu hazır olarak ve detaylı açıklamayla birlikte verir misiniz?

    • yasirkula dedi ki:

      Butona tıklandığında ve de yanlış cevap verildiğinde şu fonksiyonu çağırın:

      public void GecisReklamiGoster()
      {
      ReklamScript.InterstitialGoster();
      }

      NOT: Singleton reklam scriptini kullandığınızı varsayıyorum. Kullanmıyorsanız da o başlığın altındaki talimatları uygulayarak projenize scripti ekleyebilirsiniz.

  4. Serkan dedi ki:

    Merhaba Yasir Hocam.

    Burada Unity Ads Entegrasyonu başlıklı yazınızdaki işlemleri adım adım gerçekleştirdim. Yalnız,

    ” Geriye sadece Unity Ads mediation’ı için gerekli şeyleri Unity’e import etmek kaldı. Bunun için şu adresteki en güncel versiyonun zip‘ini indirin: https://bintray.com/google/mobile-ads-adapters-unity/GoogleMobileAdsUnityAdsMediation#files

    buradaki linkten son sürümü projeye import ettikten sonra build aşamasında “Unable to convert classes into dex format.” hatasını aldım. Burada daha önceden başka bir arkadaş da aynı sorunu yaşamış, çözüm yolunu denedim ama bende sorun çözülmedi. İnternette 2 gündür bakmadığım forum, denemediğim çözüm önerisi neredeyse kalmadı. Duplicate olmuş dosyaları bulmaya çalıştım, bulamadım. Daha sonra hatada belirtilen path’lerden giderek .jar uzantılı dosyaların içlerinde duplicate olmuş class’ları teker teker sildim, sorun çözülmedi. SDK güncel durumda. JDK olarak jdk1.8.0_192 kullanıyorum ama bu jdk’nın 32 bit versiyonunu da denedim yine değişen bir şey olmadı.. Artık en sonunda bir de size danışmaya karar verdim.

    Bu durumda başka neler yapılabilir?

    Hatanın ayrıntıları şu şekildedir:

    CommandInvokationFailure: Unable to convert classes into dex format.
    C:/Program Files/Java/jdk1.8.0_192\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir=”C:/Users/Ser_q/AppData/Local/Android/android-sdk\tools” -Dfile.encoding=UTF8 -jar “C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar” –

    stderr[
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/ads/BuildConfig;
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/ads/IUnityAdsListener;
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/ads/UnityAds;
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/ads/UnityAds$FinishState;
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/ads/UnityAds$PlacementState;
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/ads/UnityAds$UnityAdsError;
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/ads/mediation/IUnityAdsExtendedListener;
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/ads/metadata/InAppPurchaseMetaData;
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/ads/metadata/MediationMetaData;

    UNEXPECTED TOP-LEVEL EXCEPTION:
    java.lang.RuntimeException: Translation has been interrupted
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:614)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:310)
    at com.android.dx.command.dexer.Main.runDx(Main.java:288)
    at com.android.dx.command.dexer.Main.main(Main.java:244)
    at com.android.dx.command.Main.main(Main.java:95)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at SDKMain.main(SDKMain.java:130)
    Caused by: java.lang.InterruptedException: Too many errors
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:606)
    … 9 more
    ]

    • yasirkula dedi ki:

      Window-Services’ta Ads açık ise kapatın. Aksi taktirde projenizdeki .jar ve .aar uzantılı dosyaların isimleri neler?

      • Serkan dedi ki:

        Unity Ads’den rewarded ads kullanıyorum projede. Bu yüzden Services-Ads’i kapatınca bir de oradan hata alıyorum. Dolayısıyla o da işe yaramıyor.

        Sonunda ** ile belirtilenler Assets\Plugins\Android klasörü içinde görünüp OyunAdı\Temp\StagingArea\android-libraries klasörü içinde görünmeyenlerdir.

        Sonunda *** ile belirtilenler Assets\Plugins\Android klasörü içinde görünmeyip OyunAdı\Temp\StagingArea\android-libraries klasörü içinde görünenlerdir.

        Dosyalar:

        android.arch.core.common-1.0.0.jar **
        android.arch.lifecycle.common-1.0.0.jar **
        android.arch.lifecycle.runtime-1.0.0.aar
        com.android.support.customtabs-26.1.0.aar
        com.android.support.support-annotations-26.1.0.jar
        com.android.support.support-compat-26.1.0.aar
        com.android.support.support-core-ui-26.1.0.aar
        com.android.support.support-core-utils-26.1.0.aar
        com.android.support.support-fragment-26.1.0.aar
        com.android.support.support-media-compat-26.1.0.aar
        com.android.support.support-v4-26.1.0.aar
        com.google.ads.mediation.unity-3.0.0.0.aar
        com.google.android.gms.play-services-ads-15.0.1.aar
        com.google.android.gms.play-services-ads-base-15.0.1.aar
        com.google.android.gms.play-services-ads-identifier-15.0.1.aar
        com.google.android.gms.play-services-ads-lite-15.0.1.aar
        com.google.android.gms.play-services-basement-15.0.1.aar
        com.google.android.gms.play-services-gass-15.0.1.aar
        com.unity3d.ads.unity-ads-3.0.0.aar
        GoogleMobileAdsPlugin\unity-plugin-library.jar
        unity-ads.aar ***

      • yasirkula dedi ki:

        Unity Ads rewarded reklamlarını Admob mediation ile gösterseniz olmaz mı? Öyle olunca Services-Ads’i kapatınca sorunların çözülmesi lazım.

      • Efe Can dedi ki:

        Yasir hocam
        Selamlar,

        Unity 5.6.2f1 sürümünü kullanıyorum. Oyun projem bitti yalnız reklam aşamasında GoogleMobileAds’ import ettikten sonra sizin Singleton reklam skriptini sizden almış olduğum bilgilere göre başarılı bir şekilde uyguluyorum test reklamlarını alıyorum fakat admob kimlik ve reklam id lerini girdikten sonra test modunu kapatıyorum. Projemı oyun modunda çalıştırıken sırasıyla bu uyarıları alıyorum. Ayrıca build alıyorum ama reklamları göremiyorum.

        1.Dummy .ctor
        UnityEngine.Debug:Log(Object)
        GoogleMobileAds.Common.DummyClient:.ctor() (at Assets/GoogleMobileAds/Common/DummyClient.cs:28)
        GoogleMobileAds.GoogleMobileAdsClientFactory:MobileAdsInstance() (at Assets/GoogleMobileAds/Platforms/GoogleMobileAdsClientFactory.cs:87)
        System.Reflection.MethodBase:Invoke(Object, Object[])
        GoogleMobileAds.Api.MobileAds:GetMobileAdsClient() (at Assets/GoogleMobileAds/Api/MobileAds.cs:54)
        GoogleMobileAds.Api.MobileAds:.cctor() (at Assets/GoogleMobileAds/Api/MobileAds.cs:24)
        ReklamScript:Awake() (at Assets/Script/ReklamScript.cs:55)
        ReklamScript:Awake() (at Assets/Script/ReklamScript.cs:47)

        2.Dummy Initialize
        UnityEngine.Debug:Log(Object)
        GoogleMobileAds.Common.DummyClient:Initialize(String) (at Assets/GoogleMobileAds/Common/DummyClient.cs:70)
        GoogleMobileAds.Api.MobileAds:Initialize(String) (at Assets/GoogleMobileAds/Api/MobileAds.cs:28)
        ReklamScript:Awake() (at Assets/Script/ReklamScript.cs:47)

        3.Dummy .ctor
        UnityEngine.Debug:Log(Object)
        GoogleMobileAds.Common.DummyClient:.ctor() (at Assets/GoogleMobileAds/Common/DummyClient.cs:28)
        GoogleMobileAds.GoogleMobileAdsClientFactory:BuildBannerClient() (at Assets/GoogleMobileAds/Platforms/GoogleMobileAdsClientFactory.cs:27)
        System.Reflection.MethodBase:Invoke(Object, Object[])
        GoogleMobileAds.Api.BannerView:.ctor(String, AdSize, AdPosition) (at Assets/GoogleMobileAds/Api/BannerView.cs:34)
        ReklamScript:BannerReklamYukle() (at Assets/Script/ReklamScript.cs:74)
        ReklamScript:Awake() (at Assets/Script/ReklamScript.cs:49)

        4.Dummy CreateBannerView
        UnityEngine.Debug:Log(Object)
        GoogleMobileAds.Common.DummyClient:CreateBannerView(String, AdSize, AdPosition) (at Assets/GoogleMobileAds/Common/DummyClient.cs:90)
        GoogleMobileAds.Api.BannerView:.ctor(String, AdSize, AdPosition) (at Assets/GoogleMobileAds/Api/BannerView.cs:35)
        ReklamScript:BannerReklamYukle() (at Assets/Script/ReklamScript.cs:74)
        ReklamScript:Awake() (at Assets/Script/ReklamScript.cs:49)

        5.Dummy LoadAd
        UnityEngine.Debug:Log(Object)
        GoogleMobileAds.Common.DummyClient:LoadAd(AdRequest) (at Assets/GoogleMobileAds/Common/DummyClient.cs:100)
        GoogleMobileAds.Api.BannerView:LoadAd(AdRequest) (at Assets/GoogleMobileAds/Api/BannerView.cs:68)
        ReklamScript:BannerReklamYukle() (at Assets/Script/ReklamScript.cs:77)
        ReklamScript:Awake() (at Assets/Script/ReklamScript.cs:49)

        6.Dummy HideBannerView
        UnityEngine.Debug:Log(Object)
        GoogleMobileAds.Common.DummyClient:HideBannerView() (at Assets/GoogleMobileAds/Common/DummyClient.cs:110)
        GoogleMobileAds.Api.BannerView:Hide() (at Assets/GoogleMobileAds/Api/BannerView.cs:74)
        ReklamScript:BannerReklamYukle() (at Assets/Script/ReklamScript.cs:78)
        ReklamScript:Awake() (at Assets/Script/ReklamScript.cs:49)

        7.Dummy .ctor
        UnityEngine.Debug:Log(Object)
        GoogleMobileAds.Common.DummyClient:.ctor() (at Assets/GoogleMobileAds/Common/DummyClient.cs:28)
        GoogleMobileAds.GoogleMobileAdsClientFactory:BuildInterstitialClient() (at Assets/GoogleMobileAds/Platforms/GoogleMobileAdsClientFactory.cs:42)
        System.Reflection.MethodBase:Invoke(Object, Object[])
        GoogleMobileAds.Api.InterstitialAd:.ctor(String) (at Assets/GoogleMobileAds/Api/InterstitialAd.cs:34)
        ReklamScript:InterstitialReklamYukle() (at Assets/Script/ReklamScript.cs:98)
        ReklamScript:Awake() (at Assets/Script/ReklamScript.cs:50)

        8.Dummy CreateInterstitialAd
        UnityEngine.Debug:Log(Object)
        GoogleMobileAds.Common.DummyClient:CreateInterstitialAd(String) (at Assets/GoogleMobileAds/Common/DummyClient.cs:142)
        GoogleMobileAds.Api.InterstitialAd:.ctor(String) (at Assets/GoogleMobileAds/Api/InterstitialAd.cs:35)
        ReklamScript:InterstitialReklamYukle() (at Assets/Script/ReklamScript.cs:98)
        ReklamScript:Awake() (at Assets/Script/ReklamScript.cs:50)

        9.Dummy LoadAd
        UnityEngine.Debug:Log(Object)
        GoogleMobileAds.Common.DummyClient:LoadAd(AdRequest) (at Assets/GoogleMobileAds/Common/DummyClient.cs:100)
        GoogleMobileAds.Api.InterstitialAd:LoadAd(AdRequest) (at Assets/GoogleMobileAds/Api/InterstitialAd.cs:92)
        ReklamScript:InterstitialReklamYukle() (at Assets/Script/ReklamScript.cs:102)
        ReklamScript:Awake() (at Assets/Script/ReklamScript.cs:50)

      • yasirkula dedi ki:

        Bu mesajlar, Admob kodunun doğru çalıştığını gösteriyor. Projenizde reklam gösterme fonksiyonlarını kullanıyor musunuz çünkü log’larda reklam gösteren bir mesaj göremiyorum.

  5. emrahguven87 dedi ki:

    Merhaba,

    Öncelikle emeğiniz için çok teşekkürler..Benim reklam gösterimi ile ilgili ilginç bir problemim var herhangi bir çözüm bulamadım..Belki bu konuda bir tecrübeniz vardır..

    Banner reklamı ve geçiş reklamını oyunuma başarılı bir şekilde ekledim ve Build ettim herhangi bir problem yok.Oyunumu Android markete gönderdim ve yayınlandı..Reklamlarımda başarılı bir şekilde çıkıyordu..Hem emulatörlerde hemde normal cihazlarda gözükoyordu..Hiçbir sorun yaşamadım..Fakat aradan 2 gün geçtikten sonra oyunumda reklamlar gözükmemeye başladı..Google developer konsolda veya admop yönetim panelinde herhangi bir değişiklik yapmadım..

    İşin ilginç tarafı şu; oyunumu APK dosyasından yükleyince reklamlar çıkıyor fakat marketten indirince reklamlar çıkmıyor..Mantıklı bir çözüm bulamadım..Bu konuda herhangi bir fikriniz var mı? Teşekkürler!

    • yasirkula dedi ki:

      Reklam kodunuzda test modunun kapalı olduğundan emin olun. Google Play’de oyununuzu çocuklara yönelik olarak belirlediyseniz de, reklam kodunuzda TagForChildDirectedTreatment fonksiyonunu kullanmayı unutmayın. İlaveten, Google Play’den indirdiğiniz oyunu adb logcat -s Ads vasıtasıyla debug edip reklam isteklerinizin bir hata kodu döndürüp döndürmediğini kontrol etmenizi öneririm.

      • emrahguven87 dedi ki:

        Android studio ile cihazı eşleştirdim ve APK’yı çalıştırıp cihaz üzerinde test ettim..Logcat üzerinde hiçbir hata kaydı yok ve reklamlar gözüküyor..Dediğim gibi oyunu APK üzerinden kurunca reklamlar çalışıyor ama oyunu marketten indirdiğim zaman reklamlar yok..

        Oyun yalnızca çocuklara özel değil ve test modu devre dışı.Birkaç gün önce reklamlar çalışıyordu fakat aniden reklam gösterimi durdu..Bu konuyu Admob forumlarındada araştırdım..Aynı sorunu yaşayan onlarca insan gördüm ve henüz bununla ilgili bir çözüm yok..Muhtemelen Admob ile ilgili bir sıkıntı..

        İlginiz için teşekkür ederim..

      • yasirkula dedi ki:

        Google Play’den indirilmiş oyunu çalıştırırken de logcat ile hata mesajı var mı diye kontrol edebilirsiniz.

  6. Levent dedi ki:

    Yasir bey iyi akşamlar.
    Ben oyunuma Interstitial reklam ekledim . admob ‘ da 61 istek 14 gösterim bilgisi var .(Kazançta 0TL görünüyor . Yayınlanalı yaklaşık 3 hafta oldu.) Acaba koddamı bir problem var .
    Kodda ise yardımcı olurmusunuz . Kodu değiştirip update yapsam (Samsung Apps ‘ ta) oyuna versiyon numarsını değiştirmeme gerek varmı ?.
    Bilgi vermeniz ricasıyla kolay gelsin .

    Kodum bu.

    private InterstitialAd reklamObjesi;
    void Start ()
    {
    MobileAds.Initialize( “ca-app-pub” );
    YeniReklamAl(null, null);
    if(PlayerPrefs.GetInt(“reklam”)==1)
    {
    gecikme();
    PlayerPrefs.SetInt(“reklam”,0);
    }
    else
    {
    PlayerPrefs.SetInt(“reklam”,1);
    }
    }

    void gecikme()

    {
    StartCoroutine( ReklamiGoster());
    }

    IEnumerator ReklamiGoster()
    {
    while( !reklamObjesi.IsLoaded() )
    yield return null;

    reklamObjesi.Show();
    }

    public void YeniReklamAl( object sender, EventArgs args )
    {
    if( reklamObjesi != null )
    reklamObjesi.Destroy();

    reklamObjesi = new InterstitialAd( “ca-app-pub-” );
    reklamObjesi.OnAdClosed += YeniReklamAl; // Kullanıcı reklamı kapattıktan sonra çağrılır

    AdRequest reklamiAl = new AdRequest.Builder().Build();
    reklamObjesi.LoadAd( reklamiAl );
    }
    }

    • yasirkula dedi ki:

      Kodunuzda sıkıntı görmüyorum (ca-app-pub’ların devamının da kodunuzda yer aldığını varsayarak). Reklamlardan genelde tıklama başına veya bin gösterim başına para alınıyor, henüz 14 gösteriminiz olduğu ve anladığım kadarıyla tıklamanız olmadığı için para kazanmamanız normal sayılır. Reklamlarla etkileşime geçen kullanıcı sayısı arttıkça gelir gelmeye başlayacaktır diye ümit ediyorum.

  7. mehmet dedi ki:

    … bedava asset sitesi. (LİNK SİLİNDİ)

  8. ali dedi ki:

    başka bir unity projesi açtım önce adroid olarak ayarladım sonra paketi içine attım bu sefer uygulama dondu paketi yüklemedi hata verdi bu sorunu araştırdım bir yerde indirdiğimiz admob paketini java jdk dosyasının içine atılması gerektiğini okudum yaptım bu sefer paketi yükledi fakat yine çalışmadı ayrıca uygulamayı telefona atınca özel izinlerde hiç bir özel izin gerekmez diyor oysaki reklamlar için internet bağlantısı gerekir demesi gerekemez miydi ?

    • yasirkula dedi ki:

      İnternet izni belki özel izinlerde gözükecek kadar özel değildir, şu an ben de emin değilim. Paketi yüklerken ney hatası aldığınızı ve nasıl çözdüğünüzü tam bilmediğim için sorunun kaynağını tespit edemiyorum.

      • Efe Can dedi ki:

        Selamlar,
        Yasir Hocam
        Öncelikle paylaşımlarınız için teşekkür ederim. Ben yazılımcı değilim fakat hobi amaçlı Unity 3D kullanıyorum. Size sorum ”Singleton Reklam Scripti” ile ilgili olucak.
        Şimdi sizin paylaşmış olduğunuz Scripti yeni C# dosyasının içine kaydediyorum daha sonra GameObject menusunden Crate Empty ‘den GameObject açıyorum ve adınıda ReklamObjesi olarak değiştiriyorum ve sonrasında sizin yazdınız scripti ReklamObjesine Component işlemini yapıyorum hemen akabinde Uygulama kimliği, Banner kimliği vb. kutucuklar çıkıyor fakat bundan sonra nasıl bir işlem yapmam gerektiğini bilmiyorum. Sizden ricam bu konuda neler yapmam gerektiğini anlatır mısınız? . İyi çalışmalar.

        Not:Sahneye Button atadım ve Buttonun içine OnClick +ekledım >none(objeckt kısmına > reklamobjesini atadım >No Function yazan kısımdan > reklamsicriptini seçtim >insterstitial.göster i seçtim projemı build yaptıktan sonra test ettım sonuç olarak elde koca bir sıfır 😀

      • Efe Can dedi ki:

        +++ Yasrir hocam bu kısımı farketmeden size anlatmayı atlamışım Uygulama kimliğimi, banner kımlığımı ve insterstitial reklam birim kimliklerimi sizin belirmiş oldugunz şekilde giriyorum. Bilginize.
        Sevgilerle,

      • yasirkula dedi ki:

        ReklamScript fonksiyonlarını kendi yazdığınız script’lerde kullanmanız lazım. Örneğin şu script’i sahnenizdeki bir objeye component olarak verip OnClick’e bu script’in InterstitialGoster fonksiyonunu atayabilirsiniz:

        using UnityEngine;
        
        public class ReklamKodu : MonoBehaviour
        {
        	public void InterstitialGoster()
        	{
        		ReklamScript.InsterstitialGoster();
        	}
        }
        
      • Efe Can dedi ki:

        Yasir Hocam
        Tekrardan Selamlar,

        Paylaştığınız fonksiyonları yeni script te test amaçlı yazdım ve InterstitialGoster Buttona atadım daha sonra test için uygulamayı denedıgımde buttona bastığım anda programdan atıyr sebebi ne olabilir ?

        Teşekkürler.

      • yasirkula dedi ki:

        Zaten Play Services Resolver-Android Resolver-Resolve yaptıysanız, bir de Play Services Resolver-Android Resolver-Force Resolve yapmayı deneyin (internette böyle bir çözüm yolu okudum).

      • Efe Can dedi ki:

        Yasir hocam;

        using UnityEngine;

        public class ReklamKodu : MonoBehaviour
        {
        public void InterstitialGoster()
        {
        ReklamScript.InsterstitialGoster();
        }
        }

        Paylaştığınız fonksiyonları yeni script te test amaçlı yazdım ve InterstitialGoster Buttona atadım daha sonra test için uygulamayı denedıgımde buttona bastığım anda programdan atıyr sebebi ne olabilir ?

        Teşekkürler.

      • yasirkula dedi ki:

        Play Services Resolver-Android Resolver-Resolve ve sonra Play Services Resolver-Android Resolver-Force Resolve yapmayı denediniz mi?

      • Efe Can dedi ki:

        Yasir Hocam

        Play Services Resolver-Android Resolver-Resolve ve sonra Play Services Resolver-Android Resolver-Force Resolve

        nasıl yapılır bilmiyorum internetten araştırdım bilgi bulamadım rica etsem siz bana yardımcı olur musunuz ?

      • yasirkula dedi ki:

        Build Settings’te platform olarak Android seçili iken Project menüsünde bir yere sağ tıklayarak yapabilirsiniz.

      • Efe Can dedi ki:

        Yasir hocam
        Play Services Resolver-Android Resolver-Resolve ve sonra Play Services Resolver-Android Resolver-Force Resolve yaptım ve bu sorunu aldım.

        düşünceniz nedir acaba?

        Resolution failed

        Failed to fetch the following dependencies:
        com.google.android.gms:play-services-ads:15.0.1

        UnityEngine.Debug:LogError(Object)
        Google.Logger:Log(String, LogLevel)
        GooglePlayServices.PlayServicesResolver:Log(String, LogLevel)
        GooglePlayServices.ResolverVer1_1:LogMissingDependenciesError(List`1)
        GooglePlayServices.c__AnonStorey1C:m__2E(List`1)
        GooglePlayServices.c__AnonStorey17:m__27(Result)
        GooglePlayServices.c__AnonStorey19:m__32()
        Google.RunOnMainThread:ExecuteNext()
        Google.RunOnMainThread:m__6()
        Google.RunOnMainThread:RunAction(Action)
        Google.RunOnMainThread:ExecuteAll()
        Google.RunOnMainThread:Run(Action, Boolean)
        GooglePlayServices.c__AnonStorey17:m__28(Result)
        GooglePlayServices.c__AnonStorey17:m__29(Result)
        GooglePlayServices.ProgressReporter:SignalComplete()
        GooglePlayServices.ProgressReporter:CommandLineToolCompletion(Result)
        GooglePlayServices.c__AnonStorey2:m__3()
        Google.RunOnMainThread:ExecuteNext()
        Google.RunOnMainThread:m__6()
        Google.RunOnMainThread:RunAction(Action)
        Google.RunOnMainThread:ExecuteAll()
        UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

      • yasirkula dedi ki:

        SDK Manager’da Google Play services ve Android Support Repository kurulu ve güncel olsun. Aksi taktirde gerçekten bir fikrim yok, ben şimdi son sürüm Admob ile denediğimde bu sıkıntıyı yaşamadım.

      • Efe Can dedi ki:

        Yasir Hocam

        Force Resolve değişikliğini yapamamanın sebebini buldum. java_home güncelledikten sonra (üst sürüm) sorun çözüldü. Şuan reklamlar başarılı bir şekilde çalışıyor. Emeğinize ve yüreğinize sağlık 🙂

        Ayrıca;
        Hocam paylaşmış oldugunuz scripti geçişli sahnelerde kullanmak için nasıl bir yol izlemeliyim.?

      • yasirkula dedi ki:

        Sahneyi değiştirme kodunuzun olduğu yere ReklamScript.InterstitialGoster(); fonksiyonunu ekleyebilirsiniz.

  9. ali dedi ki:

    Hocam tüm işlemleri yaptım builde sıkıntı almıyorum telefonum adroid 7.0 ve sdk da 7.0 ın tüm partlarını indirdim dediğiniz işlemleri yaptım ve test reklam keyini kullarak minimum 7.0 ve max 7.0 players setting ayarlarını yaptım telefonumda denemek için ve sizin üstte banner reklam kodunu yapıp sahnedeki bir objeye attım apkyı telefona aktardım ama telefonda reklam çıkmıyor burada telefonum nete bağlı sıkıntı ne olabilir

      • ali dedi ki:

        Hayır hocam herhangi bir hata gözükmüyor dersinizdeki unity consolu üzerinden log alma kısmında gösterdiklerinizi yaptım cihazımı zaten gördü unity build and run yapınca oyun açıldı ama yine reklam çıkmadı ve console da hiç birşey yazmadı yani hata almadım

      • yasirkula dedi ki:

        O derste Receive Logcat Logs In Android’li kısımda bahsettiğim ayarları da yaptığınız halde bir log almadıysanız, sorunun kaynağını ben de bilemiyorum :/

      • ALİ dedi ki:

        Unity’e yeni güncelleme gelmiş sanırım bununla bir ilgisi olabilir mi hocam

      • yasirkula dedi ki:

        Ben unity console’unu yanlışlıkla kendi konsol asset’im ile karıştırmışım. Unity konsolunda Admob’un logcat logları maalesef gözükmez. Bunun için attığım linkteki diğer metotlardan faydalanmalısınız.

      • ali dedi ki:

        Hocam logcatteki hataları almak için adb dosyasının oldugu yere cmd açtım. Dediklerinizi uyguladım yalnız benim adb dosyam sizin ki gibi program files içerisinde değildi benimkinin yolunu C:\Users\USER\AppData\Local\Android\Sdk\platform-tools bu şekilde ve consola dediğiniz gibi sadece admob logu almak için gereken kodu yazdım ve sadece şu logu aldım

        C:\Users\USER\AppData\Local\Android\Sdk\platform-tools>adb logcat -s Ads
        ——— beginning of main
        ——— beginning of system

        başka da bir şey yazmıyor ne yapmamı önerirsiniz ?

      • ali dedi ki:

        Ayrıca Hocam şunu da ekleyim ben bu işlemleri yaparken unity consolunda banner reklam ile alakalı aldığım sarı üçgen içinde ünlem olarak belirtilen hatada

        Texture 2 (android banner) has resolution (260 x 233) lower than expected (320 x 180). This might compromise visual quality of the final image. Please consider using a native size texture and appropriate import options

        diye bir uyarı alıyorum buildrun yapınca farkettim sorunuma bir etkisi var mıdır nasıl çözülür ?

      • yasirkula dedi ki:

        Reklam göstermeye yarayan kodunuz çalıştığında logcat’e hâlâ log gelmiyorsa, reklam gösterme fonksiyonunuz hiç çağrılmıyor olabilir. Bunun için reklam gösterme fonksiyonunuzun içine Debug.Log’lar ekleyin ve şu asset vasıtasıyla bu log’lar geliyor mu kontrol edin: https://yasirkula.com/2016/06/18/unity-oyun-ici-debug-konsolu-ui-sistemi-ile/

        Aldığınız uyarının ise Admob ile bir alakası yok, sadece Player Settings’teki Android Banner resminin 320×180 boyutunda olmasını öneren bir mesaj.

      • ali dedi ki:

        Hocam öncelikle ilginiz ve bizler için hazırlamış olduğunuz bu paketler için çok teşekkür ederim gerçekten işlevsel paketler..
        Dediğiniz şekilde paketi oyun içine attım ve reklam gösterme scriptine debug.loglar yerleştirdim bu şekilde ;

        bir tane buraya : public static void BannerGoster()
        {
        if (instance == null)
        return;

        if (instance.bannerReklam == null)
        {
        Debug.Log(“reklam gösterildimi”);
        instance.BannerReklamYukle();
        if (instance.bannerReklam == null)
        return;
        }

        ayrıca bir tanede : private void BannerYuklenemedi(object sender, AdFailedToLoadEventArgs args)
        {
        if (bannerReklam != null)
        {
        Debug.Log(“Reklam yüklenmedi”);
        bannerReklam.Destroy();
        bannerReklam = null;
        }
        }

        debugları yerleştirdikten sonra buil işlemi ile apk yı telefonumda açtım oyun açıldıktan sonra oluşturmuş olduğunuz console da debuglarım gözükmedi sadece iki uyarı var bir tanesi
        beyaz ünlem olarak logcat—- beginning of main
        bir diğeri ise kırmızı ünlem olarak :
        AndroidjavaException: java.lang.classnotfoundexception: com.gooogle.android.gms.ads.mobileads
        java.lang.Class.classforname(native Method)
        jav.lang.class.forname(class.java.400) diye uzayan bir hata alıyorum.

        Yani kısacası bu hatayı alıyorum debuglarım gözükmüyor.

      • ali dedi ki:

        Ayrıca projemi internial olarak build alıyorum gradle olarak build alınca 2 error alıyorum ve apk oluşmuyor bununla bir ilgisi olabilir mi ?

      • yasirkula dedi ki:

        Yok bundan olacağını sanmıyorum. Admob’un kendi dokümantasyonunu okuduğumda yeni bir madde eklediklerini fark ettim, bir ihtimal ona takılıyor olabilirsiniz. Yazıdaki com.google.android.gms.ads.APPLICATION_ID’li adımı uygulamayı deneyin. Eğer olmazsa tekrar Resolve/Force Resolve yapmayı deneyin. SDK Manager’daki “Android SDK Manager”, “Android SDK Platform-tools”, “Android SDK Build-tools”, “Google Play services” ve “Android Support Repository”nin de kurulu ve güncel olduğundan emin olun.

      • ALİ dedi ki:

        Force resolve yapınca 2 hata alıyorum ve işlem başarılı olmuyor hocam

      • ALİ dedi ki:

        Yani aldığım hata force resolve yapınca resolve failed oluyor

      • yasirkula dedi ki:

        SDK Manager’da Google Play services ve Android Support Repository kurulu ve güncel olsun. Aksi taktirde gerçekten bir fikrim yok, ben şimdi son sürüm Admob ile denediğimde bu sıkıntıyı yaşamadım.

  10. ali dedi ki:

    Play Services Resolver-Android Resolver-Resolve hocam burayı bulamıyorum

    • yasirkula dedi ki:

      Build Settings’te Android seçili olması lazım. Eğer zaten öyleyse, sizin bulamadığınız şey Resolve butonu mu yoksa Play Services Resolver menüsü mü?

  11. Barış dedi ki:

    Ad Types‘da sizin dediğiniz gibi Display i yaptım interstitial reklamda ama şuanda o seçenekler görünmüyor önceden tıkladığım zaman display vs. seçenekler çıkıyordu şimdi direk Ad Types bile çıkmıyor, bunu nereden bulabilirim? Ayrıca da allow skip 5 olmasına rağmen geçme tuşu ekranda belirmiyor?

    • yasirkula dedi ki:

      Evet artık o seçenek kalkmış, maalesef bu konuda yapacak bir şey yok gibi. Eğer “Allow skip”in yanındaki kutucuk işaretli ise reklamı geçme tuşunun belirmesi lazım. Bu tuş, ekranın köşesinde yuvarlak ufak bir şekilde belirebilir; belki gözünüzden kaçmıştır?

  12. Levent dedi ki:

    İyi akşamlar Yasir bey
    Admob ‘ a üye olunduğunda bir pin gönderiyorlarmış . Bu gönderdikleri pin ödeme almak içinmi yoksa reklamların mağazadaki uygulamamızda çıkması içinmi . (Pin gelmeden reklamlar gösteril kazanç hesapta birikir ama pin olmadan kazancı kendi banka hesabımıza aktaramayız .)
    Eğer pin , ödeme alınabilmesi içinse , pin olmadan admob da kazancımız birikirmi ?
    Teşekkürler .

  13. Levent dedi ki:

    Yasir bey saygılar . Admob reklamları eklediğimiz uygulamayı Samsung Apps ‘a yüklüyebilirmiyiz .
    Admob um desteği varmı , Samsung reklam içeren oyunları kabul ediyor mu ? Bilgi ricasıyla . İyi çalışmalar .

  14. mehmet dedi ki:

    Gameobject true olduğunda geçiş reklamın çıkmasını istiyorum. Bunu nasıl yapabiliriz?

  15. Levent dedi ki:

    Yasir bey teşekkür ederiz tüm verdiğiniz bilgiler için sizin sayenizde birşeyler yapmaya çalışıyoruz . Bir sorum olacak yanıtlarsanız sevinirim . Baner reklamlarında 10 sn reklamı gösterip 120 sn reklamı nasıl gizlerim lütfen yardımcı olurmusunuz .

    • yasirkula dedi ki:

      Şuna benzer bir kod kullanabilirsiniz:

      void Start()
      {
      	StartCoroutine( BannerGosterGizle() );
      }
      
      IEnumerator BannerGosterGizle()
      {
      	while( true )
      	{
      		// Banner gösterme kodu buraya
      		
      		yield return new WaitForSecondsRealtime( 10 );
      		
      		// Banner gizleme kodu buraya
      		
      		yield return new WaitForSecondsRealtime( 120 );
      	}
      }
      
      • Levent dedi ki:

        Yasir bey cevap için teşekkürler ama bir türlü yapamadım .
        Hayırlı akşamlar .

  16. Onur dedi ki:

    hocam ben bu bannerı oyun açıldığı andan itibaren sürekli olarak gösterilmesini bir türlü sağlayamadım. daha doğrusu hiç bi reklam gösterilmiyor. 3 gündür uğraşıyorum fakat halledemedim. yardımcı olabilir misiniz.

  17. UĞUR dedi ki:

    hocam singleton code daki public değişkenler uygulama,reklam kimliği,… ınspector da görünmüyor.

    • yasirkula dedi ki:

      Scriptin adı ReklamScript olmalı ve script’i ilk sahnenizdeki boş bir objeye vermelisiniz. O boş objenin Inspector’unda bakarken değişkenler gözükecektir.

  18. salih dedi ki:

    Singleton prensipli kodu boş bir objede menüye attım. Sonra menüde ve levellerde olan kapalı bir paneldeki tuşa rewarded reklam izleme komutunu verdim.
    1) Sorun şu ki: Levellerde (can bitince) panel açılıp tuşa bastığımda uygulama kitleniyor. Oyunu yeniden açtığımda (can hali hazırda bitik olduğu için panel açık başlıyor) paneldeki tuşa bastığımda reklam geliyor.
    Singleton prensibini müzik için de kullanıyorum. Diğer levelleri oynarken müzik singletonu hiyerarşide DontDestroy olarak silinmeden gözüküyor. Ancak ReklamGöster scriptinin gameObjesi dont destroy olarak menü den sonra devam etmiyor.
    2)UnityADS entegrasyoununu bahsettiğiniz şekilde sorunsuz yaptım. UnityAds’da hali hazırda kullanıyordum scriptleri ve Service kısmı oyunda aktif. Komple onları kaldırıp service sekmesini kapalı konuma getirsem sorun olur mu?

    • yasirkula dedi ki:

      1) Eğer singleton scriptinin adını ReklamGöster yaptıysanız onu ReklamScript ile değiştirin. Aksi taktirde singleton objenin diğer sahnelere devam etmemesi için bir sebep göremiyorum gerçekten. Dilerseniz konsolu kontrol edip bir hata alıp almadığınıza da bakabilirsiniz. Uygulamanın kitlenmesi olayına ise daha önce rastlamamıştım, bunun için logcat ile oyunu debug etmeniz gerekebilir.

      2) Evet dediğiniz gibi Services’tan Unity Ads’i kapatın ve eski kodlarınızı silin/comment’leyin. Aksi taktirde Unity Ads mediation’ı doğru çalışmayabilir bile.

      • salih dedi ki:

        Öncelikle ilginiz için çok teşekkür ederim. ReklamScript’inin olduğu dosyanın devam etmeme sorununu verdiğim objeyi canvas’ın dışına çıkartarak çözdüm. Ancak ne yaptıysam oyunun kitlenip kapanmasının önüne geçemedim. Ancak mediation için import edilmesi gereken dosyaların importun hep kitlenme oluyordu. Yani import etme esnasında yeşil çizgi %10 ancak doluyor sonra devam etmiyordu. Belki sorun bundan kaynaklı olabilir. Projeyi kopyalayıp haricen denemeye devam edeceğim. Ayrıca denediğim yöntemler: -Projeyi komple reimport etmek.
        -Diğer reklamları komple kaldırıp denemek. -Test reklamlarını ve test rewarded video ID sini verip denemek. -Pluginleri komple silip yeniden import etmek.

        Sanırım şu anda yapmam gereken ilk şey; android cihaz üzerinde kullanılan UI konsolu ile hata takibi yapmak.

  19. Abdurrahim dedi ki:

    Abi benim uygulamamda test banner v.s leri ekleyince mobilden test bannerlar çıkıyor . Fakat benim kendi uygulama ve reklam kimliğini koyunca reklamlarım gözükmüyor neden ?

  20. Barış dedi ki:

    Yanlışınız olmasın, AdMob dan görünen rewarded ads gelirleri admob panelinde çıkıyor yani admob un geliri 0 demesi lazım tamamı unity ads de görünmesi lazım sizin demenize göre? Birde ben sadece usd almak istiyorum nasıl mediation dan admob u çıkarırım çünkü görünen admob reklamları admob üzerinden ödeniyor sadece admob dışındakiler unity ads sanırım?

    • Barış dedi ki:

      Sizin demenize göre mediation da admob reklamları gelirleri de unity ads dan alacağız ama öyle değil sanırım.

    • yasirkula dedi ki:

      Admob reklamları Admob tarafından, Unity Ads mediation’ı ile Unity Ads’ten çekilen reklamlar ise Unity Ads tarafından ödeniyor. Yani reklam hangi havuzdan çekildiyse ödemeyi o havuzun sahibi yapıyor. Sadece Unity Ads kullanmak istiyorsanız, Admob kullanmadan direkt Unity Ads’i projenize entegre edebilirsiniz; bunun için “unity ads quick start” şeklinde arama yapabilirsiniz.

  21. Ali Doğanay dedi ki:

    Hocam merhaba androind den build alırken klasik firma ismi ve proje ismi kısmını değiştirince düzelen hatayı alıyorum fakat ayarlardan düzeltmeme rağmen o kısmı hata gitmiyor ne önerirsiniz

  22. UĞUR dedi ki:

    hocam merhabalar ben unity de çok yeniyim.şimdi sizin verdiğiniz interstitial reklam için olan c# kodunda buttonu kod mu oluşturuyor yoksa bizim mi oluşturmamız gerekiyor(kendi oluşturuyorsa ekranda nerde oluşturuyor ?yerini biz ayarlayabiliyor muyuz?).ayrıca ben sonsuz bir oyun yapıyorum.oyuncu yandığında bu reklamın çıkmasını istiyorum.bunu nasıl yapabilirim?birde reklamın çıkma sıklığını nasıl kontrol edebilirim?2 kere mi yoksa 5 kere mi yandığında çıkıcak.ŞİMDİDEN TEŞEKKÜRLER HOCAM .

    • UĞUR dedi ki:

      hocam ayrıca oyuncu yandığında restart menüsü çıkıyor reklamı gösterecek buttona oyuncunun tıklaması mı gerekiyor yoksa reklam oto. olarak mı başlıyor?

    • yasirkula dedi ki:

      Reklamı istediğiniz zaman gösterebilirsiniz, bu bir butona basınca da olabilir veya oyun bitince de. Paylaştığım singleton reklam scriptini kullanırsanız, tek yapmanız gereken interstitial göstermek istediğiniz anda ReklamScript.InterstitialGoster(); fonksiyonunu çağırmak (mesela oyuncu yandığı anda). Bu işin 2 ölmede bir olmasını istiyorsanız, scriptinizde “static int olmeSayisi = 0;” şeklinde bir değişken tanımlayın ve bu değişkeni her ölümde 1 artırın. Reklam göstermeyi ise sadece if(olmeSayisi%2==0) ise, yani olmeSayisi değişkeni 2’ye tam bölünebiliyorsa gerçekleştirin.

      • UĞUR dedi ki:

        teşekkürler hocam,peki banner reklamın ekrandaki boyutunu nasıl ayarlayabiliriz?

      • yasirkula dedi ki:

        Şurada yazdığına göre, kodda BannerView objesi oluştururken banner’ın boyutunu ayarlayabiliyorsunuz (kendim denemedim, nasıl çalışır garanti veremiyorum): https://developers.google.com/admob/unity/banner#optional_custom_ad_sizes

        ReklamScript’i ilk sahneye (menü ise menüye) verin.

      • UĞUR dedi ki:

        hocam birde son olarak ta bu singleton script için ilk sahnede boş bir game objesi oluşturun demişsiniz.benim ilk sahnem menu oradamı yoksa level sahnesinde mi objeyi oluşturup scripti içine atayım?

      • burak öcül dedi ki:

        AdMob’un ödüllü videolarını kullanıyorum.Ancak oluşturduğum oyuncuya ödül ver fonksiyonunu video tamamen izlendikten sonra çağırdığımda nedense ödülü 3-4-5-6 kere felan veriyor..
        Örnek: altın değişkenini video izlenince 100 arttırıcaksam 0 ken 100 değilde 300-400-600 ve daha fazlası olabiliyor. Fonksiyonuma if ile bool değişkenlerle önlemde aldım ancak hiç bir fark olmadı. Çözüme yardımcı olanlara teşekkürler…
        Birde başka bir ödüllü videoyuda çağırıyorum isimleri ve değişkenleri farklı yapmama rağmen videolarda ödüllerde ortak oluyor :S

      • yasirkula dedi ki:

        RewardBasedVideoAd.OnAdRewarded bir event olduğu için, oraya eklediğiniz fonksiyonları siz elle silmedikçe o fonksiyon hep orada kalır. Örneğin “reklamObjesi.OnAdRewarded += OyuncuyuOdullendir;” yaptıysanız, ondan önce “reklamObjesi.OnAdRewarded -= OyuncuyuOdullendir;” yaparak OyuncuyuOdullendir fonksiyonundan OnAdRewarded’da 2 tane olmasını engellersiniz. Ödülü 3-4 kere vermesinin sebebi büyük ihtimalle ödül fonksiyonunun OnAdRewarded’a 3-4 kere eklenmiş olmasıdır.

        Benim tavsiyem, rewarded reklam için singleton reklam script’ini kullanın. O script’te bu tarz sıkıntılar yaşamazsınız.

  23. can dedi ki:

    Burda yazılanların tamamını yaptım lakin reklamlar gözükmüyor. Log ta hata yok. Uygulama mağazada. sadece banner kodunu eklersem çalışıyor ama reklamscript ‘teki tüm kodu koyup kullasam hiç reklam yok. reklam isteği yoktur belki diye admobun test adreslerini ekledim yine de gözükmedi. Nerede hata yapıyorum acaba?

    • yasirkula dedi ki:

      Biraz garip bir sıkıntı olmuş bu. Sade halde reklam kodunun çalıştığını ama ReklamScript’teki banner reklam kodunun çalışmadığını daha önce görmemiş/duymamıştım 😀 Eğer Android SDK’nızdaki ıvır zıvırlar güncel ve Admob SDK’nız da güncelse (SDK’yı tamamen silip yeniden import etmeyi de deneyebilirsiniz) logcat’te bir hata mesajı var mı diye bakmanızı öneririm.

  24. hüseyin dedi ki:

    Merhaba Yasir hocam derslerinizden yararlanarak böyle bir geçiş reklamı kodu ekledim bu kodu da bir butona atıyorum sizce doğru bir kod mu? ne eklenebilir? ne çıkarılabilir ? şimdiden teşekkürler.

    using UnityEngine;
    using System.Collections;
    using GoogleMobileAds.Api;

    public class admob : MonoBehaviour
    {
    InterstitialAd fulladmob;

    void Start()
    {
    RequestFull();
    }
    // Update is called once per frame
    void Update()
    {
    }
    void RequestFull()
    {
    string idFull = “ca-app-999999999999999999999999”;
    fulladmob = new InterstitialAd(idFull);
    AdRequest adRequest = new AdRequest.Builder().Build();
    fulladmob.LoadAd(adRequest);
    }
    public void ShowFullAds()
    {
    if (fulladmob.IsLoaded())
    {
    fulladmob.Show();
    RequestFull();
    }
    else
    {
    RequestFull();
    }
    }
    }

    • yasirkula dedi ki:

      Bence kodunuz doğru duruyor. Eğer kodu denerken bir sıkıntı yaşamadıysanız kullanabilirsiniz. Paylaştığım singleton reklam scriptinde bir takım ekstra ıvır zıvır olduğundan benim önerim onu kullanmanız yönünde ama dilerseniz kendi kodunuzu da kullanmaya devam edebilirsiniz 🙂

  25. Fatih dedi ki:

    Merhaba hocam, banner ve interstitial reklamları düzgün şekilde gösterebiliyorum. Ancak rewarded reklamlar için unity üzerinde dummy loglarda yüklendi mi fonksiyonunu “true” olarak alabiliyorum. Sanıyorum kodda bir sorun olmadığını referans gösteriyor.

    Dummy CreateRewardBasedVideoAd
    UnityEngine.Debug:Log(Object)
    Dummy IsLoaded
    UnityEngine.Debug:Log(Object)
    Dummy ShowRewardBasedVideoAd
    UnityEngine.Debug:Log(Object)

    Ancak genymotion üzerinde simule ettiğimde yüklendimi methodu “false” oluyor devamlı, neden olabilir? Aşağıda kısa bir kod öbeği mevcut.

    public void gainBoost(){
    hazirmi.text = ReklamScript.RewardedReklamHazirMi() ? “hazir” : “degil”;
    if(ReklamScript.RewardedReklamHazirMi())
    ReklamScript.RewardedReklamGoster(RewardedReklamGosterildi);
    }

    void RewardedReklamGosterildi(GoogleMobileAds.Api.Reward odul)
    {

    }

    Teşekkürler şimdiden.

    • Fatih dedi ki:

      Selamlar, sanırım genymotion kaynaklı bir sorun, gerçek cihazla deneme şansım oldu düzgün şekilde çalışıyor. Ellerinize sağlık çok faydalı olmuş, teşekkürler.

  26. metin dedi ki:

    unityde banner ve büyük banner reklamlarım gözüküyor ama ödüllü reklamlar gözükmüyor sadece test modunda gözüküyor neden olabilir?

    • yasirkula dedi ki:

      Alttaki yorumlarda da dediğim gibi, fillrate harici bir sıkıntı aklıma gelmiyor. Yine de logcat ile oyunu debug edip sorunu kesin olarak öğrenebilirsiniz.

      • metin dedi ki:

        no fill from server sıkıntısı aldım uygulamayı hoogle play deyayınladım bugün ve halen ödüllü reklam gelmiyoralternetif olarak şöyle düşündüm eğer ödüllü video yoksa o zaman nprmla videolu reklam höster dedim yine no fill from server hatası alıyorum nedir sebebi

      • yasirkula dedi ki:

        Normal videolu reklamdan kastınız interstitial reklam mı? Interstitial reklamda genelde no fill hatası almazsınız, ama kendim sadece videolu interstitial denemediğimden kesin bir şey de diyemiyorum. Dilerseniz şu dersten faydalanarak Admob reklamlarınıza Unity Ads mediation’ı eklemeyi deneyebilirsiniz: https://developers.google.com/admob/unity/mediation/unity

      • metin dedi ki:

        hocam medation nedir ne işe yarar

      • yasirkula dedi ki:

        Mediation vasıtasıyla birden çok reklam sağlayıcı firmanın reklam havuzuna erişim sağlayabilirsiniz. Yani mesela Admob’da rewarded video reklam yoksa ve siz Unity Ads için rewarded reklam mediation’ı yaptıysanız, Unity Ads’ten bir rewarded video reklam çekilmeye çalışılır. Ne kadar çok firmanın mediation entegrasyonunu yaparsanız, bir reklam istediğinizde ortak havuzda kullanıma hazır bir reklam bulunma şansı o kadar artar.

        Dipnot olarak ekleyeyim, yakında bu dersime rewarded reklamlar için Unity Ads mediation talimatları da eklemeyi planlıyorum çünkü özellikle rewarded reklamlarda Admob’un reklam havuzu kendi başına yetersiz duruyor (fillrate sorunu).

  27. Murat dedi ki:

    Merhaba, Öncelikli olarak paylaşımlarınızın çok faydalı olduğunu belirtmek ve teşekkür etmek isterim.

    Sorum şu, aşağıdaki bölüm bittiğinde aşağıdaki gibi reklam gösterip diğer level’e geçmek istiyorum ama reklamı açmadan oyundan atıyor. kodu kaldırırsam sorun düzeliyor. Nereden hata yapıyor olabilirim?

    public void BirSonrakiBolum()
    {
    ReklamYoneticisiKod.InsterstitialGoster();
    SceneManager.LoadScene(int.Parse(SceneManager.GetActiveScene().name) + 1);
    }

  28. Mehmet dedi ki:

    Merhaba hocam, sizin kodlarınızdan yararlanıp kendi rewardedVideo scriptimi oluşturdum, kodda bir sıkıntı yok ancak butona tıklandığında reklam gösteremiyorum. AdMob panelinde reklam isteği olarak düşüyor (anlık değil, her gün 10-15 artıyor) ancak oyunumda butona tıklamak hiçbir işe yaramıyormuş gibi gözüküyor.

    https://i.hizliresim.com/aYpba2.jpg

    • Mehmet dedi ki:

      Eklemeyi unutmuşum, emulatörde test reklamı alabiliyorum.

    • yasirkula dedi ki:

      Dediğiniz gibi, kodunuz doğru duruyor. Tahminimce fillrate hatası alıyorsunuzdur, yani reklam isteği yaptığınız esnada sunucuda gösterime hazır bir rewarded reklam yoktur. Herhalde reklam verenler Türkiye’de çok fazla rewarded reklam vermiyorlar. Daha emin olmak için oyununuzu logcat ile debug edebilirsiniz.

      • Mehmet dedi ki:

        Merhaba hocam, her şey için çok teşekkür ederim şu an herhangi bir sorunum yok reklam göstermeyle ilgili, ancak reklamlardan gelir sağlayamıyorum, bunun nedeni nedir sizce?

      • yasirkula dedi ki:

        Henüz reklamlarınıza yeterince tıklanmamış olabilir. Ya da belki istatistikler birkaç gün sonra kendiliğinden düzelecektir.

  29. Ali dedi ki:

    Uğraşınız için teşekkür ederim epey faydalandım. Singleton yöntemiyle rewarded reklamım için belirttiginiz test reklam kimliğini kullanarak “ca-app-pub-3940256099942544/5224354917” sorunsuzca test reklamını görüntüleyebiliyorum.

    Admob’un reklamlarımın aktif olduğunu mail ile bildirmesinin ardından denemek istedim ve uygulamama ait rewarded reklam kimliğimi kullandığımda reklam görüntüleyemiyorum ve şöyle bir çıktı(logcat) alıyorum:

    Starting ad request.
    Use AdRequest.Builder.addTestDevice(“cihaz id”) to get test ads on this device.
    App does not have the required permissions to get location-No fill from ad server.
    Failed to load ad: 3

    Kendi kimliklerimi tanımlayıp, test modunu aktifleştirip, test cihaz id’sini girip denediğimde ise yine görüntüleyemiyorum ve aşağıdaki çıktıyı alıyorum.

    Starting ad request.
    This request is sent from a test device.
    App does not have the required permissions to get location
    No fill from ad server.
    Failed to load ad: 3

    Herhangi bir öneriniz var mı acaba?

    • asa sas dedi ki:

      Kardeşim bu bende de oluyor. İnternetten araştırdım ve şunlara ulaştım;

      1) AdMob’da konum izni verdiyseniz uygulamaya konum izni vermeniz gerekiyor.
      2) Bu geçici bir arıza oyununuzu yayınladığınızda bu sorun ortadan kalkar.

      Bu ikisini de farklı kişiler söylüyor. İsterseniz ilkini deneyin. Ayriyeten hatayı Google’da aratırsanız daha çabuk cevaba ulaşırsınız 😀

      • Ali dedi ki:

        1. maddeyi android manifest içinde konum izini ekleyerek denedim fakat değişen bir durum olmadı.
        2. görüştüğüm biri de yayınlayınca düzeldiğini söyledi onu denemeyi düşünüyorum.

        Google da taramadığım konu kalmadı diyebilirim sanırım eyv 🙂

    • yasirkula dedi ki:

      “No fill from ad server” mesajı, reklam havuzunda gösterilecek reklam kalmadığını belirtiyor. Özellikle rewarded reklamlarda bunu ben de sıklıkla yaşıyorum. Bence reklamları ara ara tekrar test edin, belki sunucuda rewarded reklam olduğu bir ana denk gelirsiniz.

      • Ali dedi ki:

        Evet ama yaklaşık 15 gündür havuzda reklam bulamaması biraz garip bir durum. Sanıyorum ki appi yayınlayınca konum izinlerinden kaynaklı olarak çözülebilir, uygulamayı yayınlayınca bilgilendiririm.

  30. asa sas dedi ki:

    Abi Selamün Aleyküm muhtemelen biliyorsundur ama ben yinede söylemek istedim. son kodda 169-189 arası her satıra “//” koymuşsun bunun yerine 169. satırın başına “/*” bunu 189. satırın sonuna “*/” koyarsan arasını komple yorum satırı yapar. Umarım işine yarar 😀 ve bir de sanırım ödeme seçeneklerini seçmeyince reklam vermiyor doğrumuyum. İyi Çalışmalar 🙂

    • yasirkula dedi ki:

      Teşekkür ederim 🙂 /* ve */ comment’lerini artık kullanmıyorum çünkü örneğin 10. ve 20. satırlar arasını bu şekilde comment’ledikten sonra 5. ve 25. satırlar arasını da bu şekilde comment’lemek istersek, 5. satırın /*’ını 20. satırdaki */ kapatıyor ve 25. satırdaki */ hata veriyor. Visual Studio’da // şeklinde comment atmanın CTRL+K->CTRL+C gibi kısayolu da olduğu için // comment’leri atmak bayağı hızlı oluyor.

  31. alperen dedi ki:

    GoogleMobileAds kurarken penceredeki herşeyin seçili olması gerekiyor yazmışsınız ama kutucuklara tıklanmıyor sadece ” PlayServicesResolver ” e tıklanıyor o da tam olarak kurmadı hata verdi

    Resolution failed

    Failed to fetch the following dependencies:
    com.google.android.gms:play-services-ads:15.0.1

    UnityEngine.Debug:LogError(Object)
    Google.Logger:Log(String, LogLevel)
    GooglePlayServices.PlayServicesResolver:Log(String, LogLevel)
    GooglePlayServices.ResolverVer1_1:LogMissingDependenciesError(List`1)
    GooglePlayServices.c__AnonStorey17:m__2A(List`1)
    GooglePlayServices.c__AnonStorey13:m__23(Result)
    GooglePlayServices.c__AnonStorey14:m__2C()
    Google.RunOnMainThread:ExecuteNext()
    Google.RunOnMainThread:ExecuteAll()
    Google.RunOnMainThread:Run(Action, Boolean)
    GooglePlayServices.c__AnonStorey13:m__24(Result)
    GooglePlayServices.c__AnonStorey13:m__25(Result)
    GooglePlayServices.ProgressReporter:SignalComplete()
    GooglePlayServices.ProgressReporter:Update(CommandLineDialog)
    GooglePlayServices.CommandLineDialog:Update()
    UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

    • yasirkula dedi ki:

      SDK Manager’da “Google Play services”ın son sürüm olduğundan emin olun. İlaveten, dilerseniz “Android Support Library”i kurmayı da deneyebilirsiniz. Android’in son birkaç sürümü kurulu değilse onları da kurun.

      Bu arada, Import penceresindeki seçilemeyen asset’ler, projenizde zaten var olan veya içeriği değişmemiş olan asset’lerdir. Onları işaretleyememeniz normal 🙂

  32. Mert dedi ki:

    NullReferenceException: Object reference not set to an instance of an object
    ReklamScript.InterstitialReklamYukle () (at Assets/Scripts/ReklamScript.cs:100)
    ReklamScript.Awake () (at Assets/Scripts/ReklamScript.cs:50)

    • yasirkula dedi ki:

      ReklamScript’in en güncel versiyonunda 50. satırda Destroy(this); satırı var; bu satır NullReferenceException vermeyeceği için 50. ve 100. satırlarda hangi kodun yazdığını bilmem lazım. Bu arada scripti oyunun ilk sahnesindeki boş bir objeye vermeyi unutmayın.

  33. can dedi ki:

    Merhaba, ödüllü video izlendikten sonra bir panelimin açılmasını istiyorum aşağıdaki gibi denedim fakat olmadı, bunu nasıl yapabilirim?

    private void OyuncuyuOdullendir(object sender, Reward odul)
    {
    Debug.Log(“Ödül türü: ” + odul.Type);
    altin += (int)odul.Amount;
    kazanmapanels.SetActive(true);

    Time.timeScale = 0;
    }
    }

    • yasirkula dedi ki:

      Eğer Time.timeScale satırını silince hâlâ çalışmıyorsa açıkçası sebebini bilemiyorum. Konsolda hata var mı diye bakabilirsiniz.

      • can dedi ki:

        hata yok tşme scale silincede çıkmadı, peki şu şekilde nasıl yapabilirim altın 10 olunca o panel çıksın dedim altında video başarıyla tamamlanınca gelecek zaten, altın 10olunca çıkma kodunu halleltim fakat ödüllü video izlenince 10 altın gelmesini nasıl yapabilirim.

        Bunun kodu hangisi bunu bana altin isimli ödüle göre yazabilirmisiniz, birde admob panelinde ödülün adını altinmi girmem gerek.

      • yasirkula dedi ki:

        İkinci paylaştığım reklam scriptindeki “reklamObjesi.OnAdRewarded” olayını yapmanız lazım (singleton scripti kullanıyorsanız ondaki ödüllü reklam kodunun nasıl kullanılacağına dair örnek script zaten sonda mevcut). Ödüle bir isim vermenize gerek yok, ben odul.Type’ın var olduğunu bilin diye oraya onu koydum ama çoğu zaman o değişkeni kullanmanıza gerek olmaz.

  34. volkan dedi ki:

    Süleyman Abim Kolay Gelsinde Bu Kendi Uygulamımıza Senin Yaptığın Reklam Eklemeyi Yapsak Ve Kendimiz Vpn İle Reklamlara Tıklasak Ban Yermi Admob Yada Adsense ?

  35. can dedi ki:

    merhaba bir top denge oyunum var ve oyunun içindeyken reklam çıkıp reklamı kapattıktan sonra yanmaya neden oluyor reklam çıkınca bir panelimin aktif olmasını istiyorum bu panelimde oyunu devam ettirme butonu var.

    • yasirkula dedi ki:

      InterstitialAd objesinin OnAdOpening event’ine tıpkı OnAdClosed’da olduğu gibi kaydolup, orada panelinizi aktif edebilirsiniz. Bu event’in diğer reklam türlerinde de karşılığı vardır.

  36. Yiğit dedi ki:

    Selam reklamı ekledim fakat oyunlarda olan remove ads butonu eklemek istiyorum fakat bunu google playe bağlayamadım nasıl yapabilirim.
    Şimdilik butona tıklandığı zaman kodları attığım gameobject false oluyor para ile ilgili bir şey gelmiyor .

    • yasirkula dedi ki:

      Remove ads butonu ile etkileşimi in-app purchase ile yapmanız lazım ama IAP konusunda benim maalesef bilgim yok. Eğer IAP sistemi, remove ads ürününün satın alındığını döndürüyorsa reklam kodlarınızı çalıştırmamalısınız.

  37. ekremmay42 dedi ki:

    Bu kodda nerde hata varda reklam çıktıktan sonra ödül vermiyor ben 2 hak daha kazanma sansı vermek istiyorum oyuncuya reklamı izledikten sonra

    using UnityEngine;
    using System.Collections;
    using GoogleMobileAds.Api;

    public class reklamdersi : MonoBehaviour
    {
    public void Reklamac()
    {
    RewardBasedVideoAd reklamObjesi = RewardBasedVideoAd.Instance;

    AdRequest reklamiAl = new AdRequest.Builder().Build();
    reklamObjesi.LoadAd(reklamiAl, “”);

    StartCoroutine(ReklamiGoster());
    }
    /*
    void OnGUI()
    {
    {
    RewardBasedVideoAd reklamObjesi = RewardBasedVideoAd.Instance;

    AdRequest reklamiAl = new AdRequest.Builder().Build();
    reklamObjesi.LoadAd(reklamiAl, “”);

    StartCoroutine(ReklamiGoster());
    }
    }
    */
    IEnumerator ReklamiGoster()
    {
    while (!RewardBasedVideoAd.Instance.IsLoaded())
    yield return null;

    RewardBasedVideoAd.Instance.Show();
    }
    }

    • yasirkula dedi ki:

      Oyuncuya ödül verebilmek için RewardBasedVideoAd objesinin OnAdRewarded’ını kullanmanız lazım. İkinci paylaştığım rewarded reklam kodunda, “OyuncuyuOdullendir(object sender, Reward odul)” fonksiyonu vasıtasıyla kullanıcı ödüllendirilmekte. O kodu inceleyebilirsiniz.

  38. ekremmay42 dedi ki:

    gelişmişteki Interstitial Reklamları yaptıgım zaman cok sık reklam gelıyor ve düz Interstitial Reklamları yaptıgım zaman reklam gelmıyor cok sık gelen reklamları sadece bir kere gelmesi için ne yapmam gerekır

    • yasirkula dedi ki:

      Reklam göstermek için şuna benzer bir kod kullanabilirsiniz:

      public float reklamsizHavaSahasi = 30f;
      private float sonrakiReklamGosterimAni = 0f;
      
      void ReklamGoster()
      {
      	if( Time.realtimeSinceStartup >= sonrakiReklamGosterimAni )
      	{
      		ReklamScript.InterstitialGoster();
      		sonrakiReklamGosterimAni = Time.realtimeSinceStartup + reklamsizHavaSahasi;
      	}
      }
      

      Bu script ile, iki reklam arasında minimum 30 saniye beklenir.

  39. ekremmay42 dedi ki:

    iyi günler konu reklamla alakalı değil ama kusura bakmayın buraya yazıyorum
    konu oyun çalışmıyor iken menüler türkçe oyun çalıştıktan sonra ingilizce oluyor bunun nedeni nedir nasıl düzeltebilirim

    • yasirkula dedi ki:

      Projenizde yerelleştirme (localization) sistemi varsa ve cihazınızın kullanıcı arayüzünün dili İngilizce ise, sistem yazıları bu dile çeviriyor olabilir.

      • ekremmay42 dedi ki:

        teşekurler bide videolu reklam koydum reklam acılıyor fakat 2 hak vermesi gerekiyor oyunda ama 2 hak vemiyor neden olabılır acaba

      • yasirkula dedi ki:

        Eğer hiç hak vermiyorsa hak verme fonksiyonunuz çalışmıyor demektir. Bu durumda oyununuzu debug edip bir hata alıyor musunuz kontrol edin. Her ihtimale karşı kodunuzu da tekrar kontrol edin.

  40. cihatkokcu dedi ki:

    Script’i uzun zamandır kullanıyorum gerçekten faydalı bi script. ödüllü reklamda videoyu bitirmeden kapatıldığında herhangi bir işlem yapma imkanı sağlanmadığını farkettim. kendime göre düzenleyip ben işimi hallettim ama scripte bunuda eklersen diğer arkadaşlarında işini görücektir.

  41. meosenturc dedi ki:

    Ustam selamlar,

    Son yayınladığın scripti eklemeyi başardım, ancak “ReklamScript.BannerGoster();” kodunu scene’de nereye ekleyeceğimiz anlamadım.

    “Scriptin kullanımı oldukça basit: banner reklamı göstermek için ReklamScript.BannerGoster(); fonksiyonunu, banner reklamı gizlemek için ise ReklamScript.BannerGizle(); fonksiyonunu kullanabilirsiniz.”

    bu kısımda bi eksiğim var, son olarak oyuna eklemeyi yapamıyorum henüz Unity’de.. Özetle Welcome ekranında bir GameObject oluşturup scripti ekliyor ve admob bilgilerini giriyorum ancak ekranda halen banner gösterecek bir kod giremedim.

    • yasirkula dedi ki:

      ReklamScript fonksiyonlarını istediğiniz yerde çağırabilirsiniz. Örneğin bir sahne başlayınca banner gözüksün istiyorsanız, sahnedeki bir objenin Start fonksiyonuna ReklamScript.BannerGoster(); ekleyebilirsiniz. Veya oyun pause olunca göstermek istiyorsanız, pause butonuna tıklayınca çalışan fonksiyonun içine yazabilirsiniz.

  42. Ragıp dedi ki:

    Merhaba, öncelikle yazılarınız için teşekkürler. Fazla uzatmadan soruma geçeyim;
    Ben Interstitial reklamları Admob hesabında sadece video olarak seçtim. Yani 5 saniyelik video gösterimi ve sonrasında da kullanıcı çıkacak. Fakat reklam gösterilmeye başladığında, hemen back butonuna basılırsa sürenin bitmesini beklemeden reklamdan çıkılıyor. İnternette baya bir arama yaptım. Bir kaç kişide aynı sorunu yazmış ama cevap bulamadım. Bu sorunu çözmenin bir yolu varmı acaba?

  43. Ahmet dedi ki:

    Merhaba hocam uygulama içi satın alma be alış veriş bölümü nasıl yapabilirim vereceğiniz değerli düşünce ve önerileriniz için şimdiden çok teşekkürler

    • yasirkula dedi ki:

      Bu konuda benim maalesef hiç tecrübem olmadı. Yalnız Unity’nin in-app purchasing (Unity IAP) eklentisini sürekli duydum. Daha detaylı bilgi alabilmek için “unity oyun içi satın alma” şeklinde arama yapmanızı öneririm.

      • Ahmet dedi ki:

        Merhabalar hocam cevabınız için teşekkürler size birşey danışmak istiyorum oyun yaptım reklam yaptım başka şekil ama şöyle sorun var bende oyun ilk başlangıçta geçiş reklamı çıkıyor ama sonra çıkmıyor örnek ben şöyle yapmak istiyorum oyundan 5 defa ölümden sonra otomatik yada oyun a başla veya yenileme tuşuna bastığı gibi reklam çıksın şeklinde nasıl yapabilirim şimdiden değerli düşünce ve önerileriniz için teşekkürler

      • yasirkula dedi ki:

        Interstitial reklamın OnAdClosed’unu kullanan koddan veya singleton reklam scriptinden faydalanırsanız reklamların tekrar çıkmaması sorunu olmaması lazım. Eğer singleton scripti kullanırsanız, ne zaman reklam çıkmasını istiyorsanız o zaman ReklamScript.InterstitialGoster(); fonksiyonunu çağırmanız yeterli. Bu kodu bir butona basınca veya art arda 5 kere ölünce çağırabilirsiniz. Kaç kere öldüğünüzü tutmak için static bir int değişkenden faydalanabilirsiniz.

  44. asy537 dedi ki:

    Gelişmiş özellikler rewarded kullandım. reklamObjesi.OnAdRewarded -= OyuncuyuOdullendir; bu kod scene geçişinden önceye koyunca hata veriyor.

    • yasirkula dedi ki:

      Eğer scene’den önce koymadan test edince hâlâ sıkıntı çıkıyorsa singleton scripti deneyebilirsiniz.

      • asy537 dedi ki:

        singleton reklamı yaptım oldu ödülü şu komutla mı vereceğiz.
        private void RewardedVideoOdullendir(object sender, Reward odul)
        {
        if (odulDelegate != null)
        odulDelegate(odul);
        StartSetting.Altın += (int)odul.Amount;
        }
        }

      • yasirkula dedi ki:

        public void RewardedReklamGoster()
        {
        ReklamScript.RewardedReklamGoster( RewardedReklamGosterildi );
        }

        void RewardedReklamGosterildi( GoogleMobileAds.Api.Reward odul )
        {
        StartSetting.Altın += (int)odul.Amount;
        }

  45. asy537 dedi ki:

    using UnityEngine;
    using System;
    using GoogleMobileAds.Api;

    public class ReklamRewardedVideo : MonoBehaviour
    {
    private int altin = 0;

    void Start()
    {
    MobileAds.Initialize( “UYGULAMA KİMLİĞİ” );
    YeniReklamAl( null, null );

    RewardBasedVideoAd reklamObjesi = RewardBasedVideoAd.Instance;
    reklamObjesi.OnAdClosed -= YeniReklamAl;
    reklamObjesi.OnAdClosed += YeniReklamAl; // Kullanıcı reklamı kapattıktan sonra çağrılır
    reklamObjesi.OnAdRewarded -= OyuncuyuOdullendir;
    reklamObjesi.OnAdRewarded += OyuncuyuOdullendir; // Kullanıcı reklamı tamamen izledikten sonra çağrılır
    }

    void OnGUI()
    {
    GUI.Label( new Rect( 0, 0, 500, 150 ), altin + ” altının var!” );

    // Butonu sadece reklam tamamen yüklenmişse (IsLoaded() true ise) tıklanabilir yap
    GUI.enabled = RewardBasedVideoAd.Instance.IsLoaded();

    if( GUI.Button( new Rect( Screen.width / 2 – 150, 0, 300, 300 ), “Reklamı Göster” ) )
    {
    RewardBasedVideoAd.Instance.Show();
    }

    GUI.enabled = true;
    }

    public void YeniReklamAl( object sender, EventArgs args )
    {
    RewardBasedVideoAd reklamObjesi = RewardBasedVideoAd.Instance;

    AdRequest reklamIstegi = new AdRequest.Builder().Build();
    reklamObjesi.LoadAd( reklamIstegi, “REKLAM KİMLİĞİ” );
    }

    private void OyuncuyuOdullendir( object sender, Reward odul )
    {
    Debug.Log( “Ödül türü: ” + odul.Type );
    altin += (int) odul.Amount;
    }
    }
    Bu kodu kullanıyorum. Diğer scene geçmeden önce reklamObjesi.OnAdRewarded-=OyuncuyuOdullendir; yazınca Object reference not set to an instance of an object bu hatayı veriyor.

  46. asy537 dedi ki:

    Merhaba rewarded reklamlarla ilgili bir sorum olacaktı ben reklamı sorunsuz çalıştırıyorum ödülü de veriyor ama benim oyunumda her bölüm geçtiğinde scene tekrar başlatıyor. 10 bölüm geçip reward reklama tıkladığında 10 kat fazla ödül veriyor yardımcı olabilir misiniz

    • yasirkula dedi ki:

      reklamObjesi.OnAdRewarded += OyuncuyuOdullendir; yapıyorsanız o satırdan önce reklamObjesi.OnAdRewarded -= OyuncuyuOdullendir;’de yapın. Büyük olasılıkla her scene başlangıcında OnAdRewarded event’ine tekrar kaydoluyorsunuz ve bu yüzden OyuncuyuOdullendir fonksiyonu birden çok kez çağrılıyor.

      İşinizi daha garantiye almak için, diğer scene’e geçmeden önce de reklamObjesi.OnAdRewarded -= OyuncuyuOdullendir; yapabilirsiniz.

      NOT: Singleton reklam scripti bu sorunu otomatik olarak hallettiği için onda böyle bir sıkıntı olmaması lazım.

  47. kenan dedi ki:

    Merhaba Yasir Bey;
    3 sorum var.

    1-Banner reklamda top right ve top left fonksiyonları çalışmıyor. Her iki durumda da reklamı ortada gösteriyor. Reklam yerini insp.da seçiyorum. Sorun ne olabilir?

    2-Banner reklamı sahne geçişlerinde gizlemiyorum.Gizlemek gerekli mi sizce. Yani oyunu başlattıktan sonra kapatana kadar Banner reklam gösteriliyor. Zararı var mıdır?

    3-Rewarded reklamın gelir oranı banner ve intersitiale göre çok çok düşük. Script kaynaklı bir sebep olabilir mi? Normalde rewarded reklam geliri en fazla olan olması gerekmez mi?

    Teşekkürler…

    • yasirkula dedi ki:

      1- Ben dersi yazarken hatırladığım kadarıyla sadece Top ve Bottom seçenekleri vardı; Top Right veya Top Left’i deneme şansım olmadı ama bir sıkıntı varsa da büyük ihtimalle bu Admob’un bir bug’ıdır çünkü ReklamScript’in reklamın konumunu bu şekilde etkilememesi lazım. Google’da bu konuda arama yapmaya çalıştığımda bir sonuç da alamadım :/

      2- Bence de banner’ı geçişlerde gizlemenize gerek yok.

      3- Evet rewarded reklam gelirinin daha fazla olması beklenir. Belki hedef kitlenizin olduğu ülkelerde rewarded reklam havuzu çok kısıtlıdır ve bu yüzden reklam isteklerinin çoğu karşılanamıyordur. Script kaynaklı bir şey olacağını sanmıyorum; zaten Admob’la etkileşime geçmek için kullandığımız fonksiyonların sayısı bir elin parmağını geçmiyor ve bu fonksiyonlar da genellikle ReklamGoster gibi çok spesifik fonksiyonlar. Yani Admob’u kurcalayıp bozabileceğimiz pek bir fonksiyon yok zaten.

  48. MEHMET dedi ki:

    Merhaba ReklamScript.BannerGoster(); ve gizleyi butonlara nasıl verebiliriz?

    • MEHMET dedi ki:

      Diğer kodlardan bu şekilde çekim yapılıyor ama bu kodu on click alanından reklam göstermeyi çağırmak istiyorum ama o alan bomboş olduğundan butondan çağıramıyorum. Amacım level sayfasına girip leveli seçtiğinde banner gözüksün sonrada ana sayfa butonuna bastığında reklam kalksın yeni level seçince yeni reklam gelsin.

    • yasirkula dedi ki:

      BannerGoster static bir fonksiyon olduğu için On Click’te gözükmüyor olabilir. Sorunu çözmenin en kolay yolu, yeni bir script oluşturup onun içerisindeki bir fonksiyondan BannerGoster’i çağırmak ve On Click’e de bu script’i vermek.

      • MEHMET dedi ki:

        Göstermeyi başardım 🙂 Bu seferki sorunum şu level sayfasından leveli seçtiğinde banner çıkıyor oyunu oyunuyor level sayfasına dönme butonuna ve leveli yenileme butonunada reklamı gizleyi koydum ama herhangi bir değişiklik olmadı ilk hangi reklam çıktıysa oyundan çıkana kadar o gözüküyor.

        Benim amacım ise oyuna girdi leveli seçti reklam çıktı level sayfasına dönme butonuna bastığında ilk reklam gizlensin sonra tekrar level seçince başka banner gelsin. Bu kodlarla dediğim şeyi yapmam mümkün mü mümkünse nasıl

      • yasirkula dedi ki:

        ReklamScript’e şu fonksiyonu ekleyip ardından örneğin level sayfasına dönme butonuna basınca çağırmayı deneyebilirsiniz:

        public static void YeniBannerReklamYukle()
        {
        if( bannerReklam != null )
        bannerReklam.Destroy();

        BannerReklamYukle();
        }

  49. MEHMET dedi ki:

    Singleton Reklam Scripti (Son Güncelleme 16.09.2017) olayını yaptım, ana menüdeki levellerden birisini seçince level açılıp reklam çıkıyor ama 1 kez oluyor bu olay. Ana menüye dönüp başka bir level seçtiğimde çıkmıyor, sorun işlemi başa sardırmakta ama bunu nasıl yapabiliriz?

    • yasirkula dedi ki:

      Script reset gerektirmiyor aslında; ne zaman reklam gösterme fonksiyonu çağırırsanız o zaman reklam gözükmesi lazım. Belki Update fonksiyonunda sürekli reklam çağırıyorsunuzdur ve bu yüzden yeni bir reklam yüklenemeden iptal oluyordur. Yazıda bahsettiğim “adb logcat -s Ads” komutu ile bir hata alıp almadığınızı kontrol etmenizi öneririm.

  50. emre dedi ki:

    şuan reklam ekleyebileceğim güncel içerik varmı bildiğiniz.

  51. Cem Özdemir dedi ki:

    iyi günler reklam kod kısmının görünümünü aşagıya koyuyorum
    benim problemim kullanıcı reklamı izlesede çarpıya basıp cıksada ödülü vermiş oluyorum

    • yasirkula dedi ki:

      Rewarded reklamlarda ödül vermek için en baştaki kodu değil de ikinci kodu (içinde “OyuncuyuOdullendir( object sender, Reward odul )” fonksiyonu bulunan) kullanın. Ödülü de OyuncuyuOdullendir fonksiyonunun içinde verin.

      Reklam id’niz başkaları tarafından kullanılıp hesabınıza zarar gelmesin diye paylaştığınız resmi kaldırdım.

  52. Safak Gizli dedi ki:

    Merhaba,

    Singleton scriptinizle Rewarded Test reklamını ve arkasından gelen ödülü başarılı bir şekilde çalıştırabiliyorum ancak kendi rewarded admob reklam id’mi girdiğimde reklam açılmıyor sorun nedir sizce reklamı yeni de oluşturmadım 😦

  53. kenan dedi ki:

    Merhaba Yasir Bey;
    Scriptinizi Banner ve Intersitial reklamlarda sorunsuz bir şekilde çalıştırdım. Ancak Rewarded Reklamlar için önceki yorumlarda bulunan fonksiyonun benzerini ekledim.(UI butonda On Click fonksiyonuna tanımlamak üzere) ancak sürekli hata aldım. Eklediğim fonksiyon aşağıda yardımcı olabilirseniz sevinirim..

    public void RewardedReklamFonksiyonu()
    {
    RewardedReklamGoster( ( sender, odul ) => //Unexpected symbol `,’, expecting `)’
    {
    GameManager.Instance.SavedStars += odul;
    SoundManager.PlaySfx(soundReward);
    } ); //Unexpected symbol `)’ in class, struct, or interface member declaration
    } //Unexpected symbol `}

    • yasirkula dedi ki:

      Şöyle yapmayı deneyebilirsiniz:

      ReklamScript.RewardedReklamGoster( ( odul ) =>
      {
      GameManager.Instance.SavedStars += odul;
      SoundManager.PlaySfx(soundReward);
      } );

      • kenan dedi ki:

        Yasir Bey Sorunu hallettim. Satın aldığım oyundaki reklamlarda bile sorun yaşadım. Sizin script ile her 3 reklam türünü de çalıştırdı. İyi ki varsınız:))

        Sormak istediğim birkaç husus;

        1-Banner ve Intersitial Reklamlarda büyük oranda app yükleme reklamları çıkıyor.(Hangi reklamın çıkacağını Admob kendisi ayarlıyor sanırım) Bu uygulamaları yükleyince mi yoksa tıklanıp store sayfası açılınca mı para kazanılıyor?

        2-İntersitial reklamı pause modunda çağırdım. Reklam geliyor ancak iptal edince sürekli yenisi geliyor. Bu durum oyuncu açısından biraz sıkıcı diye düşünüyorum. bu normal mi? (Normalse Çözüm olarak zamanlayıcı kullanılabilir sanki?)

        Teşekkür ederim..

      • yasirkula dedi ki:

        Admob tıklama başına para veriyor gibi duruyor; yani uygulamanın yüklenmesine gerek yok (kaynak: https://stackoverflow.com/questions/31947763/does-admob-pay-for-imressions-or-only-for-clicks).

        Interstitial reklamın sürekli çıkması normal değil. Eğer Update kodunuzda “if( paused ) ReklamGoster();” gibi bir şey varsa o kodu silip sadece kullanıcı pause tuşuna basınca tek sefere mahsus ReklamGoster() fonksiyonunu çağırmalısınız.

  54. mehti dedi ki:

    Ben ektra olarak her saatte bir süresi dolan reklam butonu eklemek istiyorum , yani her saatte bir bir kez tıklanıp reklam verecek böyelelikle extra yıldız vercek , 1kez izlendikten sonra saat 1 saaatlik geri sayım yapacak daha sonra tekrar aktif olacak , Bunu nasıl yapabilirim . Bunun dersi varmı link atarmısın

    • yasirkula dedi ki:

      ReklamSayac isminde C# scripti oluşturup oyununuzun ilk sahnesindeki boş bir objeye component olarak verin:

      using UnityEngine;
      using System;
      using System.Globalization;
      
      public class ReklamSayac : MonoBehaviour
      {
      	private static ReklamSayac instance = null;
      	
      	public float sayac = 3600f; // 3600 saniye = 1 saat
      	private float gecenSure;
      	
      	public static float KalanSure { get { return Mathf.Max( 0f, instance.sayac - instance.gecenSure ); } }
      	
      	void Awake()
      	{
      		if( instance == null )
      		{
      			instance = this;
      			DontDestroyOnLoad( this );
      		}
      		else if( this != instance )
      		{
      			Destroy( this );
      			return;
      		}
      		
      		DateTime sonKayitliZaman;
      		if( PlayerPrefs.HasKey( "ReklamSayac" ) &&
      			DateTime.TryParse( PlayerPrefs.GetString( "ReklamSayac" ), CultureInfo.InvariantCulture, DateTimeStyles.None, out sonKayitliZaman ) )
      		{
      			float gecenSaniye = (float) ( DateTime.UtcNow - sonKayitliZaman ).TotalSeconds;
      			gecenSure = Mathf.Min( gecenSaniye, sayac );
      		}
      		else
      			gecenSure = sayac;
      	}
      	
      	void Update()
      	{
      		gecenSure += Time.unscaledDeltaTime;
      	}
      	
      	public static void Resetle()
      	{
      		instance.gecenSure = 0f;
      		
      		PlayerPrefs.SetString( "ReklamSayac", DateTime.UtcNow.ToString( CultureInfo.InvariantCulture ) );
      		PlayerPrefs.Save();
      	}
      }
      

      Artık kodlarınızdan ReklamSayac.KalanSure değişkenine erişerek 1 saatin dolmasına kaç saniye kaldığını öğrenebilirsiniz. Eğer bu değişkenin değeri 0 ise 1 saat dolmuş demektir. Reklam izledikten sonra 1 saatlik geri sayımı başlatmak için de ReklamSayac.Resetle(); fonksiyonunu çağırabilirsiniz.

  55. PoeWang dedi ki:

    Merhaba
    No fill from ad server
    hatası sunucuda odullü reklam yok demektir değil mi ? Yanlış mı biliyorum yoksa ?
    Birde
    Odullü video butonunu video yuklu değilse nasıl gorunmez kılabiliriz
    RewardedVideoGoster fonksiyonu icindeki bu kısmı
    RewardBasedVideoAd rewardedReklam = RewardBasedVideoAd.Instance;
    if (rewardedReklam.IsLoaded())
    {
    rewardedVideoButton.gameObject.SetActive(false);
    Debug.Log(“odullü video yukluyse gosterildi”);
    rewardedReklam.Show();
    }
    else
    {
    Debug.Log(“odullü video yuklu degil yuklemeye calisiyoruz”);
    RewardedReklamGosterCoroutine();
    }
    bu sekilde değiştirdim ama alttaki corutine fonksiyonu hiç baslamıyor.
    private static IEnumerator RewardedReklamGosterCoroutine()
    {
    int i = 1;
    Debug.Log(“yuklemeye basliyoruz”);
    RewardBasedVideoAd rewardedReklam = RewardBasedVideoAd.Instance;
    Debug.Log(“yuklemeye icin degisken atandi”);
    while (!rewardedReklam.IsLoaded())
    {
    RewardedReklamAl();
    Debug.Log(“Yukleme isteği ” + i + “. kez yapildi”);
    i++;
    yield return new WaitForSeconds(3);
    }
    rewardedVideoButton.gameObject.SetActive(true);

    rewardedReklam.Show();
    }
    Son gözüken debug

    Debug.Log(“odullü video yuklu degil yuklemeye calisiyoruz”);
    işte bu satır

    • yasirkula dedi ki:

      No fill dediğiniz gibi sunucuda reklam olmadığı anlamına geliyor.

      Coroutine çalıştırmak için StartCoroutine(RewardedReklamGosterCoroutine()); yapmanız lazım. Ancak 3 saniyede bir rewarded reklam isteme kısmındaki 3 saniyeyi artırmanızı öneririm, rewarded reklamlar video formatında olduğu için indirilmeleri daha uzun sürebilir.

  56. Mustafa dedi ki:

    Merhaba … Interstitial (Tam ekran) Reklamlar scriptini kamera içerisine atıp build ettim. Sorunsuz apk aldım. Cihazda denediğimde butona basıldığında herhangi bir reklam göstermeden otomatik olarak uygulama kapatılıyor. Sorun ne olabilir ? Teşekkürler ..

    • yasirkula dedi ki:

      JDK 7 kullanıyorsanız JDK 8 kurmayı veya JDK 8 kullanıyorsanız JDK 7 kurmayı deneyebilirsiniz. SDK Manager’da da gerekli şeylerin güncel olduğundan emin olun. İlaveten, sahnenizde reklam göstermeye yarayan sadece bir tane obje olduğundan da emin olun; belki aynı anda birden çok interstitial reklam gösterince de uygulama kapanıyordur.

  57. caner dedi ki:

    hocam merhabalar;
    singleton reklamı ekledim ve dediğinizi harfiyen yaptım. Geçiş reklamlarında bir sorun yok ama banner reklamda test aşamasında sorunsuz çıkıyor ama 3 farklı admob hesabından (eski ve aktif olanlar ve yeni id ler) banner id ler vermeme rağmen çıkmıyor. Console da bir sorun da görünmüyor. Ekranda test reklamı ve gerçek reklamda da aynı bilgi çıkıyor.

    Yardımcı olursanız çok sevinirim.

  58. Mucahit dedi ki:

    Abi benim söyle bi sorum olucaktı normalde ben odullu reklamları kullanmıyorum oyuncu engele çarptıgı zaman geçis reklamı gelir sonra game over paneli geliyor ama suan eger engele çarparsa önce odullu reklamı acıp acmak istemediğini sorsun eger butona basarsa acılsın ve geçis reklam gorulmeden direk game over paneli açılsın eger ki odullu reklamı açmak istemezse geçis reklam gelsin menu scriptimde bunu ayarladım ilk önce odullu reklam butonu geliyor basarsa reklam acılıyo ama kapmak butonuna basıp basmadğını baska bi script dosyasında nasıl anlayabilirim public static bool denedim kapat butonuna basarsa true yaptım ama baska scriptte if(basıldımı==true){} yaptığımda okumuyo kodu

    umarım anlatabilmişimdir 😀

    • yasirkula dedi ki:

      Rewarded reklamın izlenip izlenmediğini şuna benzer bir şekilde tespit edebilirsiniz:

      public static bool izlendimi = false;
      
      void Awake()
      {
      	izlendimi = false;
      }
      
      public void ReklamGoster()
      {
      	if( ReklamScript.RewardedReklamHazirMi() )
      		ReklamScript.RewardedReklamGoster( RewardedReklamGosterildi );
      }
      
      void RewardedReklamGosterildi( GoogleMobileAds.Api.Reward odul )
      {
      	izlendimi = true;
      }
      

      Eğer ScriptinAdi.izlendimi == true ise rewarded reklam izlenmiştir, yoksa ya rewarded butonuna hiç tıklanmamıştır ya da rewarded reklam bitmeden kapatılmıştır.

      • Mucahit dedi ki:

        Eyvallah abi sağolasın

      • Mucahit dedi ki:

        Abi public static bool yazdığımız zaman sacma bi sekilde inspector panelinde bool gorunmuyo ve kontrol etmiyo

      • yasirkula dedi ki:

        static değişkenler Inspector’da gözükmüyor. Ancak bu değişkenin değerini Inspector’dan değil de koddan değiştirdiğimiz için bir sıkıntı olmamalı. Eğer değişkenin değerini görmek isterseniz, Update fonksiyonunda Debug.Log ile değeri konsola yazdırabilirsiniz.

    • Mucahit dedi ki:

      abi debug’la da kontrol ettim reklam gösterme tusuna basıldıgında yani
      public void ReklamGoster()
      {
      if( ReklamScript.RewardedReklamHazirMi() )
      ReklamScript.RewardedReklamGoster( RewardedReklamGosterildi );
      }

      bu olay gerçeklestiğinde

      void RewardedReklamGosterildi( GoogleMobileAds.Api.Reward odul )
      {
      izlendimi = true;
      }
      buraya gelmiyo izlendimi surekli false kalıyo

  59. Ramazan dedi ki:

    Arkadaşlar, aile kategorisinde oyununuz varsa AdMob reklamlar sadece (kanada gibi) bazı ülkelerden görüntülenebiliyor ve reklam sayısı sınırlı olduğu için görüntüleme sayınız çok az oluyor. Bende UnityAds kullanarak yapmaya karar verdim. Çok kolay bir şekilde reklam yayınladım ve aile kategorisinde olmak sorun olmuyor. Nasıl yapılacağını anlatan bir video ders çektim isterseniz buradan göz atabilirsiniz. https://www.youtube.com/watch?v=ayfHGvsnjoU

    • yasirkula dedi ki:

      Elinize sağlık, bilgilendirme için teşekkürler.

      • Ramazan dedi ki:

        Ben teşekkür ederim, oyunlarım için çok yardımcı oldunuz.

      • Ramazan dedi ki:

        Yasir bey UnityAds’ı aşağıdaki scriptteki fonksiyonu çağırarak görüntülüyorum ancak reklam görüntülenmediğini anlamak için ne yazmam gerektiğini bulmam gerekiyor. Yardımcı olabilir misiniz? if (reklam Görüntülenmezse){internet bağlantısını açın} gibi bişey yapacağım.
        Hali hazırdaki reklam kodum böyle:
        using UnityEngine;
        using UnityEngine.Advertisements;

        public class ADS : MonoBehaviour
        { public static void showAd() {
        if (Advertisement.IsReady ())
        Advertisement.Show ();
        }
        }

      • yasirkula dedi ki:

        if(Advertisement.IsReady()) koşulu false döndürürse reklam görüntülenemez. Yani bu if’e bir else ekleyip içine reklam gözükmeyince yapılacak şeyleri yazabilirsiniz. Ancak bu if’in false döndürmesi birkaç farklı sebepten ötürü olabilir: cihaz internete bağlı olmayabilir, sunucuda reklam olmayabilir veya sunucudaki reklam o anda indirilmekte olabilir.

      • Ramazan dedi ki:

        Çok teşekkürler 🙂

  60. caner dedi ki:

    Yasir Bey merhabalar;
    öncelikle kaliteli bilgilendirme için çok teşekkür ederim. Soruma gelecek olursak 2 gündür uğraştığım bir problem artık beni çıldırtacak.

    İlk aşamada sizde yazılanları yaptım ancak reklamları göremedğim için ben de en son 1 yıl önce güncellediğim sdk, ndk ve jdk ları güncelledim. Sonrasında ise şu an Admob Plugin i import etmek istediğim zaman şu sinir bozucu hata geliyor:

    ” Gradle failed to fetch dependencies.

    Failed to run ‘C:\Users\CANER\Documents\1fs\Temp\PlayServicesResolverGradle\gradlew.bat -b “C:\Users\CANER\Documents\1fs\Temp\PlayServicesResolverGradle\PlayServicesResolver.scripts.download_artifacts.gradle” –no-daemon “-PANDROID_HOME=C:/Users/CANER/AppData/Local/Android/sdk” “-PTARGET_DIR=C:\Users\CANER\Documents\1fs\Assets\Plugins\Android” “-PMAVEN_REPOS=https://maven.google.com” “-PPACKAGES_TO_COPY=com.google.android.gms:play-services-ads:11.6.0″‘
    stdout:

    ERROR: JAVA_HOME is not set and no ‘java’ command could be found in your PATH.

    Please set the JAVA_HOME variable in your environment to match the
    location of your Java installation.

    stderr:

    exit code: 1

    UnityEngine.Debug:LogError(Object)
    Google.Logger:Log(String, LogLevel)
    GooglePlayServices.PlayServicesResolver:Log(String, LogLevel)
    GooglePlayServices.c__AnonStorey14:m__1F(Result)
    GooglePlayServices.c__AnonStorey15:m__28()
    GooglePlayServices.PlayServicesResolver:PumpUpdateQueue()
    UnityEditor.EditorApplication:Internal_CallUpdateFunctions() ”

    Diğer bir hata olarak ta şu çıkıyor:

    ” Resolution failed

    Failed to fetch the following dependencies:
    com.google.android.gms:play-services-ads:11.6.0

    UnityEngine.Debug:LogError(Object)
    Google.Logger:Log(String, LogLevel)
    GooglePlayServices.PlayServicesResolver:Log(String, LogLevel)
    GooglePlayServices.ResolverVer1_1:LogMissingDependenciesError(List`1)
    GooglePlayServices.c__AnonStorey18:m__26(List`1)
    GooglePlayServices.c__AnonStorey14:m__1F(Result)
    GooglePlayServices.c__AnonStorey15:m__28()
    GooglePlayServices.PlayServicesResolver:PumpUpdateQueue()
    UnityEditor.EditorApplication:Internal_CallUpdateFunctions() ”

    Çok araştırma yaptım ama bir türlü çözüm bulamadım. Yardımcı olabilirseniz çok memnun olurum.

  61. bayram dedi ki:

    public void Reklamac()
    {
    ReklamScript.RewardedReklamGoster(RewardedReklamGosterildi);
    }
    void RewardedReklamGosterildi(GoogleMobileAds.Api.Reward odul)
    {
    Score += (int)odul.Amount;
    }

    yasir bey rewarded reklamları bu kodla rewardedac komutunu butonla cağırıyorum ama reklamlar çıkmıyor.Admob konsolunda rewarded reklam isteği var ama gösterim olmuyor.yardımcı olursanız sevinirim.

  62. çetin dedi ki:

    ben dünde soru sormuştum sorum neden silindi anlamadım tekrar soriyim unity de scene hazırlerken belli bi süre sonra kamera hiç bir şekilde ilerlemiyor geri gidiyor ama ileri gitmiyor ve hiç bir şey yapamıyorum bu konu hakkında bilgisi olan hiç kimse yok mu ???

  63. ahmet dedi ki:

    KOD TEMİZLENDİ.

    Hocam merhaba.Hocam ben burda döndürme alanlarını nasıl sınırlayabilirim.Mesela y de -45 ile 45 açısı dışına çıkmasın. yada x te -90 ile 90 dışına bakmasın.Bunu nasıl yapabilirim.
    Yardımcı olabilirmisiniz.Teşekkürler.Rotate yaparken yerin altınada bakıyor.Tam dönüyor.ben Mathf.clamp yapmak istiyorum.Ama yapamadım.

  64. Mucahit dedi ki:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class NewBehaviourScript : MonoBehaviour {

    // Use this for initialization
    void Start () {
    ReklamScript.BannerGoster();
    }

    public void Gecis()
    {
    ReklamScript.InsterstitialGoster();
    }
    }

    selamun aleykum abi Singleton Reklam aynen aldım ve bu koddan cagırdım banner reklam hiç bi turlu cıkmıyor ve butona bastıgımda da oyun kapanıyor unityi bile silip bastan gösterdiğin gibi yukledim herseyi olmuyo sebebi nedir bunun

  65. qwerty dedi ki:

    Hocam oyunda test reklamları sorunsuz çalışıyor fakat asıl ıd’leri ekleyince reklam gelmiyor

  66. ahmet dedi ki:

    Hocam Kusura bakmayın rahatsız edecemde.
    Tekrar emin olmak için soruyorum.
    Ben SDK yı yeni kurdum baştan.Google play services falan hepsi yeni sürüm.
    Unityde sdk ve jdk yolunuda verdim.
    Sadece reklam almak için githuptan unity google mobile ads plugin v3.7.1 sürümü indirdim onu import ediyorum.Reklam falan sorunsuz çıkıyor. Bu admobun istediği 2018 google mobile ads sdk 7.0.0 güncellemesi için yeterlimi. Ben import ettiğimde editor içindeki xml de şunlar var.
    {

    https://maven.google.com

    7.0″>

    https://github.com/CocoaPods/Specs

    }
    Unity android uygulamalar için. bu şekilde tamammı acaba.Admob reklamda sıkıntı çıkarmaz inş.
    Yardımınız için teşekkürler.

    • yasirkula dedi ki:

      Güzel bir soru sormuşsunuz. Maven 7.0, Mobile Ads SDK 7.0’a mı denk geliyor bunu açıkçası ben de bilmiyorum. Ancak Github’dan Admob’un en güncel unitypackage’ını import ettiğiniz ve SDK Manager’da Google Play Services’ı güncel tuttuğunuz taktirde Mobile Ads SDK da dahil her şey son sürüm olmalı ve bir sıkıntı yaşamamalısınız.

  67. Mucahit dedi ki:

    selamun aleykum abi oyunuma reklamın gosteriliceği an gelince oyun kapanır nasıl cozebilirim

    • yasirkula dedi ki:

      Aleykümselam. Öncelikle reklam gösteren kodunuzu comment’leyip tekrar test ederek sorunun gerçekten reklamlardan kaynaklandığından emin olun. Eğer öyleyse plugin ile gelen her şeyi silip plugin’i tekrardan derste anlatıldığı gibi import etmeyi deneyin. Eğer test cihazınız çok çok eski bir cihazsa belki biraz daha iyi bir cihazda da reklamları test etmeyi deneyebilirsiniz. En son çare olarak, logcat kullanarak uygulamanın çökerken nasıl bir hata verdiğini tespit edip bu hatayı internette aratabilirsiniz. Logcat kullanımı için “android logcat kullanımı” şeklinde arama yapabilirsiniz.

      • Mucahit dedi ki:

        sorun reklamlarda bi commentleyince sorun olmuyo test ettiğim cihazim S4 eski telefonum suanki telefonum mi5 ama ona da build alamıyorum hata veriyor soylediğin seyleri tekrar bi yapiyim insallah düzelir

      • Mucahit1 dedi ki:

        Selamun aleykum abi ben unity 2017 de build alamadigim icin 5.4 kullaniyorum acaba bu yuzden reklam gosterilmiyor olabilir mi sen hangi surumu tavsiye edersin 2017de bir turlu build alamamistim

      • yasirkula dedi ki:

        Ben 5.6 sürümünü kullanıyorum ama 5.4 de yeterince iyi olmalı. Reklamın bu yüzden gözükmediğini sanmıyorum.

  68. ahmet dedi ki:

    Hocam ben google mobile ads plugin ve google play services lib beraber projeye import ettiğiğmde apk alıyorum uygulamada çalışıyor ama reklamlar çıkmıyor.
    Sorun nedir acaba yardım edebilirmisiniz.Teşekürler.

  69. ahmet dedi ki:

    Hocam Kusura Bakmayın fazla soru sordum.Ama ben hepsini halletim yukardaki soruların hepsini.Bi tek şu konuda yardım etseniz.
    Şimdi ben githupta (https://github.com/googleads/googleads-mobile-unity/releases/tag/3.7.0) google mobile ads unity plugin v3.7.0 sürümünü projeye import ettim.Google play-services lib eklemedim ama reklam çıkıyor.Bunu eklemesem admob sıkıntı yaparmı.Birde google mobile ads sdk sını 7.0.0 güncelleyin diyor.Bunun bu sürümde olduğunu nerden bilecem.Unity içinde eklediğim plugindeki manifest xml de yazarmı. SDK nın üst sürümlerini kurdum.Google play servicesi update ettim.Ama dediğim gibi lib project yok.

    BİR TEK BU SORUYA BAKSANIZ YETERLİ OLUR. Yukardaki soruları halletim.
    Yardım ederseniz çok iyi olur.Emeğiniz için teşekürler.

    • yasirkula dedi ki:

      Artık libproject klasörünü kopyalamanız gerekmiyor, o kısmın üzerini o yüzden çizdim zaten. Google Mobile Ads SDK’sı ile artık SDK Manager’daki Google Play Services modülü ile geliyormuş, o modülün son sürüm olduğundan emin olmanız yeterli olur. Bir sıkıntı çıkarsa tekrar Resolve Client Jars yapmayı deneyebilirsiniz.

  70. ahmet dedi ki:

    Hocam Merhabalar.Hocam ben apk almaya çalıştığımda hep bu hata çıkıyor.Sebebi nedir acaba.Yardımcı olabilirmisiniz.Teşekürler.

    Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.
    F:\Unity Projelerim\UnitySdk\build-tools\27.0.1\aapt.exe package –auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I “F:/Unity Projelerim/UnitySdk\platforms\android-27\android.jar” -F bin/resources.ap_ –extra-packages com.google.unity

    stderr[
    AndroidManifest.xml:16: error: Error: No resource found that matches the given name (at ‘theme’ with value ‘@style/Theme.IAPTheme’).

    AndroidManifest.xml:18: error: Error: No resource found that matches the given name (at ‘value’ with value ‘@integer/google_play_services_version’).

    ]
    stdout[
    Configurations:
    (default)
    xhdpi-v4

    Files:
    drawable\app_banner.png
    Src: (xhdpi-v4) res\drawable-xhdpi\app_banner.png
    drawable\app_icon.png
    Src: () res\drawable\app_icon.png
    values\strings.xml
    Src: () res\values\strings.xml
    AndroidManifest.xml
    Src: () AndroidManifest.xml

    Resource Dirs:
    Type drawable
    drawable\app_banner.png
    Src: (xhdpi-v4) res\drawable-xhdpi\app_banner.png
    drawable\app_icon.png
    Src: () res\drawable\app_icon.png
    Type values
    values\strings.xml
    Src: () res\values\strings.xml
    Including resources from package: F:\Unity Projelerim\UnitySdk\platforms\android-27\android.jar
    applyFileOverlay for drawable
    applyFileOverlay for layout
    applyFileOverlay for anim
    applyFileOverlay for animator
    applyFileOverlay for interpolator
    applyFileOverlay for transition
    applyFileOverlay for xml
    applyFileOverlay for raw
    applyFileOverlay for color
    applyFileOverlay for menu
    applyFileOverlay for font
    applyFileOverlay for mipmap
    Processing image: res\drawable-xhdpi\app_banner.png
    Processing image: res\drawable\app_icon.png
    (processed image res\drawable\app_icon.png: 90% size of source)
    (processed image res\drawable-xhdpi\app_banner.png: 93% size of source)
    (new resource id app_banner from xhdpi-v4\drawable\app_banner.png #generated)
    (new resource id app_icon from drawable\app_icon.png #generated)
    ]

  71. Selşuk Şener dedi ki:

    Öncelikle merhaba,Benim şöyle bir sıkıntım var. Oyun sahnemde 2 adet ödüllü video butonu var. Bİrisi ödül olarak coin veriyor. Diğeri ise oyunu devam ettiriyor. Şİmdi ben 2 adet gameobject oluşturup bu ödüllü video reklam kodunu attım. Fakat mesela coin kazan butonuna bastığında hem coin veriyor. hemde diğer ödül olan devam et özelliğini de veriyor. Aynı şekilde devam et reklama bastığında oyun devam ediyor fakat coin de veriyor. Bu durumu nasıl çözebilirim acaba?Yazmış olduğum 2 kodun resimleri linklerde mevcut.
    https://i.hizliresim.com/5G6rJl.png
    https://i.hizliresim.com/AyrQar.png

    • yasirkula dedi ki:

      AdsCoinManager’a public static bool coinReklamiMi; isminde bir değişken ekleyin. Aynı class’taki Goster()’in içinde coinReklamiMi=true; yapın ve ReklamRewardedVideo class’ındaki Goster()’de ise AdsCoinManager.coinReklamiMi=false; yapın. AdsCoinManager’ının içindeki tüm kodu if(coinReklamiMi)’nın içine, ReklamRewardedVideo’nun içindeki tüm kodu da if(!AdsCoinManager.coinReklamiMi)’nın içine alın.

      • Selşuk Şener dedi ki:

        Kusura bakmayın. Tüm kodu if(coinReklamiMi)’nin içine at kısmını biraz detaylı anlatır mısınız acaba?

      • yasirkula dedi ki:

        “AdsCoinManager’ın OyuncuyuOdullendir fonksiyonun içindeki tüm kodu” demek istemiştim ama eksik yazmışım. Benzer şekilde, “ReklamRewardedVideo’nun RewardSuccess fonksiyonunun içindeki tüm kodu” olacak.

      • Selşuk Şener dedi ki:

        Söylediğinizi yaparsam eğer videoyu tam izlemese bile o ödülü vermez mi? Çünkü OnAdRewarded kısmı boş kalacak?(OyuncuyuOdullendir ve RewardSuccess fonksiyoları boş olacak.)

      • Selşuk Şener dedi ki:

        Normalde OyuncuOdullendir fonksiyonu içerisine if(coinReklamiMi){ //Ödül Kısmı } böyle yazmam gerekmiyor mu?

      • yasirkula dedi ki:

        Evet bunu demeye çalışıyorum. Doğru olan bu.

      • Selşuk Şener dedi ki:

        Vakit ayırıp cevapladığınız için teşekkür ederim. Son bir soru daha sormak istiyorum. Ödül olarak altın verdiğimde anında güncellenmiyor. Sahneyi tekrar açması gerekiyor. Bu sorun hakkında bir bilginiz var mı acaba?

      • yasirkula dedi ki:

        Hemen güncellenmiyor derken, eğer ki ekrandaki bir UI Text hemen güncellenmiyorsa belki altın kazandıktan sonra textObjesi.text = “” + altinMiktari; gibi bir kod çalıştırmanız gerekiyordur. Altının anında güncellendiğinden emin olmak için, kullanıcıya ödül olarak altın verdikten sonra toplam altın miktarını Debug.Log ile konsola yazdırabilir ve bu log’u şu asset ile okuyabilirsiniz: https://yasirkula.com/2016/06/18/unity-oyun-ici-debug-konsolu-ui-sistemi-ile/

  72. qwerty dedi ki:

    HOCAM OYUNDA REKLAM GÖZÜKMÜYOR. BEN ŞAHSEN HERŞEYİ ADMOB FOR UNİTY SİTESİNDEN YAPTIM VE HERŞEYİ SORUNSUZ YAPTIĞIMDAN EMİNİM. AMA OYUNDA REKLAM GÖZÜKMÜYOR. CONSOLE KISMINA DA BÖYLE ŞEYLER GELİYOR. BEN BUNLARDAN OLDUĞUNU DÜŞÜNÜYORUM.

    https://i.hizliresim.com/d7dJk4.png

    BUNLAR NEDEN VARLAR?

  73. Ramazan dedi ki:

    Yasir bey, öncelikle çok teşekkür ederim. Oyunumda sizi credits kısmına ekledim 🙂
    Singleton prensipli reklam scriptini kullanıyorum. “Designet for families” kategorisinde reklam göstermek için NOT5 de bahsettiğiniz değişikliği, yani:
    AdRequest reklamiAl = new AdRequest.Builder().TagForChildDirectedTreatment( true ).AddExtra( “is_designed_for_families”, “true” ).Build();
    kodunu nerede kullanacağız? Singleton prensipli scriptte bu kodu bulamadım. Playstore, bu değer olmazsa reklam görüntülenmez diyor(https://support.google.com/admob/answer/6223431?hl=tr) ve şu anda benim uygulamamda da görüntülenemiyor ne yazık ki.
    Yardımcı olabilirseniz çok sevinirim. Şimdiden teşekkürler.
    Oyunlarım:
    https://play.google.com/store/apps/details?id=com.ChocoLikeGames.LovelyMemoryPuzzleGame
    https://play.google.com/store/apps/details?id=com.ChocoLikeGames.birdMatching

    • yasirkula dedi ki:

      Ben teşekkür ederim. Singleton’da “Cocuklara Yonelik Reklam Goster” değişkenini Inspector’dan true yapmanız yeterli olmalı. Ancak bunu gerçek bir uygulamada test etmediğimden çalışır mı çalışmaz mı onu bilmiyorum.

  74. Ensar dedi ki:

    Reklamlar sorunsuz çalışıyor fakat gelen kazançlar tekrar geri gidiyor. Mesela bugün 0.54 kuruş gözüküyor yarim saat sonra tekrar baktığımda 0.00 kr gözüküyor. Bunun sebebi nedir ?

    • isimsiz dedi ki:

      Kardeş nasıl yapıosun reklamlar nasıl sorunsuz geliyor bana dosyalarını atabilir misin veya anlatabilir misin?

    • isimsiz dedi ki:

      Kardeş bi bak

    • whoisthis dedi ki:

      Kardeş nasıl sorunsuz geliyor. kullandığın dosyaları kodları sdosya ya yüklermisin

    • yasirkula dedi ki:

      Admob otomatik olarak spam gibi duran bazı tıklamaları filtreleyip yoksayıyor diye biliyorum. Belki ona denk gelmiştir. Veya o yarım saat içinde 0.54 kuruşluk kazanç bir günden daha eski hale gelip son 24 saatlik kazançtan silinmiş de olabilir. Raporlar sekmesine geçiş yaparsanız 0.54 lira orada gözükmeye devam ediyor olabilir.

  75. ahmet dedi ki:

    Hocam merhaba.Hocam admobtan şu mail geldide 23 0cak 2018 itibariyle admob üzerinde reklam yayınlamak için sdk nızı 7.0.0 üst sürümlerine güncelleyin.
    Hocam ben unity de reklam eklerken (google mobile ads plugin v3.0.4) paketini import ediyorum.Birde libprojecten eklediğim google-play-service- lib i ekliyorum.Bu google play services içindeki res kısmı içinde values içindeki version.xml var bunun içinde (

    8298000
    ) versiyon böyle gözüküyor.7.0.0 için sdk güncellemesi yapmam gerekiyormu.Yardımcı olabilirmisiniz .
    Şimdiden teşekürler.

    • yasirkula dedi ki:

      version.xml’deki değerin hangi versiyona denk geldiğini bilmiyorum ama reklamların gözükmeye devam ettiğinden emin olmak için hem Google Play Services’ın hem de Admob SDK’sının son sürümünü kullanarak oyunu güncellemek isteyebilirsiniz.

      • ahmet dedi ki:

        Hocam yanlış olmasın ama 8298000 8.2.3 versiyonuna denk geliyor. ama güncellemede google play services yok libproject içinde nasıl olacak ki.Yeni sdk indirdim orda extra içinde m2repository içinde aar uzantılı bir dosya içinde var diye okudum.Ama oda 6.0.0 sürümü içinde tek var google play services lib .Güncelleme de google play services lib nasıl haledecem.Bilginiz varsa yarım etseniz.Teşekürler.

      • yasirkula dedi ki:

        Artık libproject’i kopyala-yapıştır yapmak gerekmiyor.

  76. isimsiz dedi ki:

    Hocam Bilgisayarda reklam geliyor gözüküyor.
    https://i.hizliresim.com/mJDgVZ.png

    Ama telefona atınca uygulamayı bu şekilde;
    https://i.hizliresim.com/BydWVQ.png

    Reklam gelmiyor. Sebebi ne olabilir…???

    • yasirkula dedi ki:

      Sahnedeki oyun içi debug konsolunun Receive Logcat Logs In Android seçeneğini açıp Logcat Arguments kısmına da -s Ads yazarsanız mobilde Admob ile ilgili loglar da gözükür. O loglarda faydalı bir şey olabilir.

      • isimsiz dedi ki:

        hocam o şekilde zaten ama gözükmüyor oyunda reklam. Attığım fotolardaki gibi unity de reklamın ekrana geldiğine dair debug geliyo ama telefona atınca gelmiyo. Hocam Allah rızası için pc me falan bağlanın bişeyler yapın düzeltelim

      • yasirkula dedi ki:

        Android’de Admob’un ne tarz bir hata verdiğini bulmanız lazım. Bunun için ya oyun içi konsolu kullanıp “LOGCAT:” ile başlayan log’lara bakabilir ya da Android SDK’nın kurulu olduğu yerdeki adb programını kullanarak “adb logcat -s Ads” komutunu çalıştırıp gelen çıktılara bakabilirsiniz.

      • isimsiz dedi ki:

        Hocam tam anlayamadım daha açık anlatırmısınız

      • yasirkula dedi ki:

        Sahnedeki oyun içi debug konsolunun Receive Logcat Logs In Android seçeneğini açıp Logcat Arguments kısmına da -s Ads yazarsanız mobilde Admob ile ilgili loglar da gözükür. Bu loglar arasından “LOGCAT:” ile başlayanlara bakmanız lazım.

      • isimsiz dedi ki:

        Hocam reklamı unityden ekledim build ettim hemen apk da anında gözükür mü yoksa reklamların gelmesi 1-2saat falan sürer mi?
        Not:oyunum play store da yayında(reklamsız hali). Reklamların gelmesi için güncellemem falan gerekiyor mu?

      • yasirkula dedi ki:

        Bende reklamların gözükmesi için oyunu Play Store’a koymam gerekmedi şimdiye kadar. Sistem yakın zamanda bu yönde değiştiyse onu bilemeyeceğim. Reklamların gözükmesi, dediğiniz gibi biraz vakit alabilir; bence reklam kimlikleri oluşturduktan sonra yaklaşık 1 günlük bir mühlet verin.

  77. herkül dedi ki:

    hocam sadece plugini silip tekrar plugini build ettim şuan apk çıkardı denicem şimdi

  78. herkül dedi ki:

    HOCAM BUİLD EDERKEN BÖYLE BİR HATA ALIYORUM
    https://i.hizliresim.com/V37XlP.jpg

    • yasirkula dedi ki:

      Unity’i kapatıp açınca düzelmezse Admob plugini ile gelen tüm dosyaları silip plugini tekrar import etmeyi deneyin. Eğer test modu açıkken de reklamlar gözükmüyorsa ad unit id’leriniz yanlış olabilir. Eğer test reklamları gözüküyor ama normal reklamlar gözükmüyorsa o zaman debug konsolunda reklamların neden gözükmediği ile ilgili bir log olması lazım; genelde fillrate gibi bir hata olur bu.

      • herkül dedi ki:

        hocam reklamlar geliyor. unity’de console kısmında debug.log şeklinde reklamların ekrana geldiğini görebiliyorum aldığım tek hata o resim şimdi plugini silip tekrar import edicem

      • yasirkula dedi ki:

        Reklamları build alıp Android cihazda denemeniz lazım. Test modunda reklam gösterirken konsol yerine direkt ekranda test reklamları gözükmesi lazım.

      • herkül dedi ki:

        hocam build ettim ama reklam gözükmedi bluestacks’de

  79. kdrkdrkdr dedi ki:

    Hocam olmuyor. Oyunda reklam gözükmüyor. Herhangi bi hatada yok. Bi kaç ay önce aynı kodlarla aynı dosyalarda gözüküyordu reklamlar. Ama şimdi gözükmüyor.

    ben yukarıda verdiğiniz bu kodları kullanıyorum;

    using UnityEngine;
    using System.Collections;
    using System;
    using GoogleMobileAds.Api;

    public class ReklamInterstitial : MonoBehaviour
    {
    private InterstitialAd reklamObjesi;

    void Start()
    {
    YeniReklamAl( null, null );
    }

    void OnGUI()
    {
    if( GUI.Button( new Rect( Screen.width/2 – 150, Screen.height/2 – 150, 300, 300 ), “Reklamı Göster” ) )
    {
    StartCoroutine( ReklamiGoster() );
    }
    }

    IEnumerator ReklamiGoster()
    {
    while( !reklamObjesi.IsLoaded() )
    yield return null;

    reklamObjesi.Show();
    }

    public void YeniReklamAl( object sender, EventArgs args )
    {
    if( reklamObjesi != null )
    reklamObjesi.Destroy();

    reklamObjesi = new InterstitialAd( “AD unit ID’niz” );
    reklamObjesi.OnAdClosed += YeniReklamAl;

    AdRequest reklamiAl = new AdRequest.Builder().Build();
    reklamObjesi.LoadAd( reklamiAl );
    }
    }

    • kdrkdrkdr dedi ki:

      hocam bi cevap verseniz

    • yasirkula dedi ki:

      Önceki çalışan versiyondan farklı ne yaptınız? Yeni bir projeye mi Admob eklediniz veya Admob’un/Android SDK’nın/JDK’nın sürümünü mü güncellediniz? Yoksa siz hiç bir şeyi ellemeden oyununuzdaki reklamlar bir anda gözükmemeye mi başladı?

      • kdrkdrkdr dedi ki:

        Aynı projeye aynı dosyalar bunlarda değişiklik yok. Başta hiçbişey eklemedim. Ama ID farklı yani farklı admob hesabıyla sonra olmayınca sdk manager a girdim google play services güncel değilmiş onu güncelledim ama yine olmadı

      • kdrkdrkdr dedi ki:

        En baştan anlatmak gerekirse bi oyunum var 3ay önce aynı kodlarla aynı dosyalarla reklam eklemeyi başardım. Tabi oyun play store da yoktu. Geçersiz tıklamadan admob hesabımı kapattılar. Zaten denemek için açtıydım o hesabı. Kendi kendime dedim zaten oluyo reklam geliyo play store geliştirici hesabı açınca asıl admob hesabını oluşturur reklamı ekler oyunu yayınlarım dedim.Sonra 3-4gün önce google play geliştirici hesabı açtım oyunu yüklemek için. Asıl admob hesabını da açtım geçiş reklamını oluşturdum oyuna da ekledim ama gelmiyor reklam. Github da dosyalar güncellenmiş onları güncelleyip denedim olmadı. Sdk manager da google play servicesi de güncelledim olmadı. Allah aşkına yardım edin hocam

      • yasirkula dedi ki:

        Şu asset’i kullanarak Admob’un bir hata döndürüp döndürmediğine bakın: https://yasirkula.com/2016/06/18/unity-oyun-ici-debug-konsolu-ui-sistemi-ile/

        Oradaki “Receive Logcat Logs In Android” seçeneğini açıp Logcat Arguments kısmına da “-s Ads” (tırnaksız) yazarsanız sadece Admob ile alakalı log’ları görürsünüz.

      • kdrkdrkdr dedi ki:

        hocam attığınız bu asseti oyuna ekledikten sonra oyunu build edip denememiz gerekiyor değil mi?

      • kdrkdrkdr dedi ki:

        hocam az önce admob a girdim şöyle birşey yazıyor
        “Hesabınıza ait ödeme bilgilerini henüz belirtmediğiniz için reklam birimleriniz reklam göstermiyor.”
        sorun bununla alakalı mı

      • kdrkdrkdr dedi ki:

        hocam son yazdığım farklı admob hesabıymış kusura bakmayın :/

      • kdrkdrkdr dedi ki:

        HOCAM

        “Oradaki “Receive Logcat Logs In Android” seçeneğini açıp Logcat Arguments kısmına da “-s Ads” (tırnaksız) yazarsanız sadece Admob ile alakalı log’ları görürsünüz.”

        BU DEDİĞİNİZİ BULAMADIM…

      • kdrkdrkdr dedi ki:

        HOCAM BU DEDİĞİNİZİ “Şu asset’i kullanarak Admob’un bir hata döndürüp döndürmediğine bakın: https://yasirkula.com/2016/06/18/unity-oyun-ici-debug-konsolu-ui-sistemi-ile/

        Oradaki “Receive Logcat Logs In Android” seçeneğini açıp Logcat Arguments kısmına da “-s Ads” (tırnaksız) yazarsanız sadece Admob ile alakalı log’ları görürsünüz.”

        YAPTIM. OYUNU DA BAŞLATTIM AMA Bİ HATA ALMADIM. BU REKLAMLAR NEDEN GÖZÜKMÜYOR?

  80. PoeWang dedi ki:

    gene çalışmadı başka bilgisayarda denedim gene olmadı 😦

    • yasirkula dedi ki:

      Resmini attığınız hata mesajını aratıp karşınıza çıkan çözüm yollarını tek tek denemeniz lazım o zaman, benim aklıma bir çözüm yolu maalesef gelmiyor.

  81. PoeWang dedi ki:

    iyi akşamlar
    Ben plugini yükledim scripti kaydettim sonrada build aldım .nox’da ve bluestack’da denedim ,aslında denemeye çalıştım çünkü ne zaman

    //InterstitialReklamYukle();
    //RewardedReklamYukle();
    bu iki tür reklam yüzünden oyun direk çalışmayı bırakıp duruyor.

    //BannerReklamYukle();
    bu tip reklamı çağırdığımda ise

    https://i.hizliresim.com/8NLb87.png

    resimdeki hatayı alıyorum 😦

    Bu problemleri yaşıyan ve çözebilen var mı ?

    • yasirkula dedi ki:

      Play Services Resolver-Android Resolver-Resolve Client Jars kısmını yaptınız mı?

      • PoeWang dedi ki:

        Yapmıştım ilk mesajı yazmadan önce ama benim problemim oyunu açtıktan sonra oluyor build almaka herhangi bir sorun yaşamıyorum 😀 Sadece reklamları gösterirken sorun yaşıyorum 😦

      • yasirkula dedi ki:

        Projenizde Admob harici pluginler de varsa tüm pluginleri silip sonra tek tek yeniden import etmeyi deneyebilirsiniz. Bende bir keresinde Admob’u yeniden import etmek işe yaramıştı. İsterseniz önce Admob pluginini import edip Resolve Client Jars yaptıktan sonra diğer pluginleri import edebilirsiniz.

        Resolver’da ısrar etmemin sebebi, şu linkte sizin yaşadığınız sıkıntının çözüm yolu olarak onun gösterilmesi: https://github.com/googleads/googleads-mobile-unity/issues/154

  82. enceweb dedi ki:

    Hocam Merhaba,
    Sigleton reklam scriptindeki 21. satırı public AdPosition bannerPozisyonu = AdPosition.Bottom; şeklinde değiştirdim ama reklamlar hala üst kısımda gözüküyor sebebi ne olabilir?

  83. enceweb dedi ki:

    İnternette benle aynı sorunu yaşayan birini buldum ama bahsettiği script bende yok ve yorum biraz eski olduğu için tam emin olamadım

    “ben android oyunum da admob kullanmak istiyorum fakat eklentiyi kurdum entegre ettim ve denedim ama banner gözükmüyor interstitial ad yüklendiğinde ise oyundan atıyor durduruldu diyor bunun çözümü var mıdır bu sorunu yaşayanlar olup çözmüşlerse nasıl çözdüklerini söyleyebilir mi??

    sorunu çözdüm arkadaşlar.

    BackgroundResolution.cs’ye gir Assets\GooglePlayGames\Editor’ün orada

    private static void AddDependencies() fonksiyonun içine alttaki kodu ekle.
    svcSupport.DependOn(com.google.android.gms, play-services-ads, PluginVersion.PlayServicesVersionConstraint);

    ondan sonra Temp\StagingArea\android-libraries\play-services-ads-8.3.0. klasöre git ve içinde ki AndroidManifest.xml’i kopyala, Assets\Plugins\Android GoogleMobileAdsPlugin’ı içine yapıştır gelen soruya evet de ve işi bitir. ”

    şeklinde yorum var ama bende ismi geçen script yok

    • yasirkula dedi ki:

      Evet dediğiniz gibi böyle bir script yok. Herhalde eski bir versiyonda varmıştır. Bence Unity’i kapatıp Assets klasöründen Admob ile alakalı her şeyi (GoogleMobileAds ve PlayServicesResolver klasörleri ile Plugins klasörü içerisindeki ilgili dosyalar) silin ve ardından Library klasörünü de silip Unity’i tekrar başlatın ve plugin’i tekrar import edin. Ardından PlayServicesResolver klasörüne sağ tıklayıp Resolve işlemini yapıp tekrar test edin. Ben bir seferinde plugini böyle silip tekrar kurduğumda işe yaramıştı.

  84. enceweb dedi ki:

    Teşekkürler hocam komutu tam çalıştıramadım ama başka bir sorun var ve sanırım reklamlar da bu yüzden gözükmüyor. Build aldığım oyun apksını kurarken “full network access” izni uyarısı çıkmıyor bunun sebebi ne olabilir hocam?

    • yasirkula dedi ki:

      Uygulamayı yüklemeden önce telefonunuzdaki eski versiyonunu silmiyorsanız, yani uygulamayı güncelliyorsanız o zaman gözükmeyebilir. Yoksa sebebini bilmiyorum ama garipmiş 🙂

      • enceweb dedi ki:

        Siliyorum hocam ama yine de istemiyor ve banner reklamları göstermiyor institaler reklam göstermesi gerektiğinde de oyun kapanıyor ve oyun durduruldu diye uyarı veriyor :/

  85. enceweb dedi ki:

    Merhabalar Hocam;
    Ana menü ekranında boş bir obje oluşturup singleton reklam scriptii attım IDleri ilgli yerlere yapıştırdım.Reklamın görünmesini ve kaybolmasını istediğim fonksiyonlara reklam kodlarını da yazdım ama Test modu da dahil reklam göstermiyor unity de bu haliyle deneme yaparken konsola aşağıdaki uyarılar geliyor nerede yanlış yapmış olabilirim hocam?

    Dummy .ctor
    UnityEngine.Debug:Log(Object)
    GoogleMobileAds.Common.DummyClient:.ctor() (at Assets/GoogleMobileAds/Common/DummyClient.cs:28)
    GoogleMobileAds.GoogleMobileAdsClientFactory:BuildBannerClient() (at Assets/GoogleMobileAds/Platforms/GoogleMobileAdsClientFactory.cs:27)
    System.Reflection.MethodBase:Invoke(Object, Object[])
    GoogleMobileAds.Api.BannerView:.ctor(String, AdSize, AdPosition) (at Assets/GoogleMobileAds/Api/BannerView.cs:34)
    ReklamScript:BannerReklamYukle() (at Assets/Scripts/ReklamScript.cs:64)
    ReklamScript:Start() (at Assets/Scripts/ReklamScript.cs:54)

    Dummy CreateBannerView
    UnityEngine.Debug:Log(Object)
    GoogleMobileAds.Common.DummyClient:CreateBannerView(String, AdSize, AdPosition) (at Assets/GoogleMobileAds/Common/DummyClient.cs:73)
    GoogleMobileAds.Api.BannerView:.ctor(String, AdSize, AdPosition) (at Assets/GoogleMobileAds/Api/BannerView.cs:35)
    ReklamScript:BannerReklamYukle() (at Assets/Scripts/ReklamScript.cs:64)
    ReklamScript:Start() (at Assets/Scripts/ReklamScript.cs:54)

    Dummy LoadAd
    UnityEngine.Debug:Log(Object)
    GoogleMobileAds.Common.DummyClient:LoadAd(AdRequest) (at Assets/GoogleMobileAds/Common/DummyClient.cs:83)
    GoogleMobileAds.Api.BannerView:LoadAd(AdRequest) (at Assets/GoogleMobileAds/Api/BannerView.cs:68)
    ReklamScript:BannerReklamYukle() (at Assets/Scripts/ReklamScript.cs:67)
    ReklamScript:Start() (at Assets/Scripts/ReklamScript.cs:54)

    Dummy HideBannerView
    UnityEngine.Debug:Log(Object)
    GoogleMobileAds.Common.DummyClient:HideBannerView() (at Assets/GoogleMobileAds/Common/DummyClient.cs:93)
    GoogleMobileAds.Api.BannerView:Hide() (at Assets/GoogleMobileAds/Api/BannerView.cs:74)
    ReklamScript:BannerReklamYukle() (at Assets/Scripts/ReklamScript.cs:69)
    ReklamScript:Start() (at Assets/Scripts/ReklamScript.cs:54)

    • yasirkula dedi ki:

      Konsoldaki bu mesajlar kodunuzu doğru yazdığınızı belirtiyor, sıkıntılı bir durum yok. Bu durumda, yazıda bahsettiğim gibi “adb logcat -s Ads” komutunu kullanarak oyunu Android cihazınızda debug etmeli ve oradaki mesajları dikkate almalısınız.

  86. enceweb dedi ki:

    Merhaba Hocam,

    Daha önce tavsiye ettiğiniz unitynin örnek infinite oyunundaki reklamlarla alakalı şu script tam olarak ne işe yarıyor anlayamadım bunu kullanınca ismi gecen alanlardan da mı reklam alabiliyoruz, konuyla ilgili bilginiz var mıdır?

    namespace UnityEngine.Analytics.Experimental
    {
    ///
    /// The advertising or mediation network service provider.
    ///
    public enum AdvertisingNetwork
    {
    None = 0,
    Aarki,
    AdAction,
    AdapTv,
    Adcash,
    AdColony,
    AdMob,
    AerServ,
    Airpush,
    Altrooz,
    Ampush,
    AppleSearch,
    AppLift,
    AppLovin,
    Appnext,
    AppNexus,
    Appoday,
    Appodeal,
    AppsUnion,
    Avazu,
    BlueStacks,
    Chartboost,
    ClickDealer,
    CPAlead,
    CrossChannel,
    CrossInstall,
    Epom,
    Facebook,
    Fetch,
    Fiksu,
    Flurry,
    Fuse,
    Fyber,
    Glispa,
    Google,
    GrowMobile,
    HeyZap,
    HyperMX,
    Iddiction,
    IndexExchange,
    InMobi,
    Instagram,
    Instal,
    Ipsos,
    IronSource,
    Jirbo,
    Kimia,
    Leadbolt,
    Liftoff,
    Manage,
    Matomy,
    MediaBrix,
    MillenialMedia,
    Minimob,
    MobAir,
    MobileCore,
    Mobobeat,
    Mobusi,
    Mobvista,
    MoPub,
    Motive,
    Msales,
    NativeX,
    OpenX,
    Pandora,
    PropellerAds,
    Revmob,
    RubiconProject,
    SiriusAd,
    Smaato,
    SponsorPay,
    SpotXchange,
    StartApp,
    Tapjoy,
    Taptica,
    Tremor,
    TrialPay,
    Twitter,
    UnityAds,
    Vungle,
    Yeahmobi,
    YuMe,
    }
    }

    • yasirkula dedi ki:

      Evet mediation terimi başka reklam firmalarından reklamlar sunmak için kullanılıyor. Ama benim bildiğim kadarıyla bunun işe yaraması için kullanmak istediğiniz reklam firmalarında hesaplar açmanız, reklam birimleri oluşturmanız ve ilgili SDK’ları projenize import etmeniz gerekiyor. Infinite runner oyununda bu süreç nasıl halledilmiş bilmiyorum.

  87. ömer dedi ki:

    ad mob’da uyumlaştırma gurupları ve kampanyaların 0 etkin olarak gösterilmesi sorun olur mu ?
    ( uygulama play store’da deyil )

    • yasirkula dedi ki:

      Bu değerlerin böyle olması normal, bir sıkıntı yok. Uygulamanın Play Store’da olmasına da gerek yok. Test reklamları neden çalışmadı onu anlayamadım, “adb logcat -s Ads” ile hatanın kaynağını tespit etmeye bir adım daha yaklaşabilirsiniz diye düşünüyorum.

      Alternatif olarak ise Chartboost’u deneyebilirsiniz.

  88. ömer dedi ki:

    uyumlaştırma kampanyalar sıklık sınırı ( kullanıcı başına )
    gurupları

    0 etkin 0 etkin Reklam birimi düzeyi: Sınır yok
    Uygulama düzeyi: Sınır yok

  89. ömer dedi ki:

    yasir bey hiç hata almıyorum ama reklam çıkmıyor ne yapmalıyım oyun için 3 ay uğraştım.ders için çok teşekkürler.

    • yasirkula dedi ki:

      Admob sitesine girince “PIN doğrulamadığınızdan reklamlar gözükmüyor” gibi bir hata alıyor musunuz? Reklam kimliklerini oluşturduktan itibaren yaklaşık 1 gün geçti mi? Test reklamları çalışıyor mu?

      • ömer dedi ki:

        yasir bey malesef olmuyor hata vermiyor sadece güzel gözüksün diye gui sıkıştırma pixeller ile alakalı uyarı veriyor , 2 hesap oluşturup tüm admob yöntemlerini denedim test rekamı için yüklenen uygulama ülkenizde desteklenmemektedir diye bir uyarı aldım. Acaba admob dan başka para kazanma yöntemi önerebilir misiniz ?

  90. Ramazan dedi ki:

    Bu arada oyunumun adı “Sevimli hafıza yapboz oyunu” aramalarda 30. sırada çıkıyor veya chocolike diye aratılınca hemen çıkıyor 🙂

  91. Ramazan dedi ki:

    Merhaba, Yasir bey. Reklam görüntüleyememe sebebimi deneme yanılma yoluyla buldum. Yazınızda,
    “Bundle Identifier‘ı rastgele bir şekilde değiştirmeyi deneyin. Bunun sebebi; eğer başka birisi girdiğiniz o Bundle Identifier ile Admob reklamları sunarken ban yemiş ise artık o Bundle Identifier’ı kullanan uygulamalarda Admob reklamları gözükmüyor.”
    demiştiniz.
    Durumum şu ki, ilk uygulamam isim hakkını ihlalden askıya alındı. Bende aynı uygulamayı farklı bir isimle com.ChocoLikeGames.XXXX şeklinde kaydettim ve yeniden playstore a yükledim.
    Uygulamanın buildini “com.ChocoLikeGames.XXXX” bundle i. ile alınca reklam gözükmüyor, “com.ChocoLikeGames.YYYY” şeklinde alınca reklam gözüküyor.
    Problem şu: Şu anda playstore daki uygulamam da reklam gözükmüyor, güncelleme yapmak istediğimdede bundle identifier’in aynı olması gerektiği uyarısı geliyor. Farklı bundle i. ile güncelleme yaptırmıyor. Bu konuda bir fikriniz varmı? Aynı uygulamayı markete yeni bir isimle mi soksam? Napsam bilemedim. Yardımcı olursanız çok sevinirim.

    • Ramazan dedi ki:

      Yanlış anlaşılmaması için açıklama yapayım:
      1. Uygulamamın Bundle İdentifier’i: com.ChocoLikeGames.ZZZZ (Şuanda askıya alınmış)
      2. Uygulamamın Bundle İdentifier’i: com.ChocoLikeGames.XXXX (Reklam çalışmıyor ama playstoredan indirilebiliyor.)
      2.Uygulamayı farklı Bundle ile(mesela com.ChocoLikeGames.YYYY ile…) playstore’da güncelleme yaptıramıyorum…
      Amacım güncelleme yaparak, kullanıcıların reklam görüntüleyebilmesini sağlamak.

    • yasirkula dedi ki:

      Oyunu Google Play’e yüklerken “Designed for Families” programına katılmayı seçtiniz mi? Eğer seçtiyseniz bu programdan çıkarsanız reklamlar tekrar gözükmeye başlayabilir. Ya da ReklamScript’in son sürümünü kullanıp oradaki “Cocuklara Yonelik Reklam Goster” seçeneğini işaretlemeyi deneyebilirsiniz. Aksi taktirde oyunu sıfırdan Google Play’e yüklemekten veya başka bir reklam firması kullanmaktan başka bir çare göremiyorum ben.

      • Ramazan dedi ki:

        Yasir bey, Oyunu yüklerken “Designed for Families” seçeneğini seçmiştim ve gereklerini yerine getirmiştim. O programdan çıkıp oyunun özellikle 13 yaşın altındakilere yönelik olduğu kısmınıda iptal ettim. Güncelleme yaptığımda reklamlarım gözükmeye başladı
        ÇOOOOKKKKK TEŞEKKÜR EDERİM!!!!!!
        Ama 🙂 oyunum çocuklar için bir oyun olduğundan “Designed for Families” e de katılmam gerektiğini düşünüyorum. Sizin son scriptinizdeki “Cocuklara Yonelik Reklam Goster” butonunu tiklediğimde ise başka “Bundle identifier” ile bile girsem reklam görüntülenmiyor. Acaba oyunumu projeler klasöründen kopyala yapıştır yapıp çoğaltsam, sonra içeriğini değiştirip oyunun farklı bir “key” ve “bundle identifier” ile yeniden ailelere yönelik olarak piyasaya sürsem bir sorun olurmu sizce?

      • yasirkula dedi ki:

        Belki çocuklara yönelik göstermeye hazır bir reklam yokmuştur. O tarz reklamlar daha çok yurtdışında yapılıyor olabilir. “Designed for Families” seçeneğini seçecekseniz key veya bundle identifier değiştirmek bir şey farkettirmeyecektir diye düşünüyorum.

      • Ramazan dedi ki:

        Yasir bey oyunumun linki aşağıda, bu oyunu yaparken bana çok yardımcı oldunuz, Oyunun credits kısmına sitenizi eklemeyi düşünüyorum müsaade ederseniz.Tekrar çok teşekkür ederim. Oyunun, piyasadaki benzerlerine göre çok güzel bir oyun olduğu kanaatindeyim.

        https://play.google.com/store/apps/details?id=com.ChocoLikeGames.LovelyMemoryPuzzleGame

      • yasirkula dedi ki:

        Tabii ki, teşekkür ederim. Elinize sağlık 🙂

  92. assassinfurkan dedi ki:

    Reklam neden gözükmüyor acaba logcatde şu şekilde

    I/Ads (21434): Starting ad request.
    I/Ads (21434): This request is sent from a test device.
    I/Ads (20823): Parental control value is stale. Refreshing.
    I/Ads (20823): DSID cookie not found. Running refresh task.
    I/Ads (20823): Successfully received play store parental controls the result.
    E/Ads (20823): Failed to connect to https://googleads.g.doubleclick.net/pagead/drt/m. No DSID retrieved.
    I/Ads (20823): Immediate DSID task failed. Scheduling one-off
    E/Ads (20823): Failed to connect to https://googleads.g.doubleclick.net/pagead/drt/m. No DSID retrieved.
    W/Ads (21434): There was a problem getting an ad response. ErrorCode: 0
    W/Ads (21434): Failed to load ad: 0
    E/Ads (20823): JS engine could not be obtained. Cancelling ad request

    • yasirkula dedi ki:

      SDK Manager’da en son Android API’sini kurmayı ve Google Play Services’ı güncellemeyi deneyin. Ayrıca emülatörde test ediyorsanız da gerçek bir cihazda test etmeyi deneyin, bazen emülatörler saçmalayabiliyormuş.

  93. Ramazan dedi ki:

    Merhaba, apk mı sorunsuz bir şekilde çıktı alıp test reklamlarını görüntülemeyi başardım. Playstore a yükleyemedim ancak admobta tanımlamaları yaptım. Sorunum şu ki telefonda açtığımda sadece test reklamları gözüküyor, yani başka bi reklam gözükmüyor. Bunun için playstorea oyunu yüklemem yeterlimi? Birde oyunumun kullanıcı kitlesine göre reklam çeşidi seçmek için ne yapmalıyım?(Örneğin kızlara yönelik bir oyun için kızlara yönelik reklamlar gibi)

    • yasirkula dedi ki:

      Reklamların gözükmesi için oyunu Play Store’a koymanız gerekmiyor. Hatta bu yüzden reklamlar gözükmüyorsa sorunu çözene kadar Play Store’a koymamanızı öneririm.

      Kızlara yönelik reklamlar sunmak için “AdRequest reklamiAl = new AdRequest.Builder().Build();” kodunu “AdRequest reklamiAl = new AdRequest.Builder().SetGender( Gender.Female ).Build();” şeklinde güncellemeniz lazım. Yani araya bir “SetGender( Gender.Female )” fonksiyonu sıkıştırmanız lazım.

  94. mert dedi ki:

    şu kodda neyi yanlış yapmışım bakarmısın geçiş reklamı için. Ekledim unityde haritalara ama gözükmüyor oyuna girince. Banner sorunsuz calısıyor bunda sıkıntı var.

    using UnityEngine;
    using System.Collections;
    using GoogleMobileAds.Api;

    public class admobgecis : MonoBehaviour {

    // Use this for initialization
    void Start () {
    RequestInterstitial ();
    }

    // Update is called once per frame
    void Update () {

    }
    private void RequestInterstitial()
    {
    #if UNITY_ANDROID
    string adUnitId = “qweqweq”;
    #elif UNITY_IPHONE
    string adUnitId = “INSERT_IOS_INTERSTITIAL_AD_UNIT_ID_HERE”;
    #else
    string adUnitId = “unexpected_platform”;
    #endif

    // Initialize an InterstitialAd.
    InterstitialAd interstitial = new InterstitialAd(adUnitId);
    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    interstitial.LoadAd(request);
    }

    }

    • yasirkula dedi ki:

      Bu kod sadece interstitial reklamı internetten indirmeye yarıyor. İndirilen reklamı ekranda göstermek için şu kodu çağırmanız lazım:

      if( interstitial.IsLoaded() ) // reklam tamamen indirildiyse
      interstitial.Show(); // reklamı ekranda göster

      Ardından tekrar RequestInterstitial() fonksiyonunu çağırmak isteyebilirsiniz.

  95. FireDream dedi ki:

    Teşekkür ederim.IEnumerator’la kullanmak cidden iyi bir yöntem.Yazınızı okumadan önce 2 gün debelendim…

  96. ene dedi ki:

    yasirkula efendim ben uygulamama kodları yazdım fakat menüde banner çıkmasını istiyorum ama diğer oyun başladığındaki scene lere atmamama ramen banner çıkıyor ve hoş durmuyor nasıl engellerim bunu,birde ödüllü video yu geri tuşşuna basınca çıkabiliyorum onu nasıl engellerim teşekkürler 🙂

    • yasirkula dedi ki:

      Menü sahnesinden diğer sahnelere geçiş yapmadan önce banner’ı BannerGizle() fonksiyonu ile gizlemeniz lazım. Rewarded videoda geri tuşunu engellemek ile ilgili ise biraz arama yaptım ama henüz bir sonuç alamadım. Eğer faydalı bir şey bulabilirsem burada paylaşırım.

  97. davut dedi ki:

    Hiçbir hata yok bir şey yok ama nedense telefonumda denediğimde reklamlar gözükmüyor

  98. Yusuf dedi ki:

    Unity de online oyun yapımı ve play storede yayınlama hakkında genel bir bilgi verebilir misiniz? ya da öğrenebileceğim bir kaynak varsa onu paylaşabilir misiniz?

  99. Valar Morghulis dedi ki:

    Yasir Hocam öncelikle bilgi paylaşımınız için çok teşekkür ederim. Geliştirdiğim bir oyun var ancak oyuna reklam eklemede sıkıntı yaşıyorum. Şimdi oyuna sizin söylediğiniz şekilde ve internetten baktığım bir kaç şekilde bir kod yazdım ve düzenledim. ancak sıkıntı şu oyunda test request’ i ile reklamı alıp gösteriyorum(kendi android telefonumda) ancak bu test kodlarını silip gerçek reklama geçince ekrana hiçbir şey gelmiyor. admob üyeliği açalı 2 günü geçti. başka bir reklam biriminide kullandım o da fayda etmedi. Hatta oyunu alpha testine soktum belki storeda yer alırsa düzelir diye ancak o da işlemedi. banner ve geçiş reklamı eklemeye çalışıyorum. banner için yazdığım kod aşagıdaki gibidir. Yabancı sitelerde de benimle aynı problemleri yaşayanlar olmuş. Oralarda baktım en son çare size yazıyorum. 3 temmuzda birine cevap vermişsiniz bana da yardımcı olursanız çok sevinirim.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using GoogleMobileAds;
    using GoogleMobileAds.Api;

    public class admobreklam : MonoBehaviour {
    private BannerView bannerView;

    // Use this for initialization
    void Start () {
    RequestBanner ();

    }

    // Update is called once per frame
    void Update () {

    }
    private void RequestBanner()
    {
    #if UNITY_EDITOR
    string adUnitId = “unused”;
    #elif UNITY_ANDROID
    string adUnitId = “ca-app-pub-REKLAM ID’IM”;
    #elif UNITY_IPHONE
    string adUnitId = “INSERT_IOS_BANNER_AD_UNIT_ID_HERE”;
    #else
    string adUnitId = “unexpected_platform”;
    #endif

    // Create a 320×50 banner at the top of the screen.
    bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Bottom);
    // Create an empty ad request.

    AdRequest request = new AdRequest.Builder().Build();

    /*
    AdRequest request = new AdRequest.Builder()
    .AddTestDevice(AdRequest.TestDeviceSimulator)
    .AddTestDevice(“1CD8530D367574C6ACBD5427E1C1DF62”)
    .Build();
    */

    // Load the banner with the request.
    bannerView.LoadAd(request);
    bannerView.Show ();
    }

    • yasirkula dedi ki:

      AdSize.Banner’ı AdSize.SmartBanner yapmayı deneyebilirsiniz. İşe yaramazsa “adb logcat -s Ads” komutu ile oyunu debug etmeniz lazım.

      • Valar Morghulis dedi ki:

        .SmartBanner denedim işe yaramadı hocam.

        adb ile kontrol ettim ve şunu mesajı alıyorum.
        I/Ads : Starting ad request.
        I/Ads : Use AdRequest.Builder.addTestDevice to get test ads on this device.
        W/Ads : Received error HTTP response code: 403
        W/Ads : There was a problem getting an ad response. ErrorCode: 0
        W/Ads : Failed to load ad:0
        E/Ads : [JAMS] Got an invalid response.

        çözüm için baktım. ancak pek net bir cevap bulamadım. test reklamları çalışıyor. gerçek reklam gelmiyor. yabancı bir sitede admob ve adsense için ödeme bilgilerini girmediğimizden olacağını söylemiş onuda girdim ödemeler kısmından ancak hal bir değişiklik yok. acaba dedi storeda olması mı lazım o yüzden alpha test olarak store a attım ve admobdan bagladım yine olmadı. Belki zaman alıyordur diye düşünüyorum ödeme bilgisini yeni gönderdim diye ama pek umut yok gibi. Sizce bu 403 nolu error code’u neden oluyor?

      • Valar Morghulis dedi ki:

        http response code: 403 ‘ün hesabımın bannlanmış olması gibi bişey oldugunu gördüm ne kadar doğrudur? sonuçta bu hesapla hiçbirşey yapılmadı ve reklamda açamadım ki banlansın testte çalıştım sürekli.
        buna ek olarak bu defa başka bir admob hesabıyla deneme yaptım onda da http response code : 400 hatası alıyorum.
        bu 400 ve 403 hatalarının çözümü nedir unityde? sizi rahatsız ettiğimin farkındayım ancak hazır bir oyunum var ve reklam ekleyemiyorum 5 gündür bu işi çözemedim.
        ingilizcem var ama bu yabancı sitelerden çözemedim ben olayı herkes farklı bişey söylüyor siz olaya hakimsiniz.

      • yasirkula dedi ki:

        Evet bu hata kodları ile ilgili düzgün bir cevap bulmak bazen zor olabiliyor. Ben de 403 hatası için biraz bakındım ama pek elle tutulur bir şey bulamadım. Hesabınızın banlandığına dair bir mail almadıysanız ban olduğunu sanmıyorum. Yapabileceğiniz en iyi şey şu forumda destek aramak olacaktır diye düşünüyorum: https://groups.google.com/forum/#!forum/google-admob-ads-sdk

      • Valar Morghulis dedi ki:

        cevaplarınız için çok teşekkür ediyorum. Uğraşa uğraşa nasıl yaptığımı bilemeden bir anda çalışmaya başladı. Belirli bir zaman sonra reklamlar devreye girdi. 🙂 teşekkür ederim bu adb olayını siz söyledikten sonra kurcaladım ve en azından reklam requestlerini nasıl işlediğini anladım. Gerçi burda oyunumun linkini vermem ne kadar etik olur bilemiyorum ama geliştirici arkadaşlardan destek bekliyorum. Hocam siz de oyunuma bakmak isterseniz : https://play.google.com/store/apps/details?id=com.hezarfen.SpaceDiscovery

  100. Erkin Yağcı dedi ki:

    Yasir Bey Merhaba size bir sorum olacak. Sizin kodlardan yararlanarak oyunuma rewarded ad ekledim ancak bir sorunum var. Reklamı sonuna kadar izlesem bile admob hedabımda bir ödeme göremiyorum sadece reklama tıklarsam ödeme alabiliyorum (arkadaşımın telefonuyla deneme yaptım). Bunun dışında reklamın tamamını izleyen oyuncu ödülünü alıyor bunda bir sıkıntı yok. Sizce nedeni ne olabilir?

    • yasirkula dedi ki:

      İzleme sayısı az iken para vermiyor olabilir, biraz araştırma yaptım ama açıkçası düzgün bir cevap bulamadım. İzleme sayısı arttıkça rakam ortaya çıkacaktır sanırım.

  101. Mucahit1 dedi ki:

    Selamun aleykum abi guncellemeler hakkinda bi sorum olucakti mesela cogu oyun ve programda guncelleme geldiyse oyuna girdigimizde karsimiza bi yazi gelip bizi guncellemeye yonlendirir guncellenmisse oyun bu yazi gorunmez bunu nasil yapabiliriz cunku bazen oyunda buyuk hatalar oluyp guncelleme getirsekte herkea guncellemedigi icin o hata hala kaliyo oyunda

    • yasirkula dedi ki:

      İnternetten araştırdığım kadarıyla bunu yapmak için, oyunun en son versiyonunu kendi sunucunuzdaki bir metin dosyasında tutmalı ve oyun esnasında bu dosyayı okuyarak iki sürümü birbiriyle karşılaştırmalısınız. Hazır bir kod bulamadım maalesef.

      • Mucahit1 dedi ki:

        Ne diye arastirabilirim abi acikcasi arastirmaya calistimda tam olarak ne yazicagimi bilemedigim icin bisey bulamadim bu arada eyvallah abi ilgin icin

      • yasirkula dedi ki:

        “android java check for updates” şeklinde aratabilirsiniz. Direkt Unity için bir çözüm veya Türkçe bir anlatım bulamadım ama stackoverflow’da konuyla ilgili çeşitli çözüm önerileri sunulmuş.

      • Mucahit1 dedi ki:

        Eyvallah abi sagolasin

  102. taha dedi ki:

    merhabalar yasir bey. unity3d 5.5 ve 5.6 larda reklam göstermeme sorunu var bununla ilgili bir fikriniz yada haberiniz var mı? gösteren reklamlar güncelleme ile göstermemeye başladı.

  103. Elşan ibrahimov dedi ki:

    Merhaba Unity reklamlarından gelirler nasıl ?

  104. Anıl dedi ki:

    Merhaba kolay gelsin oyunda reklam gösterimi vardı fakat şimdi reklam çıkmıyo sizce sebebi nolabilir admob sayfasında bi hata yok kodlarda da yok düzgünce çalışıyodu

    • yasirkula dedi ki:

      Öncelikle reklamları test modunda test edin. Eğer reklamlar gözüküyorsa bu iyiye işaret; ad unit id’leriniz doğru demektir. Ama her halükarda şu dersten faydalanarak “adb logcat -s Ads” komutunu çalıştırıp ne hatası alıyorsunuz kontrol edin: https://yasirkula.com/2015/10/13/unity-android-oyunlarinizi-debug-etmek/

      • Anıl dedi ki:

        Hocam kodda hiç sıkıntı yok çalışıyodu dün çalışmamaya başladı acaba adres doğrulama işlemini hala yapamadım 4 ay filan oldu 3. Kez pin istedim fakat hala gelmedi o yüzden durdurmuş olabilirler mi hocam

      • yasirkula dedi ki:

        Size mail atmadan öyle bir şey yapmazlar diye düşünüyorum. Adres girmediğiniz için kapanması durumunu ise daha önce duymamıştım, öyle bir olasılık var mı bilmiyorum. İsterseniz reklamlarınızı test modunda deneyip test reklamı alıp almadığınıza bakın.

  105. İbrahim dedi ki:

    NOT2: “Google Play services“ın son sürümüyle birlikte artık “google_play_services” klasörünün içindeki “libproject” klasörü yok oldu. Eğer son sürümlerde build alırken hata alırsanız Assets/PlayServicesResolver klasörüne sağ tıklayıp “Play Services Resolver-Android Resolver-Resolve Client Jars” yolunu izleyin. Bu aşamadan sonra ben build alabilmiş ve reklamları sıkıntısız bir şekilde görebilmiştim bu kısmı anlamadım abim ya android resolver yok bnde

    • yasirkula dedi ki:

      Platform olarak Android seçili olmalı ve Project’te PlayServicesResolver klasörü seçili olmalı. Bende çıkıp da sizde niye çıkmadı dersek aklıma başka bir şey gelmiyor açıkçası (dersi adım adım uyguladığınızı varsayarsak).

      • İbrahim dedi ki:

        abim simdi ben mobile ads yi kurdum sonra sdklarda kurulu oyunda geçis reklamında yazdıgınız scripti alıp kopyalayıp yapıstırdım ıd mi girdim canvasa attım ama bluestackste de olmadı

      • yasirkula dedi ki:

        Sıkıntıyı gerçekten bilmiyorum; buradan faydalanarak reklamları sıkıntısız gösterdiğini söyleyenler de olduğu için yazdığım adımlarda sıkıntı olacağını sanmıyorum.

        Build almada sıkıntı yaşamıyorsunuz belli ki çünkü zaten oyunu build alıp emülatörde çalıştırmışsınız bile. Bu durumda NOT1 ile NOT2’nin arasına sıkıştırdığım 3 tane maddeyi gözden geçirmenizi öneririm.

  106. Onur dedi ki:

    tamam gerek yokmuş :S

    • Onur dedi ki:

      hocam peki bu singlestonda reklamlar yükleniyor hep. destroyu nerde yapacaz. hafıza boşaltmak için

      • yasirkula dedi ki:

        Singleton scriptte yeni bir interstitial reklam yüklerken önceki interstitial reklam otomatik olarak Destroy ediliyor. Banner reklam asla Destroy edilmiyor ancak script oyun boyunca yalnızca bir tane banner objesi kullandığı için hafıza konusunda sıkıntı olacağını sanmıyorum (en azından bende olmadı şimdiye kadar). Rewarded video reklamlarda ise Destroy fonksiyonu bulunmamakta zaten (koymayı unutmuşlar mı yoksa kendileri mi hallediyor onu bilmiyorum).

  107. Onur dedi ki:

    hocam
    Singleton Reklam Scripti (Son Güncelleme 24.04.2017)
    deki rekla m göster fonksiyolarını nası çağıracağız başka scrpitten. void olarak tanımlamışnız. ne public ne private var . public yapsak ne gibi sorunlarla karşılaşırız

  108. Ömer Faruk dedi ki:

    Merhaba. Daha önce mail atıp unity için birkaç soru sormuştum . Faydalı bir şekilde cevaplamıştınız teşekkür ederim. Oyunum konusunda son bir kısım kaldı oda reklam . Tam sayfa reklam çok dengesiz şekilde çıkıyor. Bunu süreli olarak değilde mesela : Karakterim her öldüğünde çıksın gibi birşey yapabilir miyim ? Nasıl yapabilirim ? Teşekkürler.

    • yasirkula dedi ki:

      Minimum sıkıntı yaşamak için en alttaki singleton reklam kodunu kullanın. Kendi scriptlerinizde tek yapmanız gereken değişiklik, karakter ölünce ReklamScript.InterstitialGoster(); fonksiyonunu çağırmak.

  109. İbrahim dedi ki:

    iyiaksamlar arkadaslar konuyla alakasız bisey sorucam ben oyunu build ederken
    UnityException: Bundle Identifier has not been set up correctly
    Please set the Bundle Identifier in the Player Settings. The value must follow the convention ‘com.YourCompanyName.YourProductName’ and can contain alphanumeric characters and underscore.
    Each segment must not start with a numeric character or underscore.
    UnityEditor.Android.PostProcessor.CancelPostProcess.AbortBuild (System.String title, System.String message, UnityEditor.Android.CommandInvokationFailure ex)
    UnityEditor.Android.PostProcessor.Tasks.GenerateManifest.ThrowIfInvalid (System.String packageName)
    UnityEditor.Android.PostProcessor.Tasks.GenerateManifest.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
    UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
    UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry)
    UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (BuildPostProcessArgs args)
    UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, System.String downloadWebplayerUrl, System.String manualDownloadWebplayerUrl, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:186)
    UnityEditor.HostView:OnGUI()
    Bu hatayı alıyorum sirket ismi falan soruyo bu sekilde yazıyorum:com.1,63Software.CircleAndSquareReklamsız
    ama gene hata alıyorum yardımcı olursanız bide ben admob kuramadım startapp kurdum startapp gelirleri nasıl biliyormusunuz

    • yasirkula dedi ki:

      Bundle Identifier’da virgül işareti veya Türkçe karakterler kullanmayın. Ayrıca noktadan hemen sonra rakam kullanamıyormuşsunuz. Sanırım sizin bundle identifier’ınız şu şekilde düzeltilebilir: com.i1_63Software.CircleAndSquareReklamsiz

      Startapp konusunda ise maalesef hiç bilgim yok :/

  110. fcomertfatih dedi ki:

    Merhaba hocam ben SDK menegar güncellemesi yaptım not2 deki hatayı aldım.
    ” NOT2: “Google Play services“ın son sürümüyle birlikte artık “google_play_services” klasörünün içindeki “libproject” klasörü yok oldu. Eğer son sürümlerde build alırken hata alırsanız Assets/PlayServicesResolver klasörüne sağ tıklayıp “Play Services Resolver-Android Resolver-Resolve Client Jars” yolunu izleyin. Bu aşamadan sonra ben build alabilmiş ve reklamları sıkıntısız bir şekilde görebilmiştim.”

    Ama “Assets/PlayServicesResolver klasörüne sağ tıklayıp “Play Services Resolver-Android Resolver-Resolve Client Jars” yolunu izleyin” bu yöntem işe yaramadı. yardımcı olur musunz.
    e posta adresi dorğudur. teamdan bakarmısınz?

  111. ahmet dedi ki:

    Merhaba Hocam ; bir sorum olacaktı hocam ben bir buton oluşturdum ve butona aşağıdaki kodu verdim amacım butona basılı tuttuğu sürece nesnenin geriye gitmesini sağlamak.Fakat Sadece tık tık yapınca gidiyor.Problem ne acaba ben anlamadım.Yardım etme imkanınız varmı.Teşekkürler.

    public void Movement()
    {

    int nbTouches = Input.touchCount;

    if(nbTouches > 0)
    {
    for (int i = 0; i = 2)
    {
    araba.transform.Translate(Vector3.back * moveSpeed * Time.deltaTime);
    }
    else
    {
    araba.transform.Translate(Vector3.back * moveSpeed * Time.deltaTime);
    }
    }

    }
    }
    else
    {
    araba.transform.Translate(Vector3.back * 0 * Time.deltaTime);
    }

    }

  112. Anıl dedi ki:

    Merhaba Yasir Hocam böyle bir hata alıyorum sebebi nedir yardımcı olurmusunuz.

    Google.JarResolver.ResolutionException: Cannot find candidate artifact for com.google.android.gms:play-services-ads-lite:[10.2.4]
    at Google.JarResolver.PlayServicesSupport.GetDependencies (Google.JarResolver.Dependency dep) [0x00000] in :0
    at Google.JarResolver.PlayServicesSupport.ResolveDependencies (Boolean useLatest, System.String destDirectory) [0x00000] in :0
    at GooglePlayServices.ResolverVer1_1.DoResolutionNoAndroidPackageChecks (Google.JarResolver.PlayServicesSupport svcSupport, System.String destinationDirectory, Google.JarResolver.OverwriteConfirmation handleOverwriteConfirmation) [0x00000] in :0
    UnityEngine.Debug:LogError(Object)
    GooglePlayServices.ResolverVer1_1:DoResolutionNoAndroidPackageChecks(PlayServicesSupport, String, OverwriteConfirmation)
    GooglePlayServices.c__AnonStorey5:m__8()
    GooglePlayServices.ResolverVer1_1:DoResolution(PlayServicesSupport, String, OverwriteConfirmation, Action)
    GooglePlayServices.PlayServicesResolver:Resolve(Action)
    GooglePlayServices.PlayServicesResolver:AutoResolve()
    GooglePlayServices.PlayServicesResolver:OnPostprocessAllAssets(String[], String[], String[], String[])
    UnityEditor.AssetPostprocessingInternal:PostprocessAllAssets(String[], String[], String[], String[], String[])

    • İbrahim dedi ki:

      dayı yukardaki yorumlarda cevabı var bende ona bakarak yaptım ama reklamı ekleyemedim

    • ANIL dedi ki:

      Çözdüm çözümü projedeki assette olan PlayServicesResolver klasöründe sag tıklayıp Play Services Resolver ordan version handler ordan Update yapın arkadaslar

  113. Volkan dedi ki:

    harfi harfiyen yaptım ama reklamlar gözükmüyor ne banner ne de interstitial 2 dk geçmesine rağmen tık yok

    • yasirkula dedi ki:

      NOT1 ile NOT2’nin arasındaki maddeler de işe yaramıyorsa ve de ad unit id’nizi harfi harfine yazdığınızdan eminseniz bu sorun benim çözebileceğim bir şey gibi durmuyor. İsterseniz “adb logcat -s Ads” komutuyla ne hatası alıyorsunuz kontrol edebilir veya test modunu açıp bir şey değişiyor mu bakabilirsiniz (adb logcat kullanımı için bkz. https://yasirkula.com/2015/10/13/unity-android-oyunlarinizi-debug-etmek/)

      • Volkan dedi ki:

        hiç bi tepki yok telefonun alogcat programında da denedim yok hiç bişi yazmıyor

      • yasirkula dedi ki:

        “adb logcat -s Ads” (tırnaksız) yazmanız lazım. Gerçekten hiçbir şey çıkmıyorsa o zaman yazdığınız Admob kodunu çağırmayı unutmuş olabilirsiniz diyecem ama pek olası durmuyor.

  114. Onur dedi ki:

    yasir bey
    ben bu sayfayı okumadan önce zaten oyuncuya öldül videosuunu gösterebiliyordum. ancak ödüllendiremiyorum

    şimdi sizin yaptığınız singlestone patternini bir scripte yapıştırdım. objeye koydum scripti.. yine aynı.
    ideo izleniyor ama ödül gelmiyor.
    benim baş ka bi r scriptte totalscore diye bi değişkenim var. buna ödülü nasıl ekleyebilirim.
    hangi fonksiyonun içine yazacam. anlayamıyorum

    • Onur dedi ki:

      void RewardedVideoOdullendir(object sender, Reward odul)
      {
      if (odulDelegate != null)
      odulDelegate(odul);

      GameObject.FindGameObjectWithTag(“MainCamera”).transform.GetComponent().totalScore += 600;

      }

      anlamadığım için böyle bir şeyler deniyorum. cevaplamanıza yardımcı olması açısından paylaştım

      • yasirkula dedi ki:

        Yazdığınız bu kodun doğru çalışması lazım; eğer reklamı baştan sona izlediğiniz halde çalışmıyorsa maalesef bilemiyorum.

      • Onur dedi ki:

        bugün 4. günüm ve sorunu buldum. Build setting>development build> unthick…

  115. İbrahim dedi ki:

    abim k.b. ama bişey anlamadım team viverdan baglanma imkanınız varmı

  116. İbrahim dedi ki:

    abim yukarıda sordugum sorunun cevabını diger yorumlarda buldum ama reklamu bluestackste test ediyotum ekranın ortasında bir buton içinde reklam goster dio ama reklam yok bu arada geçiş reklmaı kullandım

    • yasirkula dedi ki:

      Butonlar OnGUI fonksiyonu ile çıkıyor, o fonksiyonu silerseniz butonlar gider. Butona basınca ise reklam çıkıyor, test amaçlı koydum yani. Eğer sizde hiç reklam çıkmıyorsa yazıda ve yorumlarda reklamların çıkmaması ile ilgili olası çözüm yollarını bulabilirsiniz. Dilerseniz “adb logcat -s Ads” komutu ile aldığınız hatayı bulabilirsiniz (bkz. https://yasirkula.com/2015/10/13/unity-android-oyunlarinizi-debug-etmek/)

      • ibrahim dedi ki:

        Abim yani misal ben oyunuma 1.bolume girdiginde reklam vericem olunce reklam cikocak 2.bolume gecince reklam cikocak vb bunu nasil yapicam anlamadim sizin yukarida anlattiginiz reklam cesitleri sadece butono tiklandigindami oluyor yani

      • yasirkula dedi ki:

        Butona basınca çalışan fonksiyonu (sizin durumunuzda “StartCoroutine( ReklamiGoster() );”) karakter ölünce veya 2. bölüme geçince çalıştırmalısınız. Ama bence en alttaki singleton reklam scriptini kullanın çünkü orada reklamın geç çıkması veya reklam isteğinin timeout olması gibi özel durumları da ele aldım.

  117. İbrahim dedi ki:

    ResolutionException: Cannot find candidate artifact for com.google.android.gms:play-services-ads-lite:[10.2.4]
    Google.JarResolver.PlayServicesSupport.GetDependencies (Google.JarResolver.Dependency dep, System.Collections.Generic.List`1 repoPaths)
    Google.JarResolver.PlayServicesSupport.GetTransitiveDependencies (System.Collections.Generic.Dictionary`2 dependencies, System.Collections.Generic.List`1 repoPaths)
    Google.JarResolver.PlayServicesSupport.FindMissingDependencyPaths (System.String destinationDirectory, System.Collections.Generic.Dictionary`2& dependencyPaths, Google.JarResolver.ExplodeAar explodeAar)
    GooglePlayServices.ResolverVer1_1.DoResolution (Google.JarResolver.PlayServicesSupport svcSupport, System.String destinationDirectory, Google.JarResolver.OverwriteConfirmation handleOverwriteConfirmation, System.Action resolutionComplete)
    GooglePlayServices.PlayServicesResolver.Resolve (System.Action resolutionComplete)
    GooglePlayServices.PlayServicesResolver.AutoResolve ()
    UnityEditor.EditorApplication.Internal_CallUpdateFunctions () (at C:/buildslave/unity/build/artifacts/generated/common/editor/EditorApplicationBindings.gen.cs:197)
    bu hatananın cozumu ne olabilir ben bulamadım

  118. osman dedi ki:

    test modunu açın (nasıl olacağı yazının devamında yazmakta) demişsiniz.
    acaba test modunu nasıl açabilirim. yazıda bulamadım (farkedemedim).
    teşekkürler

    • yasirkula dedi ki:

      Test modunu şu şekilde açıyoruz:

      AdRequest reklamiAl = new AdRequest.Builder()
          .AddTestDevice(AdRequest.TestDeviceSimulator)
          .AddTestDevice("Device ID'niz")
          .Build();
      

      Bu konudan “ÇOK ÖNEMLİ NOT” kısmında bahsettim. Eğer dersin sonunda paylaştığım singleton scripti kullanırsanız kodu değiştirmenize gerek kalmaz, Inspector’dan cihazınızın ID’sini girip “Test Mod” değişkenini işaretlemeniz yeterli olur.

  119. Onur dedi ki:

    Merhaba, bu çok yararlı yazı için teşekkürler. 3 reklam türünü de ekledim. bunlardan banner olanı sadece menü sahnesine eklememe rağmen tüm sahnelerde çıkıyor. rewarded ve geçiş reklamları ise hiç çıkmıyor :/

    • yasirkula dedi ki:

      Menüden oyun sahnesine geçerken banner’ı Hide() fonksiyonu ile gizleyin. Rewarded ve geçiş reklamları ise test modunda da deneyin. Eğer test modunda düzgün çalışıyorlarsa sıkıntı olmaması lazım. Test modunda değilken de arada bir çıkıyorlarsa büyük olasılıkla fill rate sorunu vardır, sizle alakalı bir şey değildir yani. Ancak reklam bir kere bile çıkmıyorsa ad unit id’niz yanlış olabilir, kodda bir sıkıntı olabilir veya henüz rewarded ve geçiş reklamlarınız aktifleşmemiz olabilir (reklamları oluşturduktan 1 gün sonra deneyerek emin olabilirsiniz). Ayrıca dilerseniz oyununuzun Bundle Identifier’ını değiştirmeyi de deneyebilirsiniz; ufak bi olasılık ama işe yarayabilir. Aldığınız hatayı görmek için ise şu dersten faydalanabilirsiniz (“adb logcat -s Ads” komutunu kullanabilirsiniz): https://yasirkula.com/2015/10/13/unity-android-oyunlarinizi-debug-etmek/

      • Onur dedi ki:

        Evet dediklerinizi uygulayınca baner reklam kaybolmaya başladı. Çok teşekkürler:) Rewarded ve geçiş reklamları da hem test modun da hem de test modu duşında çalışıyor. Ancak test modunda rewarded videoalarda desteklenmeye başladı mı bilmiyorum.

      • yasirkula dedi ki:

        Henüz rewarded videolarda “.AddTestDevice” şeklinde test modunu kullanamıyor(muş)uz ancak singleton kodunda rewarded reklamlar eğer test modu açıksa “ca-app-pub-3940256099942544/5224354917” ad unit id’sinden çekiliyor. Bu ad unit id, rewarded videoları şimdilik test edebilmek için Admob’un kendi oluşturduğu bir id imiş: https://groups.google.com/forum/#!msg/google-admob-ads-sdk/k-kVwVu2XBc/57YBTdxPBgAJ

  120. PoeWang dedi ki:

    Bu singleton scriptini kullandığımızda,Rewarded ödül için hangi fonksiyonu butona atıyacağız.Butonu seçip fonksiyon atama listesine baktığımda RewardedReklamGoster fonksiyonu çıkmıyorda 😦

    public void odulluReklam()
    {
    RewardedReklamGoster(odulDelegate);
    }
    Scripte bunu ekledim ve çalıştı ama odul vermedi 😦 Link bağlantısıda kurmak gerekiyor sanırım 😀 yoksa benmi yanlış yaptım ?

    • yasirkula dedi ki:

      Şöyle bir şey deneyebilirsiniz:

      public void odulluReklam()
      {
      	RewardedReklamGoster( ( sender, odul ) =>
          {
      		// sender: object, odul: Reward
              Debug.Log( "Ödül türü: " + odul.Type );
       
              altin += (int) odul.Amount;
          } );
      }
      
      • PoeWang dedi ki:

        Yazdığınız scrip komple hata verdi 😦 Yazdığınız rewardedReklamGoster fonksiyonu için yaptığınız parametre şeklinide ilk defa görüyorum 😀 Açıklayabilir misiniz birde oyununuzda siz butona nasıl bir fonksiyon atıyorsunuz ?

      • yasirkula dedi ki:

        Butonlara fonksiyon ekleyeceğim vakit butonların Inspector’undaki On Click () event’ini kullanıyorum. rewardedReklamGoster’de kullandığım şeye “anonymous function” deniyor, fonksiyon içerisinde isimsiz bir fonksiyon oluşturmaya yarıyor. Sizin aldığınız hata ney acaba?

  121. Seçgin Yavuz dedi ki:

    Merhaba kolay gelsin, not2 bu sorun için çözüm olmuyor malesef, bu hatayı admob paketini projeye ekleyince alıyorum direk, oyunu test ettiğimde reklamın görünüp görünmediğine bakmadım ama bu hatayı düzeltmek istiyorum, düzeltene kadar eski plugini kullanıcam fakat bu hata hakkında bana yardımcı olursanız çok teşekkür ederim, saygılarımla…

    ResolutionException: Cannot find candidate artifact for com.google.android.gms:play-services-ads-lite:[10.2.4]
    Google.JarResolver.PlayServicesSupport.GetDependencies (Google.JarResolver.Dependency dep, System.Collections.Generic.List`1 repoPaths)
    Google.JarResolver.PlayServicesSupport.GetTransitiveDependencies (System.Collections.Generic.Dictionary`2 dependencies, System.Collections.Generic.List`1 repoPaths)
    Google.JarResolver.PlayServicesSupport.FindMissingDependencyPaths (System.String destinationDirectory, System.Collections.Generic.Dictionary`2& dependencyPaths, Google.JarResolver.ExplodeAar explodeAar)
    GooglePlayServices.ResolverVer1_1.DoResolution (Google.JarResolver.PlayServicesSupport svcSupport, System.String destinationDirectory, Google.JarResolver.OverwriteConfirmation handleOverwriteConfirmation, System.Action resolutionComplete)
    GooglePlayServices.PlayServicesResolver.Resolve (System.Action resolutionComplete)
    GooglePlayServices.PlayServicesResolver.AutoResolve ()
    UnityEditor.EditorApplication.Internal_CallUpdateFunctions () (at C:/BuildAgent/work/d63dfc6385190b60/artifacts/EditorGenerated/EditorApplication.cs:231)

  122. berke dedi ki:

    Interstitial reklamlarınızın kodlarını harfiyen yaptım ancak oyunumun tam ortasında butona benzer içinde reklamı göster yazan bir kare çıkıyor onun üzerine basınca reklam çıkıyor basmayınca çıkmıyor ve ekranda sabit duruyor basılsada basılmasada ve oyunun ekranında bunun bulunmasını istemiyorum otomatik olarak reklamın belli süre zarfında ekrana gelmesini istiyorum bunun için bir çözümünüz varmıdır,şimdiden teşekkürler.

    • yasirkula dedi ki:

      Ekranda çıkan buton(lar)ı yok etmek için OnGUI fonksiyonunu silebilirsiniz. Belirli aralıklarla otomatik olarak interstitial göstermek için de InvokeRepeating( “CagrilacakFonksiyonAdi”, 5, 5 ) fonksiyonundan faydalanabilirsiniz; verdiğim örnekte CagrilacakFonksiyonAdi() isimli fonksiyon her 5 saniyede bir çağrılmakta. Yalnız oyunun ortasında interstitial reklamlar çıkarırsanız oyuncu kitleniz bundan rahatsızlık duyacaktır. Onun yerine ana menüye dönünce vs. daha kabul edilebilir yerlerde reklam çıkarın derim.

      • berke dedi ki:

        dediğinizi çok kez denedim ama sanırım anlamadım son güncellemenizdeki kodlar çok güzel çalışıyor ancak oyuna girince 2 tane reklam ard arda çıkıyor her öldüğümde 1 saniye geçmeden 2 tane daha çıkıyor dediklerinizi uygulamaya çalıştım ancak yapamadım genel anlamda siz bu örnekleri vermeseniz zaten reklam kodlarını hala anlayabilmiş değilim rica etsem son güncellemedeki singleton reklam scriptinde Interstitial reklamları için InvokeRepeating( “CagrilacakFonksiyonAdi”, 5, 5 ) için küçük bir örnek verebilirmisiniz.Şimdiden teşekkürler.

      • yasirkula dedi ki:

        InvokeRepeating şu tarz kullanılıyor:

        void Start()
        {
        InvokeRepeating(“CagrilacakFonksiyonAdi”,5,5);
        }

        void CagrilacakFonksiyonAdi()
        {
        // bu fonksiyon 5 saniyede bir çağrılmakta
        }

        Peki şu anda reklam çağırmak için nasıl bir kod kullanıyorsunuz?

  123. Mucahit1 dedi ki:

    Senin verdigin kodun satirinda hata veriyor abi

  124. Mucahit dedi ki:

    using UnityEngine;
    using System.Collections;
    using System;
    using GoogleMobileAds.Api;

    public class ReklamScript : MonoBehaviour
    {
    private static ReklamScript instance = null;

    public string bannerID;
    public string interstitialID;

    public bool testMod = false;
    public string testDeviceID;

    private BannerView bannerReklam;
    private InterstitialAd interstitialReklam;

    void Awake()
    {
    if( instance == null )
    {
    instance = this;
    DontDestroyOnLoad( this );
    }
    else if( this != instance )
    {
    Destroy( gameObject );
    return;
    }
    }

    void Start()
    {
    if( this != instance )
    return;

    BannerReklamAl();
    InterstitialReklamAl();
    }

    void BannerReklamAl()
    {
    bannerReklam = new BannerView( bannerID, AdSize.SmartBanner, AdPosition.Bottom );

    AdRequest reklamiAl;
    if( testMod )
    reklamiAl = new AdRequest.Builder().AddTestDevice( AdRequest.TestDeviceSimulator )
    .AddTestDevice( testDeviceID ).Build();
    else
    reklamiAl = new AdRequest.Builder().Build();

    bannerReklam.LoadAd( reklamiAl );
    bannerReklam.Hide();
    }

    void InterstitialReklamAl()
    {
    if( interstitialReklam != null )
    interstitialReklam.Destroy();

    interstitialReklam = new InterstitialAd( interstitialID );
    interstitialReklam.OnAdClosed -= InterstitialDelegate;
    interstitialReklam.OnAdClosed += InterstitialDelegate;

    AdRequest reklamiAl;
    if( testMod )
    reklamiAl = new AdRequest.Builder().AddTestDevice( AdRequest.TestDeviceSimulator )
    .AddTestDevice( testDeviceID ).Build();
    else
    reklamiAl = new AdRequest.Builder().Build();

    interstitialReklam.LoadAd( reklamiAl );
    }

    public void InterstitialDelegate( object sender, EventArgs args )
    {
    InterstitialReklamAl();
    }

    /*void OnGUI()
    {
    if( GUI.Button( new Rect( Screen.width / 2 – 150, 0, 300, 150 ), “Banner Goster” ) )
    ReklamScript.BannerGoster();

    if( GUI.Button( new Rect( Screen.width / 2 – 150, 150, 300, 150 ), “Banner Gizle” ) )
    ReklamScript.BannerGizle();

    if( GUI.Button( new Rect( Screen.width / 2 – 150, 300, 300, 150 ), “Interstitial Goster” ) )
    ReklamScript.InsterstitialGoster();
    }*/

    public static void BannerGoster()
    {
    if( instance == null )
    return;

    if( instance.bannerReklam == null )
    instance.BannerReklamAl();

    instance.bannerReklam.Show();
    }

    public static void BannerGizle()
    {
    if( instance == null )
    return;

    if( instance.bannerReklam == null )
    return;

    instance.bannerReklam.Hide();
    }

    public static void InsterstitialGoster()
    {
    if( instance == null )
    return;

    if( instance.interstitialReklam == null )
    instance.InterstitialReklamAl();

    instance.StopCoroutine( instance.InsterstitialCoroutine() );
    instance.StartCoroutine( instance.InsterstitialCoroutine() );
    }

    IEnumerator InsterstitialCoroutine()
    {
    while( !interstitialReklam.IsLoaded() )
    yield return null;

    interstitialReklam.Show();
    }
    }

    yazdıgım kod bu abi oyunun sonunda
    ReklamScript.InsterstitialGoster();
    geçiş reklamını gösteriyorum ama oyunun ortasında da çıkmaya başladı geçiş reklamları bunu nasıl önleyebilirim

    • yasirkula dedi ki:

      instance.StartCoroutine( instance.InsterstitialCoroutine() ); satırından önce şu satırı eklerseniz artık ReklamScript.InterstitialGoster(); dediğiniz anda reklam çoktan hazırsa ancak o zaman gösterilir, yoksa gösterilmez:

      if( interstitialReklam.IsLoaded() )

      Şu anda, reklam gösterme isteğiniz boşa gitmesin diye InterstitialCoroutine içerisinde reklam yüklenene kadar bekleniyor ve reklam yüklenince otomatik olarak gösteriliyor. Reklamı yüklemek çok uzun sürerse tabi reklam oyunun ortasında gösteriliyor. Üstte dediğim şekilde bu sıkıntıyı çözebilirsiniz ama ben de bir ara kodu bu gibi durumlara karşı daha da iyileştirmeye çalışacağım.

  125. Mucahit1 dedi ki:

    Selamun aleykum abi ben gecis reklamlarini sadece oyunun sonunda cikmasi icin ayarladim ama son zamanlarda oyunun ortasindada cikmaya baslamis az once admobdan mail aldim oyunun ortasinda cikmaya devam ederse hesabimin kapatilicagini soylediler boyle bi kod yazmadigim halde boyle bi olayin olmasi nasil olur veya bunun nasil onune gecebilirim yardimci olabilir misin

  126. ferhan dedi ki:

    Merhaba Yasin bey, bir sorum var yardımcı olabilirseniz sevinirim, aşağıdaki hatayı her build aldığımda görüyorum, nasıl düzeltirim? şimdiden teşekkürler, verdiğiniz bilgiler için ayrıca teşekkürler.

    NullReferenceException: Object reference not set to an instance of an object
    Google.JarResolver.Dependency..ctor (Google.JarResolver.Dependency dependency)

    Google.JarResolver.PlayServicesSupport.ResolveDependencies (Boolean useLatest, System.Collections.Generic.Dictionary`2 dependencyMap, System.String destDirectory, Google.JarResolver.ExplodeAar explodeAar)
    Google.JarResolver.PlayServicesSupport.ResolveDependencies (Boolean useLatest, System.String destDirectory, Google.JarResolver.ExplodeAar explodeAar)
    GooglePlayServices.ResolverVer1_1.DoResolutionNoAndroidPackageChecks (Google.JarResolver.PlayServicesSupport svcSupport, System.String destinationDirectory, Google.JarResolver.OverwriteConfirmation handleOverwriteConfirmation)
    GooglePlayServices.ResolverVer1_1+c__AnonStorey8.m__10 ()
    GooglePlayServices.ResolverVer1_1+c__AnonStorey8+c__AnonStorey9.m__16 (GooglePlayServices.Result updateResult)
    GooglePlayServices.CommandLineDialog+ProgressReporter.Update (GooglePlayServices.CommandLineDialog window)
    GooglePlayServices.CommandLineDialog.Update ()
    System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
    Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
    System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:232)
    System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:249)
    UnityEditor.HostView.Invoke (System.String methodName) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:242)
    UnityEditor.HostView.SendUpdate () (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:307)
    UnityEditor.EditorApplication.Internal_CallUpdateFunctions () (at C:/buildslave/unity/build/artifacts/generated/common/editor/EditorApplicationBindings.gen.cs:197)

    • yasirkula dedi ki:

      Plugini projeden silip pluginin son sürümünü tekrar import edin. Platformun olarak Android’in seçili olduğundan emin olun. Eğer olmazsa SDK Manager’dan güncel bir Android sürümünün SDK’sını kurmayı deneyin. En kötü ihtimalle projedeki diğer Android plugin’lerini (varsa) tek tek silip bir plugin ile çakışma olup olmadığına bakın.

  127. esbi1415 dedi ki:

    yasir ustam ödüllü geciş reklamı ekleme hakkında yardımcı olablirmisin

  128. Sinan Saglam dedi ki:

    Selamun Aleykum kardeşim, Unity 3d ile yeni tanıştım ve 0 dan başlıyorum.Google da unity 3d admob ile ilgili döküman olarak en iyi burası var ve diğer forum vb. sitelerdede kullanıcılar buraya yönlendiriyorlar.Fakat yazı baya eski.Yeni bir döküman hazırlayabilir misin ? Benim gibi 0dan başlayanlar için daha açıklayıcı.Admobda 3 çeşit reklam türü var 3ünü de barındıran bir geniş kapsamlı bir döküman ? Eminim ki bu sadece benim değil çok çok fazla kişinin talebi 🙂

    • yasirkula dedi ki:

      Öneriniz için teşekkür ederim. Zaman zaman kodların çalışmadığı ile ilgili yorumlar geliyor ve bu durumda yazıda anlattıklarımı boş bir projede deneyerek eksik veya değişmesi gereken kısımları güncelliyorum. Yazının çoğu dediğiniz gibi eski ama hâlâ düzgün çalışıyor olması lazım, en azından ben birkaç hafta önce test ettiğimde öyleydi. Ancak anlaşılması çok zor kısımlar varsa oraları daha anlaşılır yapmaya çalışırım elbette.

  129. serhan dedi ki:

    Yasir Admob Reward Video İle İlgili Çalışma Yaparmısın

  130. ahmet dedi ki:

    Hocam Merhaba
    Hocam unity de düşman karakterlerin nerde olduklarını gösteren panel nasıl yapılıyor.Kırmızı olarak üst köşelerde yapılıyor ya nerde oldukları nereye doğru hareket ettiklerini gösteriyorlar.yada konu ne olarak geçiyor bilgilendirme imkanınız varmı teşekkürler.

  131. Fatih Gündüz dedi ki:

    Hocam bilgin varsa ve yardımcı olabilirsen çook makbule geçecek. Firebase ile push notification yapıyorum sorun yok. Ama biliyorsunuz bildirimlerde sadece mesaj gidiyor ve resim görünmüyor. Benim istediğim bildirimle birlikte resim ve url göndermek. Bildirimde resim görünecek ve bildirime tıkladığı zaman linkin gönderdiği adrese gidecek(GooglePlay, browser vs.). Nasıl bir kod yazmalıyım veye Unity’de Firebase ile gönderilen bildirimle gelen değerleri nasıl alabilirim?

    • yasirkula dedi ki:

      Bu konuda hiç tecrübem yok ama notification yollamak konusu çok ilgi çekici bir şey; belki bu konuyu biraz araştırıp sonrasında ders yazabilirim.

  132. KeremD dedi ki:

    Hocam ben ekledim reklamı cok güzel çalışıyor ellerine sağlık fakat interstitial ad ekledim sizin dediginiz son kodu yazmış olmama rağmen yüklenmesi yine uzun neden olabilir yaptigim tek değişiklik gui buton u silip reklam gostermeyi start fonksiyonuna almak bu yuzden mi veya test deviceda oldugumdan mi öyle veya o koddaki object sender a bişey vermem gerekir mi?

    • KeremD dedi ki:

      Yuklenme süresi dedigim o reklam eklediğim sahnenin acilmasindan sonra 4-5 sn falan ama insanlar o shneyi gecerlerse süre bitmeden reklam goruntulenmemis oluyor bense anında gostermesini istiyorum yardım edebilirmisiniz

      • KeremD dedi ki:

        using UnityEngine;
        using System.Collections;
        using System;
        using GoogleMobileAds.Api;

        public class ReklamInterstitial : MonoBehaviour
        {
        private InterstitialAd reklamObjesi;

        void Start()
        {
        YeniReklamAl(null, null);
        StartCoroutine(ReklamiGoster());
        }

        IEnumerator ReklamiGoster()
        {
        while (!reklamObjesi.IsLoaded())
        yield return null;

        reklamObjesi.Show();
        }

        public void YeniReklamAl(object sender, EventArgs args)
        {
        if (reklamObjesi != null)
        reklamObjesi.Destroy();

        reklamObjesi = new InterstitialAd(“…”);
        reklamObjesi.OnAdClosed += YeniReklamAl;

        AdRequest reklamiAl = new AdRequest.Builder()
        .AddTestDevice(AdRequest.TestDeviceSimulator)
        .AddTestDevice(“…”)
        .Build();
        reklamObjesi.LoadAd(reklamiAl);
        }
        }
        Kodum da böyle

      • KeremD dedi ki:

        Ayrıca çok fazla yorum yazmış oluyorum kusura bakmayın ama yeniyim ve merak ediyorum bir de demin yanlışlıkla Android Test device id mi admob reklam id mi vermişim bunları ele geçiren biri bişey yapabilir mi?

      • yasirkula dedi ki:

        İkisini de sildim. Reklam id’niz kötü niyetli birinin eline geçerse bu reklam id’yi kullanarak sürekli reklam çağırıp bu reklamlara tıklayabilir ve hesabınızı banlatabilir. Test device id’nizle bir şey yapılabilir mi onu bilmiyorum.

    • yasirkula dedi ki:

      Reklamın internetten indirilmesi dediğiniz gibi 4-5 saniye sürebilir. En sonda paylaştığım singleton kodu kullanırsanız reklam oyun başlayınca yüklenmeye başlar ve siz kendi kodlarınızda ReklamScript.InterstitialGoster() dediğinizde reklam büyük olasılıkla çoktan yüklenmiş ve göstermeye hazır vaziyette olur.

      Yapmanız gereken şey singleton scripti oyunun ilk sahnesindeki boş bir objeye vermek ve reklam göstermek istediğiniz sahnedeki bir scriptin Start’ında ReklamScript.InterstitialGoster() fonksiyonunu çağırmak.

      • KeremD dedi ki:

        Hocam vallaha ne diyeyim çok sağolun bu reklam sistemini sonra ses sistemini falan hep sayenizde yaptım çok teşekkürler. Fakat bir şey soracağım konuyla alakasız biraz ama yardımcı olursanız sevinirim ben oyunun her ekran çözünürlüğüne uymasını istiyorum Bununla alakalı internette pek fazla içerik bulamadım yani içerikler objelerle alakalı mesela bir butonu anchorlarını ayarlayarak her ekran çözünürlüğüne ayarlamaya dair şeyler var fakat benim ihtiyacım olan 1 şey daha var textin font boyutlarını da her ekran boyutuna göre ayarlamak bunun için şöyle bir yöntem izledim ben unity de 480×800 ekran boyutu kullanıyorum referans olarak yazı boyutu da mesela 36 ise font boyutu (Screen.width / 480)*36 dedim ama maalesef olmadı bununla alakalı araştırma yaptım neden olmadı anlayamadım sizin sitenizde de yoktu galiba Bu konuda açmış olduğunuz bir konu varmı veya yeni bir konu açacakmısınız açmayacaksanız yardımcı olabilirmisiniz? Şimdiden Teşekkürler

      • yasirkula dedi ki:

        Text component’inin “Best Fit” özelliğini açarsanız yazının font boyutu, RectTransform’a sığacak şekilde otomatik olarak ayarlanır. Veya canvas’taki Canvas Scaler’ın “Ui Scale Mode”unu “Scale With Screen Size” yapıp referans çözünürlüğü 480×800 yaparsanız yazı diğer ekran çözünürlüklerinde de aynı şekilde görünür.

  133. Fatih Gündüz dedi ki:

    Project GPM data does not exist. Creating new object.
    UnityEngine.Debug:Log(Object)
    Google.PackageManager.LoggingController:Log(String)
    Google.PackageManager.ProjectManagerController:InflateProjectRecord(String)
    Google.PackageManager.ProjectManagerController:.cctor()
    UnityEditor.EditorAssemblies:ProcessInitializeOnLoadAttributes()

    Hocam Android SDK kurulumdan sonra oyunu build edebiliyorum ama GoogleMobileAds.unitypackage import ettikten sonra bu uyarı / hata düşüyor konsola. İnternetten arattım 3 gün önce biri aynı hatayı almış çözümü söyleyen yok. Tüm günümü buna harcadım. Bilginiz var mı acaba?Saygılar.

  134. emir dedi ki:

    o dediğiniz assest neerede bulamadım ben

  135. Abdullah dedi ki:

    selam. Singleton reklam scriptinizi kullanıyorum. Eğer uygulama çalışırken internet varsa herşey güzel çalışıyor. Ama uygulamayı açtığımda internet yoksa ve oyun esnasında internet açılırsa banner reklam geliyor. İnterstitial yüklenmiyor. Yukarıdaki koda göre ikisi de aynı mantıkla açılması lazım. Bi kontrol edermisiniz?

  136. serhan dedi ki:

    Yasir İntersitial Reklamları Çalışmıyor Son Admob Packagesi ile bi bakabilir misin . Normalde Çalışıyodu Şuan İntersitial Reklam Kodların Çalışmıyor

  137. mdynksgl dedi ki:

    Hocam iyi günler, yazılarınızı takip ediyorum çok faydali bilgiler paylaşıyorsunuz öncelikle bunun için teşekkür ederim,
    ben yaptığım oyuna reklam koydum burdaki scriptten faydalanarak ilk başlarda çalışıyordu denemek içinde bir kere tıkladım reklama bir sıkıntı yok ama şimdi benim telefonumda reklamlar çıkmıyor birkaç telefonda denedim acıldı ama kendi telefonumda reklamları göremiyorum bunun nedeni ne olabilir?

    • yasirkula dedi ki:

      Bu hafta içerisinde scripti kontrol edeceğim. İlginiz için teşekkürler.

    • yasirkula dedi ki:

      Player Settings’te Minimum API Level’ı Android 4.0 yapıp projedeki PlayServicesResolver klasörüne sağ tıkladım ve “Play Services Resolver-Android Resolver-Resolve Client Jars” yolunu izledim. Ardından reklamları Galaxy S3’ümde test ettim ve reklamlar düzgün bir şekilde gözüktü. Singleton scripte ilaveten diğer banner ve interstitial scriptlerini de denedim; onlarda da düzgün çalıştı.

      EDIT: yalnız banner reklamın ilk gözükmesi 10-15 saniye kadar aldı, onu da söyleyeyim.

  138. Anıl dedi ki:

    Hepinize kolay gelsin Unity Ads’yi projeme ekledim fakat buton’a tanımlamayı yaptım kodları yazdım uyarlamaları herşeyi yaptım ama buton’a basınca videoyu açmıyo mesela fonksiyon içinde debug.log var ama console’da da bişey yazdırmıyor ekranda tıklama oluyo.

  139. caner dedi ki:

    merhabalar;
    “google-play-services_lib” konusunda verdiğiniz not2 de sanırım güncelleme ile artık olmuyor. ben de “GoogleMobileAds.unitypackage” ı import ettim ve main camera bölümüne verdiğiniz banner kodu ekledim. apk çıktı almak istediğimde:

    CommandInvokationFailure: Unable to merge android manifests. See the Console for more details.
    C:/Program Files/Java/jdk1.8.0_102\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir=”C:/Users/CANER/AppData/Local/Android/android-sdk\tools” -Dfile.encoding=UTF8 -jar “C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar” –

    stderr[
    Error: [Temp\StagingArea\AndroidManifest-main.xml:12, C:\Users\CANER\Desktop\Unity\New Unity Project 5\Temp\StagingArea\android-libraries\GoogleMobileAdsPlugin\AndroidManifest.xml:2] Main manifest has but library uses minSdkVersion=’14’
    Error: [Temp\StagingArea\AndroidManifest-main.xml:12, C:\Users\CANER\Desktop\Unity\New Unity Project 5\Temp\StagingArea\android-libraries\play-services-ads-10.2.0\AndroidManifest.xml:2] Main manifest has but library uses minSdkVersion=’14’
    Error: [Temp\StagingArea\AndroidManifest-main.xml:12, C:\Users\CANER\Desktop\Unity\New Unity Project 5\Temp\StagingArea\android-libraries\play-services-ads-lite-10.2.0\AndroidManifest.xml:7] Main manifest has but library uses minSdkVersion=’14’
    Error: [Temp\StagingArea\AndroidManifest-main.xml:12, C:\Users\CANER\Desktop\Unity\New Unity Project 5\Temp\StagingArea\android-libraries\play-services-base-10.2.0\AndroidManifest.xml:2] Main manifest has but library uses minSdkVersion=’14’
    Error: [Temp\StagingArea\AndroidManifest-main.xml:12, C:\Users\CANER\Desktop\Unity\New Unity Project 5\Temp\StagingArea\android-libraries\play-services-basement-10.2.0\AndroidManifest.xml:2] Main manifest has but library uses minSdkVersion=’14’
    Error: [Temp\StagingArea\AndroidManifest-main.xml:12, C:\Users\CANER\Desktop\Unity\New Unity Project 5\Temp\StagingArea\android-libraries\play-services-clearcut-10.2.0\AndroidManifest.xml:2] Main manifest has but library uses minSdkVersion=’14’
    Error: [Temp\StagingArea\AndroidManifest-main.xml:12, C:\Users\CANER\Desktop\Unity\New Unity Project 5\Temp\StagingArea\android-libraries\play-services-gass-10.2.0\AndroidManifest.xml:2] Main manifest has but library uses minSdkVersion=’14’
    Error: [Temp\StagingArea\AndroidManifest-main.xml:12, C:\Users\CANER\Desktop\Unity\New Unity Project 5\Temp\StagingArea\android-libraries\play-services-tasks-10.2.0\AndroidManifest.xml:2] Main manifest has but library uses minSdkVersion=’14’
    ]
    stdout[

    ]
    exit code: 1
    UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
    UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
    UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
    UnityEditor.HostView:OnGUI()

    hatası geliyor. yardımcı olabilirseniz çok sevinirim. teşekkürler şimdiden

  140. muhay games dedi ki:

    hocam Interstitial reklam scriptini drek butona atıyorum ama extra görüntü çıkarıyor onu yapmaması için ne yapmam gerekir

  141. Mustafa dedi ki:

    Üstad admod da videolu reklam varmı varsa örnek verebileceğin bir kaynak mevcutmu ??? Şimdiden Tüşekkür ederim…

  142. Volkan dedi ki:

    VR Uygulamalarda nasıl yapacaz bunu peki?

  143. ogmobileumut dedi ki:

    EventArgs olayını çözemedim koddan önce birşey mi yapmam lazım çünkü EventArgs tanımlanamıyor !

  144. Ogün BEKCİ dedi ki:

    Üye olunmak gerekseydi üye olabilirdim okadar diyorum 🙂 Teşekkürler Yasir

    Bu arada bizim Türk’ler paylaşımcı değildi bu kadar cidden şaka yapmıyorum duygulandım tüm samimiyetimle söylüyorum harikasın dostum 🙂

    • Ogün BEKCİ dedi ki:

      “Üye Olunmak” Demişim Pardon Olmak Neye Üye Olmak Derseniz Açıklayayım ;

      Yorum Yazmak İçin Çoğu Blog Vb. Site Üyelik İster Burda Ziyaretçiler Yazabiliyor Bundan Bahsetmek İstedim 🙂

      Uzatmıyorum İyi Çalışmalar 🙂

  145. Mucahit dedi ki:

    Valla abi senin yapin dediklerinden baska bisey yapmadim 😀

  146. Mucahit dedi ki:

    Abi reklam oldu oyunun bi basinda birde sonunda cikiyo reklam ama oyunu kapatana kadar hep ayni reklamlar geliyo reklama tiklasam bile reklam hic degismiyo bi sorun mu bu yoksa bisey olmaz mi bundan bi soriyim dedim

  147. Furkan dedi ki:

    banner kodlamasını yaptım geçiş reklamları çalışıyor fakat attığım bannerları ekranda göremiyorum sistem filan mı değişti baya bi uraştım ama bi türlü olmadı

    using UnityEngine;
    using GoogleMobileAds.Api;

    public class Reklam : MonoBehaviour
    {
    void Start()
    {
    BannerView reklamObjesi = new BannerView(
    “Burayıda doğru yaptım reklam ID sini yapıştırdım”, AdSize.SmartBanner, AdPosition.Bottom );
    AdRequest reklamiAl = new AdRequest.Builder().Build();
    reklamObjesi.LoadAd( reklamiAl );
    }
    }

  148. M hsu dedi ki:

    Merhaba. Unity de tam ekran reklam koyuyorum ölünce. Bunu her 3 ölmede bir falan koymayı nasıl yapabilirim?

  149. Ömer Sina Ceylan dedi ki:

    Abi Merhaba böyle bir hata alıyorum yardım eder misin ?

    • Ömer Sina Ceylan dedi ki:

      Unable to find the Android SDK manager tool. Required Android packages (extra-google-m2repository, extra-android-m2repository) can not be installed. Android SDK path not set. Set the Android SDK property using the Unity “Edit > Preferences > External Tools” menu option on Windows or the “Unity > Preferences > External Tools” menu option on OSX. Alternatively, set the ANDROID_HOME environment variable
      UnityEngine.Debug:LogError(Object)
      GooglePlayServices.ResolverVer1_1:DoResolution(PlayServicesSupport, String, OverwriteConfirmation, Action)
      GooglePlayServices.PlayServicesResolver:Resolve(Action)
      GooglePlayServices.PlayServicesResolver:MenuResolve()

  150. Hasan TANER dedi ki:

    Merhaba, şu hatayı aldım araştırdım ama çözemedim yardımcı olurmusunuz ?

    • Hasan TANER dedi ki:

      Hata şu:

      WARNING: No compatible versions of com.android.support:support-v4 required by (com.android.support:appcompat-v7:23.1.0+, com.google.android.gms:play-services-basement:10.0.1), will try using the latest version 24.0.0
      UnityEngine.Debug:Log(Object)
      Google.JarResolver.PlayServicesSupport:Log(String, Boolean)
      Google.JarResolver.PlayServicesSupport:ResolveDependencies(Boolean)
      GooglePlayServices.ResolverVer1_1:DoResolutionNoAndroidPackageChecks(PlayServicesSupport, String, OverwriteConfirmation)
      GooglePlayServices.c__AnonStorey5:m__8()
      GooglePlayServices.ResolverVer1_1:DoResolution(PlayServicesSupport, String, OverwriteConfirmation, Action)
      GooglePlayServices.PlayServicesResolver:Resolve(Action)
      GooglePlayServices.PlayServicesResolver:AutoResolve()
      UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

      bide bu hatayı alıyorum:

      WARNING: No compatible versions of com.android.support:support-annotations required by (com.android.support:support-v4:23.1.1, com.android.support:support-v4:24.0.0), will try using the latest version 24.0.0
      UnityEngine.Debug:Log(Object)
      Google.JarResolver.PlayServicesSupport:Log(String, Boolean)
      Google.JarResolver.PlayServicesSupport:ResolveDependencies(Boolean)
      GooglePlayServices.ResolverVer1_1:DoResolutionNoAndroidPackageChecks(PlayServicesSupport, String, OverwriteConfirmation)
      GooglePlayServices.c__AnonStorey5:m__8()
      GooglePlayServices.ResolverVer1_1:DoResolution(PlayServicesSupport, String, OverwriteConfirmation, Action)
      GooglePlayServices.PlayServicesResolver:Resolve(Action)
      GooglePlayServices.PlayServicesResolver:AutoResolve()
      UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

      • yasirkula dedi ki:

        İnternette araştırınca çok bir şey bulamadım. Kimisi zararsız diyor kimisi Android SDK’da her şey güncel olmalı ya da eksik kurulmuş şeyler olabilir diyor. Bilemiyorum.

      • Hasan TANER dedi ki:

        Tamam hocam sağolun bende birşey bulamamıştım da pek, bi sorayım dedim. Kolay gelsin

  151. Hasan Taner dedi ki:

    İyi günler, unity admob sdk sını güncelleyip projeme import ettiğimde şu 2 hatayı aldım:

    Assets/PlayServicesResolver/Editor/IResolver.cs(74,27): error CS0433: The imported type `Google.JarResolver.PlayServicesSupport’ is defined multiple times

    Assets/PlayServicesResolver/Editor/PlayServicesResolver.cs(146,56): error CS0433: The imported type `Google.JarResolver.Dependency’ is defined multiple times

    • yasirkula dedi ki:

      PlayServicesResolver.cs diye 2 tane dosya varsa birini silin. Pluginin önceki sürümü duruyorduysa bence önce plugini komple silip öyle yeniden import edin.

      • Hasan TANER dedi ki:

        Plugin’i yeniden import ettim silip şimdide aşşağıdaki yorumda yazdığm hatayı alıyorum.

  152. xboxlive99 dedi ki:

    Abi in app purchase hakkında da bir yazın olur mu? Türkçe kaynak yok iap ile ilgili. Eğer bilginiz varsa reklamları kaldırma ile ilgili bir buton eklemek istiyorum, bunu yapmam için ilk önce satıcı hesabı oluşturmam gerek ancak web sitesi istiyor, web sitesi açmak zorunlu mu?

  153. Furkan dedi ki:

    tamam sorunu çözdüm benim hatammış 🙂 teşekkürler paylaşım için

  154. Yunus_Emre dedi ki:

    **Bende de alttaki hata var.Bütün yorumlara baktım 8 tanesi bunla ilgili ama hepsi google play lib klasörünü atmış bende bu dosya yok. -.- İnternettede araştırdım bulamadım çözebilen arkadaşlar nasıl çözdüğünü anlatırsa hem ben hemde benim gibi mağdur insanlar kurtulmuş olur..

    CommandInvokationFailure: Failed to re-package resources. See the Console for details.
    C:\Users\Winn8\AppData\Local\Android\sdk1\build-tools\25.0.0\aapt.exe package –auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I “C:/Users/Winn8/AppData/Local/Android/sdk1\platforms\android-23\android.jar” -F bin/resources.ap_ –extra-packages com.google.unity

    stderr[
    AndroidManifest.xml:16: error: Error: No resource found that matches the given name (at ‘theme’ with value ‘@style/Theme.IAPTheme’).

    AndroidManifest.xml:18: error: Error: No resource found that matches the given name (at ‘value’ with value ‘@integer/google_play_services_version’).

    ]
    stdout[
    Configurations:
    (default)
    v14
    v21
    ldpi-v4
    hdpi-v4
    xhdpi-v4
    xxhdpi-v4
    xxxhdpi-v4

    Files:
    drawable\app_icon.png
    Src: () res\drawable\app_icon.png
    Src: (ldpi-v4) res\drawable-ldpi\app_icon.png
    Src: (hdpi-v4) res\drawable-hdpi\app_icon.png
    Src: (xhdpi-v4) res\drawable-xhdpi\app_icon.png
    Src: (xxhdpi-v4) res\drawable-xxhdpi\app_icon.png
    Src: (xxxhdpi-v4) res\drawable-xxxhdpi\app_icon.png
    values\strings.xml
    Src: () res\values\strings.xml
    values\styles.xml
    Src: () res\values\styles.xml
    Src: (v14) res\values-v14\styles.xml
    Src: (v21) res\values-v21\styles.xml
    AndroidManifest.xml
    Src: () AndroidManifest.xml

    Resource Dirs:
    Type drawable
    drawable\app_icon.png
    Src: () res\drawable\app_icon.png
    Src: (ldpi-v4) res\drawable-ldpi\app_icon.png
    Src: (hdpi-v4) res\drawable-hdpi\app_icon.png
    Src: (xhdpi-v4) res\drawable-xhdpi\app_icon.png
    Src: (xxhdpi-v4) res\drawable-xxhdpi\app_icon.png
    Src: (xxxhdpi-v4) res\drawable-xxxhdpi\app_icon.png
    Type values
    values\strings.xml
    Src: () res\values\strings.xml
    values\styles.xml
    Src: () res\values\styles.xml
    Src: (v14) res\values-v14\styles.xml
    Src: (v21) res\values-v21\styles.xml
    Including resources from package: C:\Users\Winn8\AppData\Local\Android\sdk1\platforms\android-23\android.jar
    applyFileOverlay for drawable
    applyFileOverlay for layout
    applyFileOverlay for anim
    applyFileOverlay for animator
    applyFileOverlay for interpolator
    applyFileOverlay for transition
    applyFileOverlay for xml
    applyFileOverlay for raw
    applyFileOverlay for color
    applyFileOverlay for menu
    applyFileOverlay for mipmap
    Processing image: res\drawable\app_icon.png
    Processing image: res\drawable-ldpi\app_icon.png
    Processing image: res\drawable-hdpi\app_icon.png
    (processed image res\drawable-ldpi\app_icon.png: 98% size of source)
    Processing image: res\drawable-xhdpi\app_icon.png
    (processed image res\drawable\app_icon.png: 98% size of source)
    Processing image: res\drawable-xxhdpi\app_icon.png
    (processed image res\drawable-hdpi\app_icon.png: 97% size of source)
    Processing image: res\drawable-xxxhdpi\app_icon.png
    (processed image res\drawable-xhdpi\app_icon.png: 97% size of source)
    (processed image res\drawable-xxhdpi\app_icon.png: 97% size of source)
    (processed image res\drawable-xxxhdpi\app_icon.png: 97% size of source)
    (new resource id app_icon from drawable\app_icon.png #generated)
    (new resource id app_icon from ldpi-v4\drawable\app_icon.png #generated)
    (new resource id app_icon from hdpi-v4\drawable\app_icon.png #generated)
    (new resource id app_icon from xhdpi-v4\drawable\app_icon.png #generated)
    (new resource id app_icon from xxhdpi-v4\drawable\app_icon.png #generated)
    (new resource id app_icon from xxxhdpi-v4\drawable\app_icon.png #generated)
    ]
    UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
    UnityEditor.Android.PostProcessAndroidPlayer.Exec (System.String command, System.String args, System.String workingdir, System.String[] progress_strings, Single progress_value, System.String errorMsg)
    UnityEditor.Android.PostProcessAndroidPlayer.CompileResources (System.String stagingArea, System.String packageName, UnityEditor.Android.AndroidLibraries androidLibraries)
    UnityEditor.Android.PostProcessAndroidPlayer.PostProcessInternal (System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry)
    UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry)
    UnityEditor.HostView:OnGUI()

  155. Sukru dedi ki:

    AndroidManifest.xml:17: error: Error: No resource found that matches the given name (at ‘theme’ with value ‘@style/Theme.IAPTheme’).

    AndroidManifest.xml:19: error: Error: No resource found that matches the given name (at ‘value’ with value ‘@integer/google_play_services_version’).

    Böyle bir hata alıyorum hocam bilginiz varmı sadece admob kullanıyorum başka sdk yok

    • Zekeriya dedi ki:

      sil aga onları. bende fayda etmişti

      • Sukru dedi ki:

        hocam öyle bir dosya yokki android manifesttemi sileyim diyorsun

      • Sukru dedi ki:

        .defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:274)
        at SDKMain.main(SDKMain.java:128)

        Android manifestten sildim 2 tane kodu bu seferde böyle hata verdi

    • yasirkula dedi ki:

      Admob ile ilgili hatalara çok fazla şey sebep olabiliyor. Bana böyle bir hata geldiğinde bir kaç kelimesini google’da aratıp önerilen çözüm yollarını deniyorum, başka yolu yok.

  156. Zekeriya dedi ki:

    birde Reklamscriptte olan OnAdClosed tanınmıyor. yerine ne konuluyor biliyor musunuz?

  157. Mehmet Eray dedi ki:

    Hocam Heyzap dersi yapmayı düşünüyor musun?

  158. Muhammet dedi ki:

    şöyle bi hata alıyorum nasıl çözebilirim anlatabilirmisiniz

    Google.JarResolver.ResolutionException: Cannot resolve com.android.support:appcompat-v7:23.1.0+()
    at Google.JarResolver.PlayServicesSupport.ResolveDependencies (Boolean useLatest) [0x00000] in :0
    at GooglePlayServices.ResolverVer1_1.DoResolutionNoAndroidPackageChecks (Google.JarResolver.PlayServicesSupport svcSupport, System.String destinationDirectory, Google.JarResolver.OverwriteConfirmation handleOverwriteConfirmation) [0x00000] in C:\Users\w-8\Desktop\New Unity Project 4\Assets\PlayServicesResolver\Editor\ResolverVer1_1.cs:551
    UnityEngine.Debug:LogError(Object)
    GooglePlayServices.ResolverVer1_1:DoResolutionNoAndroidPackageChecks(PlayServicesSupport, String, OverwriteConfirmation) (at Assets/PlayServicesResolver/Editor/ResolverVer1_1.cs:561)
    GooglePlayServices.c__AnonStorey5:m__8() (at Assets/PlayServicesResolver/Editor/ResolverVer1_1.cs:328)
    GooglePlayServices.ResolverVer1_1:DoResolution(PlayServicesSupport, String, OverwriteConfirmation, Action) (at Assets/PlayServicesResolver/Editor/ResolverVer1_1.cs:377)
    GooglePlayServices.PlayServicesResolver:Resolve(Action) (at Assets/PlayServicesResolver/Editor/PlayServicesResolver.cs:221)
    GooglePlayServices.PlayServicesResolver:AutoResolve() (at Assets/PlayServicesResolver/Editor/PlayServicesResolver.cs:158)
    UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

  159. xboxlive99 dedi ki:

    Selamun Aleyküm. Yine ben abi, kusura bakma çok rahatsız ediyorum seni. Admob hesabında biriken parayı kredi kartına nasıl aktarabiliriz? (Kayıt sözleşmesinde 100 doların üzerinde ise ücret hesabınıza aktarılır yazıyor) 100 doların üzerinde ise bu parayı bir yere aktarmak için ne yapmamız gerek? Kredi kartını nerden giricez yani?

    • yasirkula dedi ki:

      Detayları hatırlamıyorum ama bende önce adres bilgilerimi teyit ettirmem gerekti (web sitesi üzerinde bir uyarı olarak gözüküyordu yanlışım yoksa). Ardından IBAN numaramı girince reklam geliri banka kartıma aktarılmaya başladı.

  160. xboxlive99 dedi ki:

    Tekrar merhaba abi :), bu tam ekran reklamları izleyince mi ücret veriyor yoksa tıklayınca mı? (Yani kullanıcı 5 saniye bekleyip reklamı kapattığı zaman bize ücret veriyorlar mı?

  161. xboxlive99 dedi ki:

    Ben unitypackage’i import ettikten sonra bir hata almaya başladım. Console ekranında değil de direkt bir pencere çıkararak söylüyor. “Unable to find jar in the system path. This tool is required to process Play Services dependencies. Either set JAVA_HOME or add jar to the PATH variable to resolve this error.” Asset’ten google play services – resolve client jar yapınca da bu pencere çıkıyor

  162. Burak dedi ki:

    Maalesef, ……@gmail.com hesabı şu anda AdMob’a kaydolamaz.
    AdMob için, geçerli birer AdSense ve AdWords hesabı gereklidir. Ancak, hesaplarınızdan en az biriyle ilgili bir sorun var.

    AdSense hesabı da oluşturdum ama sorun çözülmedi, ne yapmam gerek?

    • xboxlive99 dedi ki:

      Adwords hesabıda mı oluşturmam gerekli? Oluştururken belli bir bütçe vs. istiyor ama ben reklam vermek istemiyorum, kayıt olduktan sonra reklam vermek zorunda mıyım?

    • yasirkula dedi ki:

      Açıkçası ben böyle bir sıkıntı yaşamadım. Daha önce bir hesabınız Google tarafından uyarı/ban aldıysa belki ondandır, aklıma başka bir şey gelmiyor.

      Bu arada, Admob kullanmak için reklam vermek zorunda değilsiniz. Kayıt sürecini hatırlamıyorum o yüzden bütçe vb. yerleri ne yaptım ya da öyle bir kısım ile hiç karşılaştım mı emin değilim.

  163. cenker07 dedi ki:

    Ses compress load ve rate kalitesini neye göre seçiyoruz halen anlamış değilim https://docs.unity3d.com/Manual/class-AudioClip.html burda çok açık şekilde anlatmış fakat ben yinede emin olamadım 1.5 dk uzunluğundaki müziklerime ve 1 -2 saniyelik ses effektlerine neyi seçmem gerek yardımcı olur musun

    • yasirkula dedi ki:

      Anladığım kadarıyla şöyle:

      Kısa ses efektleri: Decompress On Load – PCM
      Müzikler: Compressed In Memory – Vorbis/MP3

      Diğer ayarları bilmiyorum.

  164. Mehmet Eray dedi ki:

    Hocam merhabalar, reklama tıklandığında bikaç işlem yaptırmak istiyorum. Reklama tıklandığında çalışan bi fonksiyon veya kod satırı var mı acaba?

    • yasirkula dedi ki:

      İnternette biraz bakındım ama açıkçası reklama tıklanınca çalışan bir event bulamadım. Reklam açılınca (OnAdOpened) ve kapanınca (OnAdClosed) çalışan event’ler var ama tıklanınca yok gibi.

      • Mehmet Eray dedi ki:

        Reklama tıklandığında can doldurmak istemiştim ama benzer bir örnek bulamadım malesef. Teşekkür ederim ilgilendiğiniz için.

  165. Yunus dedi ki:

    Yasir Bey Ben de de bu hata var ” Failed to re-package resources. See the Console for details ”

    Hatanın çözümü için google-play-services_lib’i Plugins/Android e atın diyor fakat bende google-play-services_lib yok
    . siz eğer google-play-services_lib yoksa not 2 ye bakın demişsiniz fakat not 2 yi ben yapamadım.

    ” Assets/PlayServicesResolver klasörüne sağ tıklayıp “Google Play Services-Resolve Client Jars” yolunu izleyin”. Buraya kadar yaptım fakat
    “Assets-Plugins-Android yolunu izleyin ve oradaki “firebase-common-9.0.0.aar” dosyasını seçin (bu dosya yoksa “firebase-common-9.0.2” klasörünü seçin) ve Inspector’dan Android’in başındaki işareti kaldırın. ” Bu kısmı yapamadım Assets de Plugins diye bi seçenek yok Project de var Fakat orda da “firebase-common-9.0.0.aar” diye bi şey yok

    Yardımcı olabilirseniz sevinirim

    • Yunus dedi ki:

      Project-Plugins-Android-GoogleMobileAdsPlugin deki İnspectordan Platform olarak androidi kaldırdığımda sorun çözüldü ama reklam görünmüyor neden olabilir

      • Yunus dedi ki:

        Yok çözememişim galiba 😀 Androidd seçeneğini kaldırınca reklam görünmüyor seçince de build olmuyor Yardım edin lütfen hala aynı hata

    • Yunus dedi ki:

      Benim android klosörün içinde firebase diye bi şey yok ne yapabilirim

      • yasirkula dedi ki:

        Pluginin son sürümünü indirdiğinizden emin olup tekrar import edin ve de Build Settings’te Android’in seçili olduğundan emin olun.

    • yasirkula dedi ki:

      Evet artık öyle bir dosya görmüyorum ben de. Ben şu kaynakta yazanı oraya iliştirdim sadece, yoksa bende sadece Resolve Client Jars demek reklamlar için yeterli oluyor: https://groups.google.com/forum/#!topic/google-admob-ads-sdk/djySAXCZ7HE

      Ama nedense ilk reklamlar bende bayağı yavaş gelmişti, beklemiştim bir süre.

      • Yunus dedi ki:

        Dediklerinizi yaptım fakat hala aynı hatayı veriyor sizce android sdk nın önceki versiyonunu yüklesem ve google-play-services_lib dosyası da gelse sorun çözülür mü ve android sdk nın eski versiyonunu yükleyebilir miyim

      • yasirkula dedi ki:

        Konsoldaki hatanın birkaç kelimesini Google’da aratmaktan başka yol düşünemiyorum; kendi bildiğim tüm çözüm yollarını derste listeledim. Belki internette başka bir çözüm yolu vardır.

  166. Ekrem May dedi ki:

    yasir abi bu ilki olmadı bende not2 yi okuyun demissin onu yapmayı denedim ama anlamadım onu not2 nasıl olacak

    • yasirkula dedi ki:

      Build Settings’te Android platformu seçili olmalı. Eğer reklamlar çıkmıyorsa (gerçek bir cihaz üzerinde test edin, Unity editöründe reklamlar asla gözükmez) Resolve Client Jars’lı kısmı yapıp tekrar build alın. Bende böyle yapınca reklamlar gözükmeye başladı.

  167. ibrahim dedi ki:

    IEnumerator ReklamiGoster()
    {
    while( !reklamObjesi.IsLoaded() )
    yield return null;

    reklamObjesi.Show();
    }
    }
    IEnumerator yrine public void kullanılsa ne farkeder sorun olurmu niye IEnumerator kullanılıyor.

    • yasirkula dedi ki:

      yield kullanılan fonksiyon bir coroutine oluyor ve Unity C#’ta coroutine’lerin return type’ı IEnumerator olmak zorunda. Sistem onun üzerine kurulmuş ama tam detaylarını ben de bilmiyorum.

      • Barış dedi ki:

        Amazon app store da oyunumu yayınlamak istiyorum fakat reklam konusu aklıma takıldı. Admob un amazon app store seçeneği yok ben google play seçeneğinden reklam kodumu eklesem hesabım banlanırmı acaba. Veya hiç reklam eklemeden oyunu göndereceğim.

      • yasirkula dedi ki:

        Kimileri Admob’un Amazon üzerinde de çalıştığını söylüyor ama isterseniz Chartboost’a bir şans verebilirsiniz (ben Heyzap mediation ile Chartboost kullanıyorum). Ban yeyip yememe konusunda kesin bilgim yok.

  168. Mehmet Eray dedi ki:

    Merhabalar,
    Öncelikle bu değerli site ve bilgiler için sonsuz teşekkürler. Bir sorum olacak. Google developers hesabı alırken ödeyecegimiz 25doların döviz hesabından mı ödenmesi gerekiyor yoksa tl hesabı da oluyor mu?

  169. bayram dedi ki:

    Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.
    C:\Users\bayram\AppData\Local\Android\android-sdk\build-tools\22.0.1\aapt.exe package –auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I “C:/Users/bayram/AppData/Local/Android/android-sdk\platforms\android-22\android.jar” -F bin/resources.ap_ –extra-packages com.google.unity

    stderr[
    AndroidManifest.xml:16: error: Error: No resource found that matches the given name (at ‘theme’ with value ‘@style/Theme.IAPTheme’).

    AndroidManifest.xml:18: error: Error: No resource found that matches the given name (at ‘value’ with value ‘@integer/google_play_services_version’).

    ]
    stdout[
    Configurations:
    (default)
    ldpi-v4
    hdpi-v4
    xhdpi-v4
    xxhdpi-v4
    xxxhdpi-v4

    Files:
    drawable\app_banner.png
    Src: (xhdpi-v4) res\drawable-xhdpi\app_banner.png
    drawable\app_icon.png
    Src: () res\drawable\app_icon.png
    Src: (ldpi-v4) res\drawable-ldpi\app_icon.png
    Src: (hdpi-v4) res\drawable-hdpi\app_icon.png
    Src: (xhdpi-v4) res\drawable-xhdpi\app_icon.png
    Src: (xxhdpi-v4) res\drawable-xxhdpi\app_icon.png
    Src: (xxxhdpi-v4) res\drawable-xxxhdpi\app_icon.png
    values\strings.xml
    Src: () res\values\strings.xml
    AndroidManifest.xml
    Src: () AndroidManifest.xml

    Resource Dirs:
    Type drawable
    drawable\app_banner.png
    Src: (xhdpi-v4) res\drawable-xhdpi\app_banner.png
    drawable\app_icon.png
    Src: () res\drawable\app_icon.png
    Src: (ldpi-v4) res\drawable-ldpi\app_icon.png
    Src: (hdpi-v4) res\drawable-hdpi\app_icon.png
    Src: (xhdpi-v4) res\drawable-xhdpi\app_icon.png
    Src: (xxhdpi-v4) res\drawable-xxhdpi\app_icon.png
    Src: (xxxhdpi-v4) res\drawable-xxxhdpi\app_icon.png
    Type values
    values\strings.xml
    Src: () res\values\strings.xml
    Including resources from package: C:\Users\bayram\AppData\Local\Android\android-sdk\platforms\android-22\android.jar
    applyFileOverlay for drawable
    applyFileOverlay for layout
    applyFileOverlay for anim
    applyFileOverlay for animator
    applyFileOverlay for interpolator
    applyFileOverlay for transition
    applyFileOverlay for xml
    applyFileOverlay for raw
    applyFileOverlay for color
    applyFileOverlay for menu
    applyFileOverlay for mipmap
    Processing image: res\drawable-xhdpi\app_banner.png
    Processing image: res\drawable\app_icon.png
    Processing image: res\drawable-ldpi\app_icon.png
    Processing image: res\drawable-hdpi\app_icon.png
    (processed image res\drawable-ldpi\app_icon.png: 98% size of source)
    Processing image: res\drawable-xhdpi\app_icon.png
    (processed image res\drawable\app_icon.png: 98% size of source)
    Processing image: res\drawable-xxhdpi\app_icon.png
    (processed image res\drawable-hdpi\app_icon.png: 99% size of source)
    Processing image: res\drawable-xxxhdpi\app_icon.png
    (processed image res\drawable-xhdpi\app_icon.png: 98% size of source)
    (processed image res\drawable-xhdpi\app_banner.png: 93% size of source)
    (processed image res\drawable-xxhdpi\app_icon.png: 98% size of source)
    (processed image res\drawable-xxxhdpi\app_icon.png: 97% size of source)
    (new resource id app_banner from xhdpi-v4\drawable\app_banner.png #generated)
    (new resource id app_icon from drawable\app_icon.png #generated)
    (new resource id app_icon from ldpi-v4\drawable\app_icon.png #generated)
    (new resource id app_icon from hdpi-v4\drawable\app_icon.png #generated)
    (new resource id app_icon from xhdpi-v4\drawable\app_icon.png #generated)
    (new resource id app_icon from xxhdpi-v4\drawable\app_icon.png #generated)
    (new resource id app_icon from xxxhdpi-v4\drawable\app_icon.png #generated)
    ]

    önceki sorunumu hallettim teşekkürler ama budefa da built ederken bu sorunla karşılaşıyorum ne yaptıysam çözemedim önceki yorumlara baktım ama bişe yapamadım yardımcı olursanız sevinirim

    • yasirkula dedi ki:

      Derste verdiğim çözüm yolları dışında bir çözüm yolu bilmiyorum. Bu hatanın ilk birkaç kelimesini aratıp başka çözüm yolları bulmanız lazım.

      • bayram dedi ki:

        plugini silip tekrar import ettim yeni güncellemede olmaya google play services lib dosyasını da eski projelerimden bulup android plugins e atınca sorunum düzeldi reklamlar da sorunsuz çalışıyor teşekkürler

  170. bayram dedi ki:

    Assets/ReklamInterstitial.cs(40,30): error CS1061: Type `GoogleMobileAds.Api.InterstitialAd’ does not contain a definition for `AdClosed’ and no extension method `AdClosed’ of type `GoogleMobileAds.Api.InterstitialAd’ could be found (are you missing a using directive or an assembly reference?)
    unity 5.0 da
    bu hatayı alıyorum
    yardım edebilirmisiniz?

  171. ahmet dedi ki:

    Hocam swipe olayını tam anlamadım.Sensör ile sadece belli iki aralı arasında hareketi sınırlamayı nasıl yapabiliriz. transform.Translate (Input.acceleration.x*Time.deltaTime*10,0,0); sensör le sadece bir eksende hareket ettiriyorum.Bunun sadece +2 VE -2 arasında çalışmasını nasıl yapabilirz.Şimdiden Teşekürler.

  172. İbrahim dedi ki:

    Yasir bey burada YeniReklamAl fonksiyonu bir tek Startta çağırmışsınız.Bu komutun çalışma mantığı nasıl.Koda baktığımda bitek startla çağırılıyor (object sender, EventArgs args)
    gibi şeylerde yazıyor start fonksiyonundan hariç başka nasıl aktif oluyor YeniReklamAl fonksiyonu.

    void Start()
    {
    YeniReklamAl(null, null);
    }
    .
    .
    .
    .
    public void YeniReklamAl(object sender, EventArgs args)
    {
    if (reklamObjesi != null)
    reklamObjesi.Destroy();

    reklamObjesi = new InterstitialAd(“AD unit ID’niz”);
    reklamObjesi.OnAdClosed += YeniReklamAl;

    AdRequest reklamiAl = new AdRequest.Builder().Build();
    reklamObjesi.LoadAd(reklamiAl);
    }

    • yasirkula dedi ki:

      Kullanımı kolay olsun diye o fonksiyonu manual olarak sadece en başta çağırıyorum. Interstitial reklam kullanıcı tarafından kapatıldığında ise otomatik olarak tekrar çağırıyorum (OnAdClosed += YeniReklamAl).

  173. ahmet dedi ki:

    Hocam merhabalar.Bir sorum olacaktı.Unity içine attığım bir objeyi telefonda çalıştırırken ekranda joystick yada butonla değilde elle sağa sola ekranın dışına çıkmayacak şekilde nasıl hareket ettirebilirim.Baktığım kadarıyla swipe diye geçiyor ama nasıl çalışacağını çözemedim.Yardımcı olma imkanınız varmı teşekürler.

    • yasirkula dedi ki:

      Bence en kolay yolu sahnede görünmez bir UI-Image oluşturmak, bu UI’ın tüm ekranı kaplamasını sağlamak (anchor min = (0,0), anchor max = (1,1), üstteki değerlerin hepsi 0), bu Image’a bir Event Trigger verip içine Drag event’i eklemek ve bu event’te kendi yazdığınız bir scriptin şuna benzer bir fonksiyonunu çağırmak:

      public void ParmakSuruklendi( UnityEngine.UI.BaseEventData data )
      {
      Vector2 parmakDelta = ((PointerEventData) data).delta;
      // parmakDelta.x = parmağın yatay eksenindeki delta pozisyonu
      // parmakDelta.y = parmağın dikey eksendeki delta pozisyonu
      }

      Alternatif olarak, şu dersten faydalanarak kendi kodunuzu da yazmaya çalışabilirsiniz: https://yasirkula.com/2013/07/17/unity-ile-androide-uygulama-gelistirmek-1-dokunmatik-ekran-entegrasyonu/

  174. osman dedi ki:

    yasir bey sizi çok önceden beri takip ediyorum.çok iyi paylaşımlarınız var.
    bunu geçen sene uygulamıştım hiç sorunsuz halletmiştim.hatta şuan play storda hala aynı kodları kullanıyorum yalnız şimdi unıty 5,3,5 i kullanıyorum yalnız Bende de lib klasörü yok.Dediklerini yaptım ama Not 2 deki “firebase-common-9.0.2” bunu bulamadım Asset>Plugins>Android burada yok.Ne yapabilirim.oyunu çok rahat buıld edebiliyorum sorunsuz,hatta unıty de reklamlara tıklayabiliyorum bile yani “Dummy LoadAd
    UnityEngine.Debug:Log(Object)” bu uyarıyı veriyor ama build ettikten sonra telefonda reklamlar çıkmıyor…lütfen yardım edebilirmisiniz.

    • yasirkula dedi ki:

      Yakın zamanda kendim deneyip dönüş yapmaya çalışacağım.

    • yasirkula dedi ki:

      PlayServicesResolver klasörüne sağ tıklayıp “Google Play Services-Resolve Client Jars” yolunu izledikten sonra reklamlar bende gözüktü (Build Settings’te Android seçili olmalı). Ancak nedense reklamların gözükmesi yaklaşık 10 saniye kadar sürdü.

  175. İbrahim dedi ki:

    Yasir bey admob reklemının hazır olduğunu anlayabileceğim bir kod varmı tapjoyda reklam hazırsa butonu aktif ediyordum admobdada bunu yapmam mümkünmü.

  176. Halil dedi ki:

    Belirli bir alana objeyi sürükleyip bırakmak istiyorum,o alana gelince obje o alana oturmasını istiyorum nasıl yapabilirim..

  177. Yunus dedi ki:

    Bende de lib klasörü yok.Dediklerini yaptım ama Not 2 deki “firebase-common-9.0.2” bunu bulamadım Asset>Plugins>Android burada yok.Ne yapabilirim.Oyun telefonda açılmıyor..

    • yasirkula dedi ki:

      Plugin son sürüm olduğu sürece dediğiniz klasörün plugin ile gelmesi gerek aslında. “firebase” adını taşıyan başka bir klasör varsa onun üzerinde deneme yapın, yoksa çözümü ben de bilmiyorum.

      • Yunus dedi ki:

        Bende bulamadım ya.Pketi bir daha indirdim ama olmadı.Biraz daha araştırmam gerek.

      • Yunus dedi ki:

        Bi şekilde yaptım.Reklamlarda gözüküyor.Yeni yazılar bekliyoruz… 🙂

    • metehan dedi ki:

      Dostum bi şekilde hallettim demişsin sorunu, nasıl hallettin acaba?

  178. Barış dedi ki:

    Xcode üzerinden hata alıyorum http://i.hizliresim.com/DJ12g1.png
    en üstteki 2 hatayı çözemedim. O 2 hatanın altındakileri üstüne tıklayıp fix-it yaptım
    Use of ‘@import’ when modules are disabled

  179. Barış dedi ki:

    Bana bir mail geldi AdMob’dan, ingilizcem iyi olmadığı için tam anlamadım.Ben sizin verdiğiniz linkteki plugini 1 sene önce indirmiştim halada oyunlarımda onu kullanıyorum.pluginin en son versiyonunu güncellememi mi istiyor benden 1 sene önceki plugin sorun mu çıkarır? bana niye böyle bir mail geldi acaba bu mailden size de geldi mi?

    Upgrade your Android Google Mobile Ads SDK to ensure ads keep serving
    Upgrade to Google Mobile Ads SDK, 7.0.0 or higher

    Hi,
    AdMob is committed to providing you the most effective monetization solutions. As we innovate, it’s important that we leverage the latest technologies to bolster our platform. As part of this movement, we are deprecating versions 6.4.1 and lower of the Android Google Mobile Ads SDK on September 15th, 2016.
    In order to ensure that your ads continue to serve after September 15th, 2016, please upgrade to Google Mobile Ads SDK 7.0.0 or higher.
    The newer Google Mobile Ads SDKs have many more benefits for you:
    Seamless auto-updates. Changes to the Google Mobile Ads SDK for Android get pushed seamlessly to users through Google Play services, so you can focus your time where it matters
    You won’t need to spend time updating your apps with the latest versions of the ads SDK each time it changes
    New features and bug fixes will also reach users through auto-updates
    Better user experiences. Users will find it easier to manage updating their apps as some improvements will automatically be received in the background.
    To upgrade your SDK, add the latest version of play-services (listed under dependencies) in your Gradle Build configuration file. For example, the following added v9.0:
    apply plugin: ‘com.android.application’

    dependencies {
    compile ‘com.google.android.gms:play-services:9.0.2’
    }
    Stay tuned for more updates and tips.
    Cheers,
    The AdMob Team

    • yasirkula dedi ki:

      Admob 7.0.0 öncesini kullanan oyunlarda reklamların 15 Eylül itibari ile verilemeyeceği yazıyor. Bu durum Unity plugini için de geçerli mi orası muamma.

  180. cenker07 dedi ki:

    bu arada o admodtaki event ve delegate olayın amacı özel delegateler varmış onadclosed onadrewarded gibi . ödüllendirdikten sonra şu kadar para kazandınız gibi bir gui çıkartabiliriz eklenen eventte. kodlaki onadclosed’ta eski reklamı silip yeni reklam dolduruyoruz . gerçi bunu biliyosunuzdur 😀

  181. cenker07 dedi ki:

    delegate ve event olayını biliyorum delegate trigger edildiğinde eklenen eventler çalışıyor. sormak istediğim bazen delegate’e sender ve eventargs ekleniyor .bunları işlevini button vs anlatmış nettede bunu unity3d ne olarak kullanılıyor anlamadım ayrıca iki türlü mü eventi ekleme olayı var
    public event ChangedEventHandler Changed; ve delegate += event ayrıca eventargs yerine istediğimiz bişey nasıl koyarız ve niye koyarız mesela

    • yasirkula dedi ki:

      Bu konuda benim de bilgim kısıtlı ancak bildiklerim doğrultusunda konuşacak olursam:

      – bahsettiğiniz sender ve eventargs argümanlarını Admob’da ben de kullanmadım, onları ben de bilmiyorum
      – benim event’e yeni bir fonksiyon eklemek için bildiğim tek yöntem += kullanmak
      – kendi event’inizi tanımlamadığınız sürece eventargs’ı değiştiremezsiniz. Bu event’ler Admob’un kendisinden tanımlı olduğu için de kaynak kodu düzenlemeniz gerekir ki ben hiç bulaşmanızı tavsiye etmem. Kendi event’lerinizde event’e kaydolan fonksiyonların alacakları parametreleri ise delegate’te belirtiyorsunuz

      • cenker07 dedi ki:

        eklenen eventler sırayla mı oluyor https://firebase.google.com/docs/admob/android/games#rewarded_video_mediation
        burda eventleri eklemiş sırayla mı kontrol ediyor

      • yasirkula dedi ki:

        Event’ler sırayla çağrılmıyor. Onun yerine özel bir “eylem” gerçekleştiğinde çağrılıyor. Örneğin OnAdLoaded event’i, reklamın sunucu tarafından indirilmesi başarılı bir şekilde tamamlandığı vakit çalıştırılıyor. OnAdClosed ise reklam gözüktükten sonra kullanıcı çarpıya basarak reklamı kapatınca çağrılıyor (reklam kendi kendine kapanınca da çağrılıyordur herhalde). Yani her reklam event’i çağrılmıyor. Çağrılan event’lerin çağrılma sırası ise büyük olasılıkla verdiğiniz linkte sıralandığı gibidir çünkü mantıken doğru duruyor öyle bir sıralama.

  182. serhan dedi ki:

    Yasir Dediklerini Yaptım Bende Reklam Çıkmıyor. Uygulamayı Yüklerken Reklam İznide İstemiyor Ayrıca

  183. assassinfurkan dedi ki:

    Error Building Player hatası veriyor yorumlarda okudum o dosyayı atınca düzeliyormuş

    • yasirkula dedi ki:

      Şurada yazdığına göre: https://groups.google.com/forum/#!topic/google-admob-ads-sdk/djySAXCZ7HE

      1- Build Settings’ten platform olarak Android’i seçin
      2- Project panelinden PlayServicesResolver klasörüne sağ tıklayıp “Google Play Services-Resolve Client Jars” yolunu izleyin
      3- Bu aşamadan sonra Assets-Plugins-Android klasöründeki firebase-common-9.0.0.aar dosyasını seçin ve Inspector’dan “Platform for Plugins” altındaki “Android”in başındaki işareti kaldırın

      Bu yolu ben denemedim ama siz denedikten sonra olumlu sonuç alıp almadığınızı paylaşırsanız çok güzel olur.

      • furkan dedi ki:

        Oyun build edildi ancak yüklerken internet izni filan istemediği için reklam gözükmedi

      • yasirkula dedi ki:

        Bugün test etme imkanım oldu. İki farklı metod denedim: birinde 3. maddeyi uygulamadım, öbüründe uyguladım. Her iki durumda da reklamlar düzgün gözüktü. Assets/Plugins/Android/GoogleMobileAdsPlugin/AndroidManifest.xml dosyasının içinde şu iki satır zaten olduğu için de internet erişimi konusunda bir sıkıntım olmadı:

        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        

        EDIT: Yalnız şöyle de birşey var ki “Resolve Client Jars” dedikten sonra bende “firebase-common-9.0.0.aar” adında bir dosya oluşmadı, onun yerine “firebase-common-9.0.2” adında bir klasör belirdi (daha önce orada var mıydı onu bilmiyorum). Üçüncü aşamayı bu klasör üzerinden yaptım ben.

      • assassinfurkan dedi ki:

        Failed to re-package resources. See the Console for details.

        CommandInvokationFailure: Failed to re-package resources. See the Console for details.

        Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.

        Google.JarResolver.ResolutionException: Cannot find candidate artifact for com.google.android.gms:play-services-ads:LATEST

        Android deki tiki kaldırmazsam böyle hata veriyor kaldırınca vermiyor işte ama izin filan istemiyor AndroidManifest.xml dosyasıda doğru düzgün açılmıyor bu yüzdne içine bakamıyorum

      • yasirkula dedi ki:

        AndroidManifest’in açılamaması garip geldi. Plugini herşeyiyle silip yeniden indirip ardından yeniden import etmeyi deneyebilirsiniz. Bende böyle bir sıkıntı çıkmadığından aklıma birşey de gelmiyor açıkçası. Çözerseniz buradan da paylaşırsanız çok güzel olur.

  184. Furkan dedi ki:

    sdk managerden Google Play Services indirdim ancakgoogle-play-services-lib adlı bir dosya yok o yüzden hata alıyorum

    • yasirkula dedi ki:

      Evet bende de kaybolmuş. Onu kopyalamadan devam ederseniz ne oluyor peki?

    • assassinfurkan dedi ki:

      Yarin deniycem artik eger duzelirse bildiririm birde bir oneri almak istiyorun android icin oyun yapmak istiyorum ancak bilgim yeterli degil bana acaba onerdigim bir pdf filan var biraz deneyimim varda yetmiyor

  185. Hüseyin dedi ki:

    Merhaba , verdiğiniz script ve adımları takip ettiğimde reklamları ekranda göremiyorum ?
    Script güncel mi ?

    • yasirkula dedi ki:

      İlk bakışta koddaki problemi göremedim. Haftaya daha detaylı bir şekilde bakacağım.

      • Hüseyin dedi ki:

        Teşekkürler, Bu arada oyunlarda reklam gösteriminde nelere dikkat etmeliyiz ?
        Mesela bir banner oyunu etkilemeyecek bir yerde her 10 snde bir değişse destroy edilip tekrar yeni bir reklam çağrılıp baner da gösterilse faydalı mıdır ? Reklam çok gösterildi ama hiç tıklanmadı gibi bir durum oluyor mu merak ettim.

      • yasirkula dedi ki:

        Banner otomatik yenileniyor gibi gözlemledim şimdiye kadar; o yüzden belli aralıklarla Destroy edip tekrar oluşturmadım hiç. Reklam gösterirken en çok dikkat etmeniz gereken şey butonların üzerini örtmemek. Eğer butonlar tepedeyse banner’ı aşağıya, yoksa yukarıya koyun. Her yerde buton varsa banner koymayın. Zaten daha çok interstitial reklama odaklanın, onlar tam ekran olduğu için daha ilgi çekici olabiliyorlar.

        Reklamların tıklanma oranı ise normal şartlarda çok çok az olur, eğer yüksek bir tıklanma yüzdesine sahip olursanız büyük olasılıkla sahtekarlık şüphesiyle hesabınız uyarı alır veya direkt kapatılır.

    • yasirkula dedi ki:

      Bugün en son sürüm ile deneme yaptım ve bende bir sorun çıkmadı. Eğer reklam yerine sadece siyah bir ekran geliyorsa bu bazen bende de oluyor(du), herhalde bulunulan bölgede gösterilecek reklam bulamayınca böyle birşey oluyordur. Ama sonradan düzeliyor sanki çünkü bir süre sonra bana olmamaya başladı.

  186. serhan dedi ki:

    Yasir Kula

    Admob Firebas İle İlgili Bilgi Verebilirmisin , Admoba Firebas Geldi Nedir Tam Olarak

  187. cenker07 dedi ki:

    unity3d ads’ta var ama , video ile para vericem kullanılara rewarded video sistemi var mı admob’ta,

      • Cenker dedi ki:

        Alakasiz ama baska birsey daha sormak istiyorum cok buyuk bir harita yapicaz mesela onlinede olabilir gridlerden olusucak cs2d oyununa bakarsaniz anlarsiniz her gridi gameobject yapmak draw alli artiriyor nasil boyle bir sistem yapilabilir mesela 1000×1000 32pixelli harita ama tamami degil birazi gozukuyo sebilginin terrain serisindr haritayi parcalara bolmus oyle doluyo bujun aynisini 2d olarak yapabilir miyiz .biraz arastirdiktan sonra nette minecraftin sistemiji gordum chunk dedikleri olayi yapiyolar x y ve z boyutlarinda 256x256x256 bir alani hafizaya koyuyor karakter ne tarafa gidiyorsa sadece koca haritadan sadece 1 chunklik yer dolduruyo)ama gameobjecy kullanmalimiyim kod ile mesh olusturmayi bilmiyorum onu mu ogreniyim ne onerirsin

      • yasirkula dedi ki:

        Minecraft’taki sistem için kod ile procedural mesh oluşturmanız gerekebilir, evet.

        2D oyunda draw call’u azaltmak için benim bildiğim yol, sprite’ların Import Settings’inde “Packing Tag”lerini aynı vererek bu sprite’ların batch’lenmesini sağlamak. Bir de shader da çok önemli olabilir. Örneğin Unity’nin UI sisteminde çok fazla sprite kullansanız bile draw call sayısı gerçekten çok az olabiliyor çünkü sprite’ların hangi sırayla çizileceğini orada elle belirliyorsunuz (Hierarchy’de yukarıdan aşağıya doğru). O tarz bir shader da kullanmak isteyebilirsiniz.

  188. Burak dedi ki:

    Test device olarak eklediğimizde yayınlarken bu kodları normale mi çevireceğiz yoksa
    AdRequest reklamiAl = new AdRequest.Builder()
    .AddTestDevice(AdRequest.TestDeviceSimulator)
    .AddTestDevice(“Device ID’niz”)
    .Build();
    bu şekilde mi kalması lazım.Yani google playe bu şekilde koyarsak kazanç
    elde etmemizi engeller mi?

    • yasirkula dedi ki:

      Oyunu sizin telefondan açınca test reklamı çıkmaya devam eder ama diğer cihazlarda normal reklamlar çıkacağı için kazancınızı engellememesi lazım. Bence yine de silin test reklamı şeysini.

  189. bce dedi ki:

    hocam oyunun başında internet erişimi olup olmadığını kontrol eden yoksa bir mesaj yazdırıp oyundan atan bir scripti nasıl yazarım?

  190. bahadır dedi ki:

    Hocam projeyi build etmeye çalışırken konsolda şöyle bir hata alıyorum çözümünü bilen varmı acaba.

    UnityException: Build failure
    Failed to re-package resources. See the Console for details.
    UnityEditor.Android.PostProcessor.CancelPostProcess.AbortBuild (System.String title, System.String message)
    UnityEditor.Android.PostProcessor.CancelPostProcess.AbortBuildPointToConsole (System.String title, System.String message)
    UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
    UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry)
    UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (BuildPostProcessArgs args)
    UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, System.String downloadWebplayerUrl, System.String manualDownloadWebplayerUrl, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:176)
    UnityEditor.HostView:OnGUI()

  191. ahmet dedi ki:

    hocam merhablar kusura bakmayın rahatsız ediyorumda bir sorum olacaktı.Hocam şimdi unity asset store dan alınan herhangi bir model için lisanslarına nasıl ulaşabilirm.Ücretsiz olanlar için değil ücretli modeller için soruyorum.Birde bu ücretli olan modelleri satın aldığımda ne kadar kullanma hakkım var.Üzerinden para kazanacağım uygulamalar içinde kullanma izni varmı.Hocam şimdiden teşekürler.

  192. Barış dedi ki:

    Ben böyle bir asset buldum https://www.assetstore.unity3d.com/en/#!/content/14835
    bu plugin de Windows phone 8 desteği var görünüyor. Bu plugin ile sizin reklam scriptinizi kullansam sizce sorun çıkar mı?(WP için)

  193. onur dedi ki:

    hocam ben Uİ button kulanıyorum buttonuma tıklanınca reklam cıkmasını istiyorum nasıl yapabilirim

  194. bekirozan dedi ki:

    Yaptığım oyunda her level arasında admob reklamı çıksın diyorum. Kod çalışıyor fakat şayet telefon internete kapalı ise devamlı reklam isteği yaptığından dolayı oyun 3-4. levellerden sonra iyice donmaya başlıyor. Oynanmamaya başlıyor donduğu için. Bu sorunu hangi c# kodu ile aşabilirim. Kodu yazabilirmisiniz. Şimdiden yardımınız için teşekkürler.

    • yasirkula dedi ki:

      İnternette şöyle birşey buldum ancak denemedim:

      void Start()
      {
      	if( !CheckForInternetConnection() )
      	{
      		Destroy(this);
      	}
      }
      
      private bool CheckForInternetConnection()
      {
      	System.Net.WebClient client;
      	System.IO.Stream stream;
      	
      	try
      	{
      		client = new System.Net.WebClient();
      		stream = client.OpenRead("http://www.google.com");
      		return true;
      	}
      	catch (ex)
      	{
      		return false;
      	}
      	finally
      	{
      		if(client) { client.Dispose(); }
      		if(stream) { stream.Dispose(); }
      	}
      }
      

      Scripti Admob scripti ile aynı objeye verin.

  195. ahmet enes adlığ dedi ki:

    hocam ben apk ladım telfona yükledim hiç bir sıkıntı çıkmadı google playa yükledikten sonra 4 5 cihaza oyunu indiremedim google play 963 hatası veriyor nasıl çözebilirim.

    not:unity de bu hata var ama build ederken sorun çıkmıyor
    Google.JarResolver.ResolutionException: Cannot find candidate artifact for com.google.android.gms:play-services-ads:LATEST
    at Google.JarResolver.PlayServicesSupport.DependOn (System.String group, System.String artifact, System.String version) [0x00000] in :0
    at AdMobDependencies..cctor () [0x00024] in C:\Users\Enes\Documents\New Unity Project 2\Assets\PlayServicesResolver\Editor\AdMobDependencies.cs:18
    UnityEditor.EditorAssemblies:SetLoadedEditorAssemblies(Assembly[])

    • yasirkula dedi ki:

      Hatayı internette aradığımda iki kişinin “Local Maven repository for Support Libraries” modülünü Android SDK’da kurarak sorunu çözdüğünü gördüm ama kesin bir yöntem mi bilmiyorum.

  196. batıkan dedi ki:

    using UnityEngine;
    using System.Collections;
    using GoogleMobileAds.Api;
    public class Reklam : MonoBehaviour {
    private BannerView reklamObjesi;
    void Start () {
    reklamObjesi = new BannerView (
    “reklam id”, AdSize.SmartBanner, AdPosition.Bottom);
    AdRequest reklamiAl = new AdRequest.Builder ().Build ();
    reklamObjesi.LoadAd (reklamiAl);
    }
    IEnumerator Strt() {
    yield return new WaitForSeconds( 30f );
    reklamObjesi.Hide ();
    reklamObjesi.Destroy ();
    }
    // Usta ben normalde ana menüde reklamın cıkmasını play a basıp 2. sahne acılınca reklamın gitmesini istiyordum lakin hiç bi şekilde başaramadım.Yukarda destroy filan yap demişsiniz yaptım bişeyler olmadı. Olmayınca 30 saniye reklam gözüksün sonra kapansın dedim üstteki kodu yazdım oda olmadı. Nerde yanlış yapıyorum ya ?

    • batıkan dedi ki:

      Bu arada reklam gözüküyor çalışıyor hertürlü ama ben kapanmasını istiyorum her sahnede gözüküyor gitmiyor

    • yasirkula dedi ki:

      Şu fonksiyonu eklemeyi deneyin:

      void OnDestroy()
      {
      if(reklamObjesi != null)
      reklamObjesi.Destroy();
      }

      • batıkan dedi ki:

        Sonunda ya 2 gündür gece gündüz uğraşıyorum şimdi 2. sahneye geçince kapanıyor reklam. Herşeyini bitirdim oyunumun sıra geldi stora a üyelik alıp yüklemeye. Ufak tefek sorunlar var her telefonda butonlar farklı yerlerde gözüküyor bunları düzeltmem lazım tabi önce 🙂
        Bu arada Reklam denemesi çalışmadı bende direkt reklam üzerinden denedim 20 kere gözüktü 1 kere tıklandı diyor umarım bişey olmaz kaç gözükmede banlıyolar acaba ve hep tahmini kazanç 0.01 TL 🙂

  197. fatihblogsite dedi ki:

    failed re-pack ile başlayan sorunun çözümü “sdk menagerdan google service yazan yeri silip yeniden yükleyin ardından uygulamadaki bütün google servisle alakalı dosyaları ve plugins i silin yeniden yükleyin “

  198. fatihblogsite dedi ki:

    Tamamdır,sonunda çözdüm son kodu kullandım.Şimdi deneyeceğim bakalım reklam gösterecek mi
    ilk attığın tam ekran reklam kodunda buton olmasa çok güzel olacaktı 🙂

  199. fatihblogsite dedi ki:

    Bir sorum daha var admobda her uygulama için tek bir ID mi yeterli mi yoksa ayrı ayrı almak zorunda mıyız ??

  200. fatihblogsite dedi ki:

    bir de ilk build ettiğimi telefona attım,orada reklama tıkladım fakat adMob hesabımda hala bir değişme yok

  201. fatihblogsite dedi ki:

    sizin ilk yazdığınız kodu yazdım,(tam ekran olanını) build etti,ikinci kez hem reklamlar çabuk gelsin hem de butonu kaldırmak için olan 2 paylaştığınız kodu yapıştırdım bu sefer failed to repackage hatası aldım

    • yasirkula dedi ki:

      Ben oyunlarımda singleton reklam scriptini kullanıyorum; sizde neden sıkıntı çıkardı bilemedim. İsterseniz plugini silip tekrar import etmeyi ya da “google-play-services_lib” klasörünü kopyalamadan build almayı deneyin.

  202. batuhan dedi ki:

    Bende de failed to repackage resources …hatası veriyor.bu yorumlarda yazan herşeyi deneme rağmen.başka çözen varsa lütfen bu yoruma yazabilir mi?

  203. Emre dedi ki:

    İyi günler dediginz her şeyi yapmama rağmen “unable to convert classes into dex format. see the console for details” hatası alıyorum buildlerken yardımcı olursanız sevinirim

    • yasirkula dedi ki:

      Benim de bilgim burada yazdıklarımla sınırlı. Plugini tekrar import etmenizi öneririm.

      • Emre dedi ki:

        Tekrar importlamak icin ne yapmam gerekir (bu islerde yeniyim kusuruma bakmayin)

      • yasirkula dedi ki:

        Kullandığınız tek plugin Admob ise direkt Plugins klasörünü silin, yoksa oradaki GoogleMobileAds’i silin. Eğer daha ileri gitmek isterseniz reklamla ilgili yazdığınız kodları da commentleyin. Ardından Import seçeneği ile plugini tekrar import edin.

      • Emre dedi ki:

        hocam sorun google_play_services klasöründe fakat ne olduğunu çözemedim android sdkdan bir daha kursam düzelirmi yoksa bildiğiniz bir çözüm yolu varmıdır

      • yasirkula dedi ki:

        Plugini tekrar import ettikten sonra bi “google_play_services” klasörü olmadan build almayı deneyebilirsiniz. Benim bildiğim bir çözüm yolu yok.

      • Kimex dedi ki:

        Öğrendiğim kadarıyla ( bendede öyle oldu ve çalıştı ) son pluginde “google-play-services_lib” klasörünü import etmeye gerek yokmuş. Bunu yapmadığım zaman hem build hatası almadım hemde reklamlar gözüküyordu 😀

  204. Kimex dedi ki:

    Yasir Hocam ben reklamın ana menu ve oyun scene lerinde üstte diğer scene lerde ise altta olmasını istiyorum,bu yüzden scripti

    void BannerReklamAl()
    {
    if (Application.loadedLevel == 0 || Application.loadedLevel == 1)
    {
    Debug.Log(“yukarda”);
    bannerReklam = new BannerView(bannerID, AdSize.SmartBanner, AdPosition.Top);
    }
    else if (Application.loadedLevel == 2)
    {
    Debug.Log(“asagida”);
    bannerReklam = new BannerView(bannerID, AdSize.SmartBanner, AdPosition.Bottom);
    }
    şeklinde düzenledim ama banner reklamı hep üstte çıkıyor.Bu scene göre banner in yer değiştirme işlemini başka nasıl yapabilirim ?

    • Kimex dedi ki:

      Bu arada Admobun fiyatlandırması nasıldı ? Yani 1000 gösterimin bedeli nedir ?

      • yasirkula dedi ki:

        Fiyatlandırma o reklamı veren şirketin ayırdığı bütçeye göre değişiyor(muş). Sabit bir ücret yok. Gösterimden daha ziyade tıklama ile para kazanıyorsunuz.

    • yasirkula dedi ki:

      Banner’ı aşağıya yerleştirmek sizin yaptığınız gibi oluyor. Ben bir hata göremedim. Önceki sahnedeki banner’ı yok etmemiş olabilirsiniz diyeceğim ama her halükarda aşağıda banner gözükmesi lazım (üstteki banner’a ilaveten). Yani bilemedim.

  205. Enes dedi ki:

    Hocam anlattıklarınızı bir bir uygulamadım tam ekran olanları hallettim fakat bannerleri oyun menusune ekledim cameraya unit-id vs. her şey tamam fakat yinede banneri bir türlü göremedim sizce sıkıntı ne olabilir

  206. Kimex dedi ki:

    hakketten ya nasıl çözdün kaç gündür uğraşıyorum çözemedim bir türlü 😦
    “google-play-services_lib” Dosyasının artık kopyalanmasına gerek yokmuş çünkü PlayServicesResolver klasörü gerekli olanları alıyor muş diye duydum doğru mu ?
    Örnek dosya istememin asıl nedeni bu arada birde video çekersiniz belki diyeydi ama onu yazmayı unutmuşum 😀
    Nette araştırdığımda hep AndroidManifest değişikliği yaptırıyorlar bu gerekli mi ? Çünkü onlar eski plugin kullanıyorlardı

    • yasirkula dedi ki:

      “google-play-services_lib” klasörünü kopyalayıp kopyalamayacağımızı ben hâlâ çözemedim. Bazen kopyalamadan da build alabilirken bazen aldığım bir hatayı ancak klasörü kopyalayarak çözebiliyorum.

      AndroidManifest dosyasında bir ayar yapmanız ise gerekmiyor.

  207. hocam herşey tamam hatta scripte debug.log ekledim reklamın çalışıp çalışmadığını kontrol etmek için.

    çıktı alıyorum fakat oyunumda bir türlü reklam açılmıyor. unityden bakıyorum loglarda reklamın çalıştığı yazıyor ama oyuna girdiğim zaman telefondan veya bluestarkdan bir türlü reklamlar gözükmüyor. sorun ne olabilir acaba?

  208. Kimex dedi ki:

    Aslında boş bir proje oluştursanız siz.Sadece 3 buton olacak ,banner göster,banner gizle ve instatial göster butonları ve bu boş projeyi nete yükleseniz.En azından sizde çalışan bir proje ile başlamış olur insanlar,kim bilir belkide biz yanlış yaptığımız için o yüklediğiniz projede reklamlar çalışır

    • yasirkula dedi ki:

      Admob plugini sürekli güncellendiği için ben bir proje yüklesem de bu projede kullandığım pluginin 1 ay sonra tarihi geçmiş olacak. Onun yerine tavsiyem singleton kodunu kullanmanız ve komutları test etmek için de OnGUI fonksiyonundaki comment’leri kaldırmanız.

  209. urnamed322013med32 dedi ki:

    Hocam dediğiniz herşeyi yaptım. İnternetten çeşitli tutorialler izledim ama hala bu hatayı alıyorum: (Assets/Standard Assets/Scripts/Reklam.cs(2,7): error CS0246: The type or namespace name `GoogleMobileAds’ could not be found. Are you missing a using directive or an assembly reference?)

    Kütüphaneyide android klasörüne attım hala böyle lütfen yardımcı olun. İsterseniz burdan olursa teamviewerden herhangi bir yerden olabilir 🙂

    • yasirkula dedi ki:

      C# script kullandığınız halde bu hatayı almanız garip geldi. Normalde Javascript’ten C#’a erişmeye çalışınca bu hata gelir. İsterseniz Reklam.cs scriptini Plugins klasörüne taşımayı veya konsolda başka bir error varsa o hatayı gidermeyi deneyin.

  210. Kimex dedi ki:

    http://i.hizliresim.com/NAW1ka.png
    Merhaba Resimdeki hatayı alıyorum ve 1 haftadır çözemedim bu problemi.Nette baktığımda pek çok kişi bu hatayı almış ve çözdüklerini gördüklerim hep 1,5 yıl önceki Build tools’a dönerek bunu çözmüşler.Bu hatayı alıpda çözebilen var mı ?

    Birde eğer asset store dan mesela https://www.assetstore.unity3d.com/en/#!/search/page=1/sortby=relevance/query=publisher:2256 bu adamın sattığı google admob assetini satın alırsam yukardaki sorunla karşılaşmam mümkün mü ?

    Aldığımız bir assette sorun çıkarsa para iadesi oluyor mu ?

    Yardımlarınız için şimdiden teşekkürler.Bir tek bu admob eklemesi kaldı onuda bir türlü çözemedim 😦

    • yasirkula dedi ki:

      Hatanın çözümünü bilmiyorum, plugini silip tekrar import etmek belki işe yarar. Asset store’daki pluginler de aynı hataya sebebiyet verebilir, belki sorun pluginde değildir. Asset Store’da para iadesi için plugin sahibiyle iletişime geçip onun onayını almanız lazımmış.

  211. hocam şimdi düzenleme yaptım. bir scene yaptım ve istediğim şey bu scene açılınca interstitial geçiş reklamım açılsın.

  212. hocam merhabalar benim bir sorunum var. ben bir objeye çarptığımda misal objenin tagı “carpma” olsun. ben carpma tagındaki bir objeye çarptığım zaman nasıl geçiş reklamını çıkartabilirim. yeniyim bu konularda kusura bakmayın şimdiden.

  213. Kimex dedi ki:

    verdiğiniz linke tıklayınca verilen uyarı
    Sorry! This content is not available in your country yet.
    We’re working to bring the content you love to more countries as quickly as possible.
    Please check back again soon.

  214. Kimex dedi ki:

    Tekrar iyi günler
    Yukardaki tüm adımları izleyince 2 mesaj yukardaki hatayı alıyordum sürekli ve son SDK güncellemesinden sonra o hatayı vermedi ve düzgün bir biçimde build yapabildim ama şimdide bannerların gelmediğini görüyorum 😦 İşin tuhaf tarafı unity de bannergoster fonksiyonunu atadığım butona her tıkladığımda Dummy ShowBannerView UnityEngine.Debug:Log(Object) uyarısının sayısı sürekli artıyor yani sanıyorum banner çağrılıyor ama niye banner tablette gözükmüyor anlamadım 😦 Tabletim 4,4,2 android sürümü ve sdk daki tüm importları yapıldı ayrıca test sürümünü kullanmıyorum,gerçi bundan olacağınıda sanmıyorum 😦
    NOT: test için device id gösteren program indirdim oda Secure ID , GSF ID ve UUID numaralarını gösteriyor ben hangisini kullancam ?

  215. Kimex dedi ki:

    iyi günler bu admob ve unity ads yi windows phone ( veya universl) ve pc için de uygulamamız mümkün mü ? değilse hangi reklam sistemlerini uygulayabiliriz ?

    • yasirkula dedi ki:

      Hem Admob hem Unity Ads kullandım. İkisinin de Unity pluginleri ne Windows Phone ne de PC destekliyor. Admob’un aslında Windows Phone desteği var ama pluginlerde görmedim henüz bu desteği.

  216. Kimex dedi ki:

    Bu başlığa ek olarak Unity Ads ve dükkan sistemi yapmayı düşünür müsünüz ?

    • yasirkula dedi ki:

      Unity Ads’i kullanmak oldukça basit: http://docs.unity3d.com/Manual/UnityAdsHowTo.html

      In App Purchase sistemini kendim kullanacak olursam dersini paylaşabilirim.

    • Kimex dedi ki:

      Google.JarResolver.ResolutionException: Cannot find candidate artifact for com.google.android.gms:play-services-ads:LATEST
      at Google.JarResolver.PlayServicesSupport.DependOn (System.String group, System.String artifact, System.String version) [0x00000] in :0
      at AdMobDependencies..cctor () [0x00024] in C:\Users\belgelerim\Desktop\Unity Oyunları\Menu Deneme24\Assets\PlayServicesResolver\Editor\AdMobDependencies.cs:18
      UnityEditor.EditorAssemblies:SetLoadedEditorAssemblies(Assembly[])

      Böyle bir hata aldım GoogleMobileAds.unitypackage dosyasını import edince bu ne hatası ?

      • yasirkula dedi ki:

        Şu linkte diyor ki: “Extras/Android Support Repository” ve “Extras/Google Repository”nin son sürümünün yüklü olduğundan emin olun. Ayrıca plugin’in de son sürümünü indirdiğinizden emin olun.

  217. Mehmet dedi ki:

    Herkese Kolay Gelsin bende bugün bitirdim oyunumu. Güzel bir site yararlı bilgiler var.
    Bu arada Reklam olarak en düşük 15 kuruş filan alıyorsun tıklamada. Gösterim ise 1000 gösterimde 4.40 değerlerinde başlıyor. fakat tıklama ve gösterim sayısı doğru orantıya girdikçe bu oran artıyor. Yeni Yaptığım oyunuma Herkezi Beklerim Bir sıkıntı Veya Sorun Yaşarsanız Bildirirseniz sevinirim.)

    https://play.google.com/store/apps/details?id=com.MaybysStudio.AngryOrange&hl=tr

  218. bekter dedi ki:

    using UnityEngine;
    using GoogleMobileAds.Api;

    public class ReklamBanner : MonoBehaviour
    {

    private BannerView reklamObjesi;

    void Start()
    {

    reklamObjesi = new BannerView(
    “**admob id*”, AdSize.SmartBanner, AdPosition.Bottom);
    AdRequest reklamiAl = new AdRequest.Builder()
    .AddTestDevice(AdRequest.TestDeviceSimulator)
    .AddTestDevice(“***Device id’im*”)
    .Build();
    reklamObjesi.LoadAd(reklamiAl);

    }

    public void reklamGizle()
    {

    reklamObjesi.Hide();
    }

    public void reklamGoster()
    {

    reklamObjesi.Show();
    }

    }

    Hocam sadece menülerde reklam gözüksün istiyorum sabahtan beri ne denediysem olmadı. Oyun ekranında kamera scriptinde reklamGizle() fonksiyonunu çağıyırorum fakat olmuyor.if ApplicationLoadedLevelName”” bla bla olanlarda reklam objesini hide yap diyorum gene olmuyor. illa bu her sahnede çıkıyor.

    • yasirkula dedi ki:

      Reklamı çıkaran ReklamBanner scripti bölümler arası geçişlerde yok olduğu için artık o reklamı yok etmeniz mümkün değil (bir nevi memory leak). Bölüm değiştirmeden önce reklamı yok etmeniz gerekiyor.