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 – 23.05.2018: Yazı Admob’un son sürümüne uygun bir şekilde 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. 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.

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 objesi 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
  • 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

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:

1) 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.

2) 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 reklamlar olmakta ama sadece gösterime veya tıklamalara para vermemektedir.

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).

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();

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ğiniz zaman reklamı gizlemeyi, istediğiniz zaman geri getirmeyi göreceksiniz.

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.

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 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( string.IsNullOrEmpty( bannerKimligi ) )
			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( string.IsNullOrEmpty( interstitialKimligi ) )
			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( string.IsNullOrEmpty( rewardedVideoKimligi ) )
			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( string.IsNullOrEmpty( instance.rewardedVideoKimligi ) )
			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. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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?

  7. 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.

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

  9. 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.

  10. 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.

  11. 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.

  12. 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();
        }

  13. 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.

  14. emre dedi ki:

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

    • yasirkula dedi ki:

      Güncel içerikten kastınızı tam anlayamadım. Admob reklamlarında reklamın içeriği sunucu tarafından otomatik olarak sağlanıyor.

  15. 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.

  16. 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 😦

  17. 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.

  18. 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.

  19. 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.

  20. 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.

  21. 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.

  22. 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

  23. 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 🙂

  24. 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.

  25. 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.

  26. ç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 ???

  27. 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.

  28. 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

  29. qwerty dedi ki:

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

  30. 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.

  31. 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.

  32. 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.

  33. 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.

  34. 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)
    ]

  35. 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/

  36. 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?

  37. 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.

  38. 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.

  39. 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.

  40. 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.

  41. herkül dedi ki:

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

  42. 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

  43. 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?

  44. 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.

  45. 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

  46. 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?

    • yasirkula dedi ki:

      O değişken değerini Inspector’dan alıyor. Inspector’dan “Banner Pozisyonu” değişkeninin değerini Bottom yapabilirsiniz.

  47. 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ı.

  48. 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 :/

  49. 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.

  50. 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.

  51. ö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.

  52. ö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

  53. ö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 ?

  54. 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 🙂

  55. 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 🙂

  56. 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ş.

  57. 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.

  58. 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.

  59. FireDream dedi ki:

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

  60. 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.

  61. davut dedi ki:

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

  62. 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?

  63. 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

  64. 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.

  65. 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

  66. 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ı.

  67. Elşan ibrahimov dedi ki:

    Merhaba Unity reklamlarından gelirler nasıl ?

  68. 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.

  69. İ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.

  70. 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).

  71. 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

  72. Ö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.

  73. İ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 :/

  74. 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?

  75. 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);
    }

    }

  76. 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

  77. 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.

  78. 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…

  79. İbrahim dedi ki:

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

  80. İ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.

  81. İ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

  82. 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.

  83. 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

  84. 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?

  85. 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)

  86. 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?

  87. Mucahit1 dedi ki:

    Senin verdigin kodun satirinda hata veriyor abi

  88. 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.

  89. 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

  90. 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.

  91. esbi1415 dedi ki:

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

  92. 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.

  93. serhan dedi ki:

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

  94. 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.

  95. 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.

  96. 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.

  97. 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.

  98. emir dedi ki:

    o dediğiniz assest neerede bulamadım ben

  99. 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?

  100. 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

  101. 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.

  102. 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.

  103. 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

  104. 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

  105. Mustafa dedi ki:

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

  106. Volkan dedi ki:

    VR Uygulamalarda nasıl yapacaz bunu peki?

  107. ogmobileumut dedi ki:

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

  108. 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 🙂

  109. Mucahit dedi ki:

    Valla abi senin yapin dediklerinden baska bisey yapmadim 😀

  110. 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

  111. 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 );
    }
    }

  112. M hsu dedi ki:

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

    • yasirkula dedi ki:

      Şuna benzer bir kod yazabilirsiniz:

      private int olmeSayisi = 0;

      void KarakterOlum()
      {
      olmeSayisi++;
      if( olmeSayisi % 3 == 0 )
      ReklamGoster();
      }

  113. Ö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()

      • hasan taner dedi ki:

        Kardesim yukarda not 2 ye bak aynisini yap zaten anlatilmis orda iyi bak.

  114. 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

  115. 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.

  116. 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?

  117. Furkan dedi ki:

    tamam sorunu çözdüm benim hatammış 🙂 teşekkürler paylaşım için

  118. 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()

  119. 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.

  120. Zekeriya dedi ki:

    birde Reklamscriptte olan OnAdClosed tanınmıyor. yerine ne konuluyor biliyor musunuz?

  121. Mehmet Eray dedi ki:

    Hocam Heyzap dersi yapmayı düşünüyor musun?

  122. 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()

  123. 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ı.

  124. 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ı?

  125. 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

  126. 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.

  127. 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.

  128. 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.

  129. 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.

  130. 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ı.

  131. 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.

  132. 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?

  133. 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

  134. 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?

  135. 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.

  136. İ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).

  137. 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/

  138. 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ü.

  139. İ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ü.

  140. 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..

  141. 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?

  142. 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

  143. 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.

  144. 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 😀

    • cenker07 dedi ki:

      yanlız tek sorun rewarded videoları destroy edemiyoruz

    • yasirkula dedi ki:

      Reklam kapanınca OnAdClosed çağrıldığı için ben kolaylık açısından tam o vakit yeni reklamı sunucudan indirmeyi uygun gördüm. Bu şekilde, yeni bir interstitial reklam gösterme isteği geldiğinde reklam objesi büyük olasılıkla çoktan sunucudan indirilmiş olacak.

  145. 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.

  146. serhan dedi ki:

    Yasir Dediklerini Yaptım Bende Reklam Çıkmıyor. Uygulamayı Yüklerken Reklam İznide İstemiyor Ayrıca

  147. 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.

  148. 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

      • yasirkula dedi ki:

        PDF’den ziyada Unity’nin kendi video derslerini öneririm. Ayrıca Unity forumlarındaki Teaching kısmına da bakabilirsiniz, orada da güzel kaynaklar olabiliyor.

      • assassinfurkan dedi ki:

        Malesef işe yaramıyor

  149. 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ı.

  150. serhan dedi ki:

    Yasir Kula

    Admob Firebas İle İlgili Bilgi Verebilirmisin , Admoba Firebas Geldi Nedir Tam Olarak

  151. 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.

  152. 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.

  153. 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?

  154. 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()

  155. 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.

  156. 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)

  157. onur dedi ki:

    hocam ben Uİ button kulanıyorum buttonuma tıklanınca reklam cıkmasını istiyorum nasıl yapabilirim

  158. 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.

  159. 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.

  160. 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 🙂

  161. 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 “

  162. 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ı 🙂

  163. 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 ??

    • yasirkula dedi ki:

      Kesin bir bilgim yok ancak ayrı ayrı alırsanız her bir uygulamanın reklam istatistiklerini ayrı ayrı görme imkanınız olur.

  164. 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

  165. 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.

  166. 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?

  167. 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 😀

  168. 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.

  169. 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

  170. 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.

  171. 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?

  172. 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.

  173. 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.

  174. 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ış.

  175. 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.

  176. 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.

    • ve bir tane ui menü yaptım bu menüm açıldığı zaman geçiş reklamı görünsün istiyorum onun içinde yazabilirseniz çok sevinirim.

      • yasirkula dedi ki:

        Menüyü ne zaman açıyorsanız o zaman “ReklamScript.InterstitialGoster();” fonksiyonunu çağırabilirsiniz.

    • yasirkula dedi ki:

      Şunun gibi birşey işinize yarayabilir:

      function OnCollisionEnter( temas : Collision )
      {
      if(temas.gameObject.CompareTag( “carpma” ))
      ReklamScript.InterstitialGoster();
      }

  177. 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.

  178. 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 ?

  179. 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.

  180. 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.

  181. 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

  182. 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.

      • bekter dedi ki:

        Anladım hocam, çok teşekkürler. Aslında reklam kullanmak istediğim her sahne için, o sahneye has banner scripti koymam ve o sahneden çıkarken hide demem gerekti. Ve sanırım her sayfada yeni request alıyorum şuan bakalım ne o olacak.

  183. bekter dedi ki:

    Daha öncede buradaki kodlarını kullanmıştım. Bu sefer singletonu gördüm çok sevindim fakat o kodu koyduğum ana ekrana gelince oyun kapanıyo. Sonra singleton kodunu kaldırıp eski sisteme döndüm Bu seferde geçiş reklamının olduğu sahneye gelince kapanıyor. Çok kafam karışık.

  184. ahmet dedi ki:

    Hocam merhabalar;Bir sorum olacaktı:Sahnede olan nesnenin üzerinde ses var ve bu sesin her 5 saniyede bir tekrar çalmasını nasıl yapabilirim.Şimdiden Teşekürler.

    • yasirkula dedi ki:

      Şuna benzer şekilde olabilir:

      private var aSource : AudioSource;
      
      function Start()
      {
      aSource = GetComponent(AudioSource);
      InvokeRepeating(“Tekrarla”,5f,5f);
      }
      
      function Tekrarla()
      {
      aSource.Stop();
      aSource.Play();
      }
      
  185. mahmut dedi ki:

    admobu ekleyince build edemiyorum

    Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.
    C:\Users\OTTOMAN\Desktop\SDK\build-tools\23.0.2\aapt.exe package –auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I “C:/Users/OTTOMAN/Desktop/SDK\platforms\android-23\android.jar” -F bin/resources.ap_ –extra-packages com.google.unity -S “C:\Users\OTTOMAN\Desktop\SADOBAN\Temp\StagingArea\android-libraries\GoogleMobileAdsPlugin\res”

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

    ]
    stdout[
    Configurations:
    (default)

    Files:
    values\version.xml
    Src: () C:\Users\OTTOMAN\Desktop\SADOBAN\Temp\StagingArea\android-libraries\GoogleMobileAdsPlugin\res\values\version.xml
    AndroidManifest.xml
    Src: () AndroidManifest.xml

    Resource Dirs:
    Type values
    values\version.xml
    Src: () C:\Users\OTTOMAN\Desktop\SADOBAN\Temp\StagingArea\android-libraries\GoogleMobileAdsPlugin\res\values\version.xml
    Including resources from package: C:\Users\OTTOMAN\Desktop\SDK\platforms\android-23\android.jar
    applyFileOverlay for drawable
    trying overlaySet Key=app_banner.png
    trying overlaySet Key=app_icon.png
    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: 99% size of source)
    (processed image res\drawable-xxhdpi\app_icon.png: 99% size of source)
    (processed image res\drawable-xxxhdpi\app_icon.png: 99% 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)
    (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)
    ]

    tüm denilenleri yaptım hata bu ve

    CommandInvokationFailure: Failed to re-package resources. See the Console for details.
    C:\Users\OTTOMAN\Desktop\SDK\build-tools\23.0.2\aapt.exe package –auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I “C:/Users/OTTOMAN/Desktop/SDK\platforms\android-23\android.jar” -F bin/resources.ap_ –extra-packages com.google.unity -S “C:\Users\OTTOMAN\Desktop\SADOBAN\Temp\StagingArea\android-libraries\GoogleMobileAdsPlugin\res”

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

    ]
    stdout[
    Configurations:
    (default)

    Files:
    values\version.xml
    Src: () C:\Users\OTTOMAN\Desktop\SADOBAN\Temp\StagingArea\android-libraries\GoogleMobileAdsPlugin\res\values\version.xml
    AndroidManifest.xml
    Src: () AndroidManifest.xml

    Resource Dirs:
    Type values
    values\version.xml
    Src: () C:\Users\OTTOMAN\Desktop\SADOBAN\Temp\StagingArea\android-libraries\GoogleMobileAdsPlugin\res\values\version.xml
    Including resources from package: C:\Users\OTTOMAN\Desktop\SDK\platforms\android-23\android.jar
    applyFileOverlay for drawable
    trying overlaySet Key=app_banner.png
    trying overlaySet Key=app_icon.png
    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: 99% size of source)
    (processed image res\drawable-xxhdpi\app_icon.png: 99% size of source)
    (processed image res\drawable-xxxhdpi\app_icon.png: 99% 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)
    (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()

    build-tools\23.0.2\ siz 20.0 daki zipalign dosyasını kopyalayın demişsiniz yuakrda ben hem onu hem bunu denedim bunun haricinde 5 gün önce GoogleMobileAds 3.0 çıkmış bunda ad.close yok 2.3 versiyonunda var 3.0 versiyonunda onad.close var acaba sorunum nerde olabilir ? şuanda bende 2.3 yüklü güncellemelerle gelen bir problem mi yoksa

    • yasirkula dedi ki:

      Ben de böyle bir hata almıştım. Çözmek için plugin ile gelen dosyaları projeden silip plugini tekrar import ettim (libs ile biten klasörü android sdk’dan kopyala-yapıştır yapmama ise nedense gerek kalmadı).

  186. Barış dedi ki:

    Yasir abi oyunuma güncelleme yapacağım güncelleme yapmak için aynı paket adı olması şart mı? Çünkü paket adını değiştirmezsem oyunum hiçbir şekilde reklam almıyor.Hayatımda ilk defa böyle bir sorun başıma geldi.İnşallah güncelleme yapmak için aynı paket adı olması şartı yoktur google play’in.Şimdiden cevabın için teşekkür ederim.

    • Barış dedi ki:

      Sorunu hallettim google a mail attım.Meğer reklam sunumum devre dışı bırakılmış.Ama tekrar açtılar

  187. Alper dedi ki:

    Merhaba ben projeme GoogleMobileAds.unitypackage paketini importladım ve şöyle bir hata çıktı henüz reklam eklemedim bu hata bir sıkıntı yaşatırmı, çözümü nedir ?

    Google.JarResolver.ResolutionException: Cannot find candidate artifact for com.android.support:appcompat-v7:23.1.0+
    at Google.JarResolver.PlayServicesSupport.DependOn (System.String group, System.String artifact, System.String version) [0x00000] in :0
    at AdMobDependencies..cctor () [0x00039] in D:\RunnerProject\Assets\PlayServicesResolver\Editor\AdMobDependencies.cs:21
    UnityEditor.EditorAssemblies:SetLoadedEditorAssemblies(Assembly[])

    • yasirkula dedi ki:

      Daha önce karşılaşmadığım bir hata; internette de garip bir şekilde benzer bir hata görmedim. Eğer hataya rağmen oyunu çalıştırabiliyorsanız hatayı görmezden gelmeyi deneyin.

  188. Barış dedi ki:

    Singleton Reklam Scripti kullanmadan uygulamama banner reklam ekledim. İlk bölüme ve oyunun diğer bölümlerine ekledim reklamı ama menüye eklemedim.Menüye eklemediğim halde reklam menüde de gösteriliyor. Reklam bazı butonların üzerini kaplıyor. Bu yüzden reklam sunumum devre dışı bırakılmış.Bana bir mail geldi. Gelen mailin bir kısmı şu şekilde

    Violation explanation

    ADS AND CONTENT OVERLAP: As stated in our program policies, publishers are not permitted to alter the behavior of AdMob ads in any way. This includes placing ads so that they cover any part of the application content or parts of an application covering any portion of the ads. If your app has drop-down menus they are not permitted to cover AdMob ads.

    Ben şimdi yeni reklam oluşturcam. Ama bu reklamların sahne arası geçişlerde yok olmasını nasıl sağlarım? Oda olmadı Tam ekran reklam kullanıcam.

  189. Mehmet KAYA dedi ki:

    Resimler gözükmüyor hocam yenileyebilirsen çok sevinirim

    • yasirkula dedi ki:

      Firefox veya Internet Explorer ile girince gözüküyor bende; eğer sorunu çözebilirseniz nasıl yaptığınızı paylaşmanız güzel olur.

  190. yakup dedi ki:

    Bir sahnede her 4 geçişte bir tam ekran reklam açılsın istiyorum bunu nasıl yapabilirim?Mesela ana oyun sahnesinden restart menusüne 4 kere geçiş yapıldığında 4. de tam ekran reklam açılsın.

  191. ekrem dedi ki:

    Gencler merhaba hepinize ilk paralı oyunumu yayınladım destek verirseniz sevinirim birde söyle duydum ben avea wodafone turkcell ilk oyun yada program satın alan kişi ücretsiz oluyormuş oyle duydum ben bilmiyorum destek verirseniz memnun olurum

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

  192. ekrem dedi ki:

    yasir kardeşim aynısı yapıyorum ama reklam cıkmıyor butonlu olarak yapıyorum butona basıncada cıkmıyor neden acaba biliyormusun

    • yasirkula dedi ki:

      Android SDK’nın ve Unity plugininin en son sürüm olmasına dikkat edin. Plugindeki herşeyi import edin. Ad unit ID’yi kopyalarken “ca-app-pub”lu kısmı da kopyalamayı unutmayın. Singleton kodunu kullanmayı deneyin. Oyunu Unity editörde çalıştırırken konsolda “Dummy Ad Loaded” gibi mesajlar çıkıp çıkmadığını kontrol edin (çıkması lazım); run-time error olmamasına da dikkat edin.

  193. elaslan dedi ki:

    destekleriniz için teşekkür ederim.
    Sonunda reklam ekleyebildim.
    https://play.google.com/store/apps/details?id=com.elaslan.zipla

  194. zeroxali dedi ki:

    yasirkula maalesef konunda sadece javadan javaya ve cs den cs ye yazıyor.Hiçbir yolu yokmu bunun.cs scriptten java scripte tanımlamanın?Yada admobun verdiği scriptler hepsi cs mi niye java yok.Lütfen yardımcı ol!!!

    • yasirkula dedi ki:

      Önce ReklamScript’i Plugins klasörü içine taşımayı deneyin. Eğer hata verirse scripti Javascript’e çevirin, başka bir yolu yok. C# scripti Javascript’e çevirmek için attığım linke bakabilirsiniz.

  195. Ali dedi ki:

    Kardeşim scriptler iyi hoşta tam ekran olsun banner olsun bunlar hep cs sicript benim oyun full java sicriptle yazıldı.Ben şimdi karakter objeye çaptığında tam sayfa reklamın gelmesini istiyorum nasıl olacak bu iş.java sicriptten cs sicripte GetComponent komutunu kullanamıyorum.Nasıl uyarlayabilirim yardımcı olurmusun?

    • Sedat dedi ki:

      yoksa benim sorun da bundan mı 🙂
      hocam interstitial i koymak istediğim yer aynı klasörde bulunan playbutton js dosyası, ve başlangıcı da şöyle, ama kodda dediğim gibi hata veriyor.. ama leadbolt a ait başka adcontrol.cs dosyasını çağırınca sorun yapmıyor

      private var musicOnText : Texture;
      private var musicOffText : Texture;
      private var texSoundOn : Texture;
      private var texSoundOff : Texture;

      function onModuleFailedEvent()
      {
      loadDisplayAd();
      }

      function loadDisplayAd()
      {

      //Interstitial ads
      ReklamScript.InsterstitialGoster();

      }

    • yasirkula dedi ki:

      C#’tan Javascript’e geçiş yapmak için şu ders işinize yarayabilir: https://yasirkula.com/2013/08/21/unityde-javascript-unityscript-ile-cin-birbirinden-farklari/

      • Sedat dedi ki:

        benim interstitial ads ı göstermesi gereken dosya “pragma strict” imiş. nasıl uyarlayabiliriz?

      • yasirkula dedi ki:

        pragma strict satırı scriptte türü belli olmayan değişken tanımlamayı engellemeye yarar. Yani reklam scriptine herhangi bir etkisi olmaması lazım.

  196. Sedat dedi ki:

    hocam satın olduğum bir oyunda leadbolt ads var, ve admob eski sürüm.. interstittial ads yok, eklemeye çalışıyorum, başlangıç js dosyasında leadbolt dan gösterme kodu var oraya sizin örneğinizi veya orjinal google unity örneğini koysam da
    “Assets/Scripts/PlayButton.js(41,17): BCE0005: Unknown identifier: ‘GoogleMobileAdsDemoScript’.”
    hatası veriyor.. nasıl çözerim size?

    • yasirkula dedi ki:

      GoogleMobileAdsDemoScript adında bir script yok diyor hatada. Eğer öyle bir script varsa o scripti Plugins klasörüne koymayı deneyebilirsiniz.

      • Sedat dedi ki:

        o zaman da “Assets/Plugins/GoogleMobileAdsDemoScript.cs(3,7): error CS0246: The type or namespace name `GoogleMobileAds’ could not be found. Are you missing a using directive or an assembly reference?”
        diyor..

      • yasirkula dedi ki:

        Bu hatayı veren tüm scriptleri Plugins’e taşıyın diycem ama o zaman da çok fazla script taşımak zorunda kalabilirsiniz. Sanırım en iyi yöntem ilk başta hata veren başlangıç js dosyasını Editor isimli klasörün içine taşımak.

  197. ahmet dedi ki:

    merhabalar kolay gelsin. Bir sorum olacaktı.Unity uygulama içinde kamera nasıl açabiliriz(cihaz kamerası direk açılsın)

  198. Volkan dedi ki:

    ya admob’un eski sürümünü yükledim IAP hatası yüzünden ama bu seferde banner çıkmıyo interstitial’i başlatınca oyundan atıyo internette aradım bi türlü çözemedim sorunu

    • yasirkula dedi ki:

      Admob plugini ile gelen herşeyi import ederseniz IAP hatası almamanız lazım. Ben 1 hafta kadar önce bir build almıştım ve sıkıntı çıkmamıştı.

      • Volkan dedi ki:

        admob ile gelen başka neler var ki??

      • yasirkula dedi ki:

        unitypackage’ın içinde neler geliyorsa onlar var. Bir de Android SDK’nın olduğu yerdeki google-play-services_lib klasörü var.

      • Volkan dedi ki:

        IAPTheme ve Interstitial reklamda çökme sorunu çözüldü benim gibi sorun yaşayanlar olduysa:

        Assets\GooglePlayGames\Editor\BackgroundResolution.cs’ye girip

        private static void AddDependencies() fonksiyonun içine bu kodu eklesinler

        svcSupport.DependOn(“com.google.android.gms”,”play-services-ads”,PluginVersion.PlayServicesVersionConstraint);

        admin işine yararsa konuna ekleyebilirsin.

  199. Murat dedi ki:

    Merhaba
    Çok detaylı çok güzel bir anlatım olmuş teşekkürler.
    Adobe flash ile as3 kodları kullanılarak yapılan bir android oyun yada uygulamanın içine admob reklam ekleme konusunda bilginiz varmı ? bizimle paylaşırmısınız ?
    teşekkürler…

  200. atlok dedi ki:

    Hocam sanki, banner codeu her kodu eklediğimiz scenee gittiğimizde üzerine yeniden banner ekliyor gibi çalışmıyor mu? Diyelim ki ilk sayfanın kamerasına koyduk bu kodu ve applicationı ilk açtığımzıda bu banner reklamı çıktı. Sanki başka bir scenee gidip tekrar ilk sayfaya döndüğümüzde aynı reklamı silmeden, üzerine yeni bir reklam bannerı atıyor gibime geldi.

    Ben sadece interstitial reklamı eklemek istiyorum. Kullanıcı her yanlış cevap verdikten sonra yani score penceresinden önce interstitial reklamı göstermek istiyorum. Aşağıya kodun ilgili bölümünü kopyalıyorum, vaktiniz olduğunda da incelemenizi rica ediyorum. Banner kodlarım çalışıyor ama bir türlü bunu çalıştıramadım.

    using UnityEngine;
    using UnityEngine.UI;
    using System.Text;
    using System.Xml;
    using System.Collections;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Xml.Serialization;
    using System.IO;
    using GoogleMobileAds;
    using GoogleMobileAds.Api;

    public class responder : MonoBehaviour
    {
    private InterstitialAd interstitial;

    private int gecis;

    public Text questionsorular;
    public Text responseA;
    public Text responseB;
    public Text responseC;
    public Text responseD;
    public Text infoResponses;
    public Text infoResponses1;
    public Text example;
    public Text dogrusayisi;

    private float corrects;
    private float questoesquestions;
    private float media;
    private int Notice;
    }

    void Start()
    {
    RequestInterstitial();
    }

    public void response(string alternative)
    {

    RequestInterstitial();

    if (alternative == “A”)
    {
    if (responseA.text == infoResponses.text)
    {
    corrects += 1;
    nextQuestion();
    }
    else
    {
    Invoke(“wrong”, 1);
    }
    }

    else if (alternative == “B”)
    {
    if (responseB.text == infoResponses.text)
    {
    corrects += 1;
    nextQuestion();
    }
    else
    {
    Invoke(“wrong”, 1);
    }
    }

    else if (alternative == “C”)
    {
    if (responseC.text == infoResponses.text)
    {
    corrects += 1;
    nextQuestion();
    }
    else
    {
    Invoke(“wrong”, 1);
    }
    }

    else if (alternative == “D”)
    {
    if (responseD.text == infoResponses.text)
    {
    corrects += 1;
    nextQuestion();
    }
    else
    {
    Invoke(“wrong”, 1);
    }
    }
    }

    void wrong()
    {
    ShowInterstitial();
    Application.LoadLevel(“Notice”);
    }

    private void RequestInterstitial()
    {
    #if UNITY_EDITOR
    string adUnitId = “unused”;
    #elif UNITY_ANDROID
    string adUnitId = “MY ADS ID”;
    #elif UNITY_IPHONE
    string adUnitId = “INSERT_IOS_INTERSTITIAL_AD_UNIT_ID_HERE”;
    #else
    string adUnitId = “unexpected_platform”;
    #endif

    // Create an interstitial.
    interstitial = new InterstitialAd(adUnitId);
    // Load an interstitial ad.
    interstitial.LoadAd(createAdRequest());
    }

    private AdRequest createAdRequest()
    {
    return new AdRequest.Builder()
    .AddTestDevice(AdRequest.TestDeviceSimulator)
    .AddTestDevice(“0123456789ABCDEF0123456789ABCDEF”)
    .AddKeyword(“game”)
    .SetGender(Gender.Male)
    .SetBirthday(new DateTime(1985, 1, 1))
    .TagForChildDirectedTreatment(false)
    .AddExtra(“color_bg”, “9B30FF”)
    .Build();
    }

    private void ShowInterstitial()
    {
    if (interstitial.IsLoaded())
    {
    interstitial.Show();
    }
    }

    • yasirkula dedi ki:

      Tepede hep banner olacaksa sadece ilk sahnede banner çağırın. İlla öteki sahnelerde de banner çağıracaksanız sahne değiştirmeden önce mevcut banner’ı Destroy edin.

      Interstitial’ın AdClosed event’ine bir fonksiyon verin (benim örnek kodumda var) ve bu fonksiyonun içine sadece Application.LoadLevel(“Novice”); yazın. wrong()’daki kodu ise şöyle yapın:

      if (interstitial.IsLoaded()) {
      interstitial.Show();
      }
      else {
      Application.LoadLevel(“Novice”);
      }

  201. Volkan dedi ki:

    Yeni Android oyunumu yayınladım. Destek için oyunu indirebilirsiniz. Teşekkürler

    https://play.google.com/store/apps/details?id=com.WOLKY.SwingJumper

  202. Paylaşımlarınız için teşekkürler Yasin Bey, Sizin sayenizde ben de ilk uygulamama tam boy reklam ekleyerek Google Play’ de yayınladım.
    Destek için indirip oynayabilirsiniz 🙂 Umarım beğenirsiniz.

    https://play.google.com/store/apps/details?id=com.bagames.Bigbang3D.Labyrinth&hl=tr

  203. YusufOz dedi ki:

    Yasir hocam merhaba. İnterstital reklamda oynama yabtim kismen. Bir button a atadim scripti method olarak. Simdi hocam reklam butonu surekli akrif ama ben eger rekkam yuklenmiş ise aktif etmek istiyorum. O yuzden nasil kontrol edebilirim reklamin yuklenmis oldugunu veya henuz olmadigini.

  204. Volkan dedi ki:

    reklam scriptlerini koydum ama reklamlar çıkmıyo banner fln interstital da ise göster diyorum reklam gözükmüyo sadece çarpı işareti var napmam lazım?? bide şunu sormam gerekiyor interstitial’ı ben game over sahnesine butonsuz yapıcam ama her yüklendiğinde değil 2 defa da bir yani 1.de açılacak 2. de açılmicak 3. de açılcak 4. de açılmicak bunu nasıl yapabilirim ben beginner bide.

    • enescetin1903 dedi ki:

      Reklam gorunmemesini bi kontrol et. Aşamaları gözden geçir.Olması tekrar kur.

      2de 1 reklam çıkma olayını İF ile yapabilirsin.

      Oyunun gameover olma fonksiyonun içine İF koyacaksın.

      Örnek;

      Public static int reklam=0;

      Public void GameOver() {
      reklam++;
      İF(reklam==1){
      Reklam gösterme kodunu buraya yaz.
      }
      Else İF(reklam==2){
      reklam=0;
      }

      }

      Yukarıda ki şekilde 1.3.5.7….. Tek sayılı şekilde reklam gösterirsin.

      • Volkan dedi ki:

        ben şöyle bişey yazdım ama 1 kere arttırıyo daha artırmıyo yani 1 oluyo 2 olmuyo

        void Update()
        {
        if (Input.GetMouseButtonDown (0)) {
        defa+=1;
        PlayerPrefs.SetInt(“defa”, defa);
        YeniReklamAl( null, null );
        }
        else if (defa % 2 == 0) {
        StartCoroutine (ReklamiGoster ());
        }
        Debug.Log (PlayerPrefs.GetInt(“defa”));
        }
        ayrıca bu startcoroutine olduğu için başka scriptte gösteremiyorum. reklaminterstitial’ın içinde göstersem daha iyi olcak playerprefs ile sayıyı kaydediyorum çünkü diğer sahneye geçince yine sıfılanıyo ama 1 olunca daha başka arttırmıyo

      • Volkan dedi ki:

        yazdığını denedim ama olmadı arttırmıyo benimkinde olduğu gibi diğer sahneye geçtiği için

    • yasirkula dedi ki:

      static bir boolean’ınız olur. Game over olduğu vakit bu boolean’ın değeri true ise InterstitialGoster fonksiyonu çağrılır ve boolean false yapılır. Yok eğer game over olduğunda boolean’ın değeri false idiyse o zaman sadece boolean’ın değeri true yapılır, InterstitialGoster fonksiyonu çağrılmaz.

      Reklamların niye bozuk gözüktüğüyle ilgili bir bilgim yok, bende şimdiye kadar hep düzgündü.

      EDIT: Üstteki yorumdaki kodu biraz düzenleyecek olursam:

      void Update()
      {
      	if (Input.GetMouseButtonDown (0)) 
      	{
      		PlayerPrefs.SetInt("defa", PlayerPrefs.GetInt("defa") + 1);
      		YeniReklamAl( null, null );
      		
      		if (PlayerPrefs.GetInt("defa") % 2 == 0) 
      		{
      			StartCoroutine (ReklamiGoster ());
      		}
      		
      		Debug.Log (PlayerPrefs.GetInt("defa"));
      	}
      }
      
      • Volkan dedi ki:

        bu kodun yanına static boolean eklemem mi gerekiyor? ayrıca orda ki update’i start yaptım çünkü bi kere çalışacağı için update olursa sürekli yükseltir.

      • yasirkula dedi ki:

        Bu boolean’lı yöntem değil. Sizin kodunuzu elledim biraz sadece. Fonksiyon Update olmak zorunda yoksa GetMouseButtonDown(0) işinize yaramaz.

      • Volkan dedi ki:

        yok ben gameover ekranı yüklenirken istiyorum 2. defa yüklendiğinde reklam çıkacak butonu ben denemek için yapmıştım yükseltiyo mu diye

      • yasirkula dedi ki:

        Game over’ı tetikleyen olay çalışınca eğer statikBooleanDegisken’in (static var statikBooleanDegisken : boolean = false;) değeri true ise reklamı gösterip statikBooleanDegisken’ı false yapın; yoksa sadece statikBooleanDegisken’ı true yapmakla yetinin.

      • Volkan dedi ki:

        ya şimdi de bu hatayı veriyor çıkartırken nedir bu??

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

      • yasirkula dedi ki:

        Derste yazdıklarımı harfi harfine yaptıysanız sebebini ben de bilmiyorum.

      • Volkan dedi ki:

        şu hatayı veriyo daha önceki mesajımda da belirttim build ederken. AndroidManifest.xml:16: error: Error: No resource found that matches the given name (at ‘theme’ with value ‘@style/Theme.IAPTheme’).

      • yasirkula dedi ki:

        Ben derste yazan herşeyi aynen yapınca hiç hata almadım, bu yüzden bu hatanın sebebini bilmiyorum.

      • Volkan dedi ki:

        o yazdığınız kod işe yaramadı. bastıktan sonra tekrar ölüyorum ve bakıyorum ama hala 0 ve sanırım bastığımda da reklam çıkıyor.

      • yasirkula dedi ki:

        SetInt fonksiyonundan sonra PlayerPrefs.Save() yapabilirsiniz.

      • Volkan dedi ki:

        debug logda görünüyo çıkıyo ama butona basınca oyun durduruldu diyo ve hala şu IAPTheme sorununu çözemedim debug.logda reklamlar çıkıyor görünyor show ve hide diye ama telefonda görünmüyo

  205. ahmet dedi ki:

    Ben bilgisayarda ki butonlar sayesinde harelet ettirdiğim (yürümesi ve koşması)olan karekterin kodlamasını oluşturduğum buton kodlamasına nasıl dahil edip karekteri hareket ettirebilirim. Yardımlarınız için şimdiden teşekürler

    • yasirkula dedi ki:

      TouchButtonCheck fonksiyonunun olduğu scriptteki Update fonksiyonunu LateUpdate’e çevirin. Ardından karakter scriptini düzenleyin:

      function MoveUp() { v = 1.0; }
      function MoveDown() { v = -1.0; }
      function MoveLeft() { h = -1.0; }
      function MoveRight() { h = 1.0; }

      function Update()
      {
      h = 0.0;
      v = 0.0;
      Sprinting();
      }

      Kodda eskiden var olan Update fonksiyonundan kurtulun.

      • ahmet dedi ki:

        Tam olarak nasıl olduğunu anlayamadım.Denedim ama olmadı.Biraz daha açıklama imkanınız varmı acaba. Yardımınız için teşekürler.Yapmak istediğim dokunmatik ekrana çizdirdiğim butonlarla Karekterin yürümesini sağlamak.

      • yasirkula dedi ki:

        Bir scriptte TouchButtonCheck fonksiyonu var. O scripti bir şekilde bulacaksınız (CTRL+F?). Orada Update fonksiyonu var. Artık o fonksiyonun adı LateUpdate olacak.

        Karakter scriptinde de Update fonksiyonu var. Buradaki Update fonksiyonunu sileceksiniz. Ardından önceki yorumumda yazdığım birkaç satır kodu kopyalayıp karakter scriptinin sonuna yapıştıracaksınız.

  206. ahmet dedi ki:

    Ben bunu dokunmatik ekranda yapmak istiyorum:
    bunlar buton kodamaları

    *Kod çok uzun olduğu için temizlendi*

  207. ahmet dedi ki:

    Ben karekterin yürümesini bilgisayarda aşağıdaki kodlarla sağladım.Fakat ben bunu dokunmatikte yapmak istiyorum. Karekterin bilgisayarda yürüme falan kodlaması animasyonlar herşey tamam bilgisayarda sağlam çalışıyor

    #pragma strict

    internal var animator:Animator;
    var v:float;
    var h:float;
    var sprint :float;

    function Start () {

    animator=GetComponent(Animator);

    }
    function Update () {

    v=Input.GetAxis(“Vertical”);
    h=Input.GetAxis(“Horizontal”);
    Sprinting();
    }
    function FixedUpdate()
    {
    animator.SetFloat(“Walk”,v);
    animator.SetFloat(“Turn”,h);
    animator.SetFloat(“Sprint”,sprint);

    }
    function Sprinting()
    {
    if(Input.GetButton(“Fire1”))
    {

    sprint=0.2;
    }
    else{
    sprint=0.0;
    }

    }

  208. onur dedi ki:

    İyi güzelde kazanılan paraları nasıl ne şekilde elimize geçirebiliyoruz? Bazı yerlerde şirket kurmalısın, vergi ödeyeceksin gibi şeyler okudum. Nedir ne değildir ayrıntılı bir yazı da göremedim konuda.

    • yasirkula dedi ki:

      Adres bilgilerinizi ve IBAN numaranızı sisteme giriyorsunuz. Sonra adresinize postayla gelen kodu siteye giriyorsunuz (postanın gelmesi yaklaşık bir ay sürebiliyor) ve bundan böyle hesabınıza para otomatik olarak yatıyor.

      • onur dedi ki:

        Valla bizim gibi yeni başlayanlarla senin kadar ilgilenen başka biri yoktur herhalde. Ne kadar teşekkür etsek azdır. Windows Phone için AdMob reklam koyma hiç bir yerde yok bu arada. Uygun bir zamanın olursa onunla da ilgili ufakta olsa öğretici/açıklayıcı bir yazı yazarsan süper olur.

      • yasirkula dedi ki:

        Admob’un Windows Phone Unity plugini yok; olmasını ben de isterdim ama malesef :/

  209. maliyazici dedi ki:

    Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.
    C:\Users\MuhammedAli\Music\Mali\android\sdk\build-tools\21.1.1\aapt.exe package –auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I “C:/Users/MuhammedAli/Music/Mali/android/sdk\platforms\android-21\android.jar” -F bin/resources.ap_ –extra-packages com.google.unity

    stderr[

    Reklamı yaptıktan sonra bu hatayı verdi acil yardım edermisin ?

    • yasirkula dedi ki:

      stderr kelimesini bu sayfa içinde aratın, birkaç sonuç çıkması lazım.

      • maliyazici dedi ki:

        Tamam teşekkür ederim onu halletimde şimdide interstital rekalm almıştım ben sizin verdiginiz kodu girdim girince ekranın tam ortasında reklamı göster tuşu çıktı nasıl gizliycem bunu

      • yasirkula dedi ki:

        Bu soruyu yorumlarda defalarca kez cevapladım. OnGUI fonksiyonunu sileceksiniz.

  210. İbrahim dedi ki:

    Hocam Admoıbda analizide kurdum analizi tek başına kullandığımda çalıştı admobda kulanıcı girdiğim cihaz sahne adı filan yazıyor bir sonraki denememde ise Ads reklamı ve analizi aynı anda çalıştırmaya kalktığımda böyle bir hat aldım.Çok araştırdım fakat bir çözüm bulamadım siz biliyorsanız veya yabancı kaynaklarda varsa yazarsanız sevinirim bu işi tamamlarsam oyunumu yayınlayacağım Reklam için yaptığınız script mükemmel teşekkürler.

    • İbrahim dedi ki:

      http://i.hizliresim.com/o9Q3j2.png Hata da şöyle birşey yer var.

      • yasirkula dedi ki:

        İlginiz için teşekkür ediyorum. Analytics’i şimdiye kadar hiç kullanmadığımdan malesef bu sıkıntının çözümünü bilmiyorum. Ancak internette yaptığım araştırmalardan yola çıkarak söyleyebilirim ki büyük ihtimalle projenizde aynı isimli iki dosya var. Bence Project panelindeki arama kutucuğuna “.jar” (tırnaksız) yazın ve aynı isimli dosya varsa bunlardan birini (hangisi bilmiyorum) silin.

  211. Mehmet Ali dedi ki:

    Abi her şey tamam’da ilk oyunumu yapıp koyduğumda sıkıntı çıkmıyor da her şeyi burada ki gibi yapıyordum yine aynı yapıyorum fakat hata veriyor sen aşşağıda Java/jdk1.7.0_51 yazıyorsun ya şuan yeni sürüm olduğu için değiştiriyorum ben onu 1.8.0 yapıyorum klasörden bakıp bunu değiştirmeliyimiyiz?

    “Eğer sizde “C:\Program Files\Java\jdk1.7.0_51” klasörü yoksa kendi jdk klasörünüzü bulup o konumu yazın “Değişken değeri:” olarak. Sonrasında Path isimli sistem değişkenini listeden bulup çift tıklayın ve “Değişken değeri:“nin en sonuna şunu ekleyin: “;C:\Program Files\Java\jdk1.7.0_51\bin” (başında ; olduğuna dikkat edin!). Son “

    • yasirkula dedi ki:

      Sizde jdk1.7.0_51 klasörü yoksa sizdeki klasörün ismini yazın, evet. Aldığınız hatayı Google’layın derim zira başka sebeplerden ötürü de alıyor olabilirsiniz.

      • Mehmet Ali dedi ki:

        Şöyle bir durum var aslında sorun admob yani reklam ile ilgili başka yaptığım bir oyunun çıktısını almaya çalışıyorum aynı şekil bu oyunda reklam yok hata vermiyor sonra tekrar başka bir oyuna geçip reklam eklediğim zaman hata almaya başlıyorum yani aslında hatanın tamamı reklam ile ilgili ne yapabilirim?

      • Mehmet Ali dedi ki:

        Ayrıyetten eklemeyi unuttuğum bir şey daha var ilk yaptığım google play’e koyduğum oyunu şuan build ettim onda da reklam var onda sıkıntı çıkmadı bence soru google-play-services_lib bu dosyayı kopyalarken oluşan bir sorun ben şöyle yapıyorum o aşamada da C:\Users\Mehmet Ali\AppData\Local\Android\android-sdk\extras\google\google_play_services\libproject\google-play-services_lib bu konuma geliyor google-play-services_lib adlı klasörü kopyalayıp D:\Unity Projects\Oyun ismi\Assets\Plugins\Android\GoogleMobileAdsPlugin bu ykopyalıyorum dosyayı. Yardım için teşekkürler abi.

      • Mehmet Ali dedi ki:

        Biraz uzun ve taksit taksit yazdım kusura bakmayın. Şöyle bir yazı okudum “To fix this error, you have to copy the version.xml file from android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/res/values/ into Assets/Plugins/Android/res/values/ your Unity project’s folder.” bende Android/res/vaules diye bir yerde yoktu o yüzden dediğini yapamadım fakat şimdi şöyle bir yöntem denedim google-play-services_lib klasörünün içindekileri Android/Plugins/GoogleMobileAdsPlugin içine kopyaladım oldu eskiden GoogleMobileAdsPlugin’in içine google-play-services_lib klasörünü kopyalıyordum dediğim gibi ilk oyunda da öyle yaptım klasör şeklinde oldu fakat bunda olmadı şimdi klasörün içindekileri kopyaladım hata vermedi fakat hala merak ediyorum sorun neden böyle oldu? doğru mu yaptım? sıkıntı çıkar mı?

      • Mehmet Ali dedi ki:

        Ayrıyetten şimdi de şöyle bir sorunum var reklamlara tıklanmıyor…

      • yasirkula dedi ki:

        Admob ile ilgili sıkıntılar hakkında bilgi düzeyim çok kısıtlı. Ben karşılaştığım sorunların çözümünü bu derste belirttim; onlar haricinde bir çözüm yolu bilmiyorum. Reklamlara tıklanamaması sorununuysa ben yaşamadım. Bazı reklamlarda reklama bir kere tıklayınca sağda bir ok çıkıyor ve o oka tıklamak gerekiyor. Belki sizdeki de öyle bir sıkıntıdır.

        NOT: Eğer reklamları Unity editörde görmeye çalışıyorsanız göremezsiniz. Reklamlar sadece mobil cihazlarda ve emülatörde gözükmekte.

      • Mehmet Ali dedi ki:

        Mobil’de çalıştığını biliyorum para gelmiş fakat Büyük boy reklam ekledim onda tıkladı fakat banner’a tıklamadı anlamadım şahsen neyse Admob’a baktım 2 kuruş gelmiş bir çözüm bulucaz artık teşekkürler abi kolay gelsin.

  212. Recep dedi ki:

    Hocam ben tam ekran reklamı level açılınca ve karakter respone edilince gelmesini istiyorum fakat bunu randomize edebilirmiyiz mesela kullanıcı leveli her açtığında karşısına çıkmicak yani 1 kere çıkıyorsa 2. Veya 3. de açılmasın 4. Yüklenişte açılsın bunun kontrolünü nasıl yaparız.

    • yasirkula dedi ki:

      Bir int değişkende çıkan reklam sayısı depolanır. Bu değer diyelim 3’ten büyükse reklam gösterilip ardından değer sıfırlanır.

      • Recep dedi ki:

        Hocam aynen dediğinizi yaptım int değerini koruyorum birde random değerle kontrolunu yapıyorum kod çalışıyor random değerler oluyor fakat tam ekran reklam çıkmıyor bir göz atarsanız koda sevinirim çok zamanımı aldı baya araştırdım fakat bulamadım bi cevap.

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

        public class Reklamm : MonoBehaviour
        {
        private InterstitialAd reklamObjesi;
        private int RandomPoints;
        private bool _reklam;
        public bool _Banner;

        public void Start()
        {
        _Banner = true;
        _reklam = false;

        if (_Banner) {
        BannerView reklamObjesii = new BannerView (
        “blabla”, AdSize.SmartBanner, AdPosition.Top);
        AdRequest reklamiAl = new AdRequest.Builder ().Build ();
        reklamObjesii.LoadAd (reklamiAl);
        RandomAt ();
        }

        }

        public void Update()
        {
        Debug.Log (RandomPoints);
        PlayerPrefs.SetInt (“ReklamPuanim”,GameManager.Instance.ReklamPuanim);

        if (PlayerPrefs.GetInt (“ReklamPuanim”) >= RandomPoints) {
        _reklam = true;
        RandomAt ();
        GameManager.Instance.RekReset ();
        } else { _reklam=false;}

        if(_reklam)
        {
        reklamObjesi = new InterstitialAd( “blabla” );
        AdRequest reklamiAl = new AdRequest.Builder().Build();
        reklamObjesi.LoadAd( reklamiAl );
        StartCoroutine( ReklamiGoster() );
        }
        }

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

        reklamObjesi.Show();
        }
        private void RandomAt()
        {
        RandomPoints = Random.Range (1,4);
        }
        public void falsea()
        {
        _Banner = false;
        }
        }

      • yasirkula dedi ki:

        PlayerPrefs.GetInt (“ReklamPuanim”)’ın değerinde bir sıkıntı vardır belki. Ben başka birşey göremedim.

      • Recep dedi ki:

        Birde banner reklamı üst kısmı sağdan sola tamaını kaplıyor skor süre Oyundurdurma butonlarının üstüne geliyor bloke ediyor.Bunun boyutunu nasıl değiştirmeliyim.

      • yasirkula dedi ki:

        O UI elemanlarını aşağıya taşımaktan başka bir çözüm yolu bilmiyorum. Bu yüzden ben sadece oyunu pause edince banner gösteriyorum.

  213. Furkan dedi ki:

    Konsolda bakınca reklam alınıyor gözüküyor ama telefonda reklam gözükmüyor.Ad Unity ID doğru.

    http://oyun-programlama.com/Attachment/140-Ads-z-png/

  214. mehmet ali dedi ki:

    reklamı istediğim bir butonla cıkarmamız mumkunmu yani rety butonuna tıklayınca reklam cıksın bunu nasıl yapabiliriz?

    • yasirkula dedi ki:

      Butona tıklayınca çalışan fonksiyonun içinde reklam çıkarma fonksiyonunu çağırabilirsiniz.

      • mehmet ali dedi ki:

        StartCoroutine(Camera.main.GetComponent(ReklamScriptininIsmi).ReklamiGoster()); bu kodu yazıyorum ama reklamı goster kırmızı oluyor yardım edermisiniz

      • yasirkula dedi ki:

        ReklamScriptininIsmi adında bir scriptiniz yok diyor. Reklam scriptinin ismini yazacaksınız oraya.

      • mehmet ali dedi ki:

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

        public class reklam : MonoBehaviour
        {
        private InterstitialAd reklamObjesi;

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

        }

        public void retry(int mode)
        {
        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( “asdasdas” );
        reklamObjesi.AdClosed += YeniReklamAl;

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

        kodu bu şekilde yaptım butonada button ekledim ordan retry sectim ama butona basınca reklam cıkmadı neden acaba?

      • yasirkula dedi ki:

        Retry’a basınca aynı zamanda Application.LoadLevel da çalışıyorsa reklam objesini singleton yapmalısınız. Böylece reklam objesi sahne geçişi sırasında yok olmaz ve execution’ı kaldığı yerden devam eder (teorik olarak). https://yasirkula.com/2014/08/03/unityde-bir-objenin-sahneler-arasi-gecislerde-yok-olmasini-onlemek-singleton-prensibi/

  215. Çağtay dedi ki:

    Reklam geliyor fakat tıklanmıyor yardımcı olurmusunuz …

  216. Ekrem dedi ki:

    Yasirkula kardesim simdi ben bu banlanma olayini anlamadim simdi beni sevmeyen birisi yada benim para kazanmami istemeyen birisi benim oyunumu indiririse ve bu banlamayi biliyorsa reklama arka arka tiklayinca benim admob hesabim banlanirmi boyle birsey olurmu

    • yakup dedi ki:

      ardarda tıklayınca admob onları geçersiz sayar zaten ama oyunun eğer çok indirilmişse bence göze batmaz çünkü gösterilen reklama tıklanma oranı %10 geçmiyo kolay kolay,ama sen genede yaptığın oyunu kimseye duyurma,indirmeleri için “aa bak böyle bi oyun çıkmış çok değişik”falan de öyle indirt bence.

  217. ekrem dedi ki:

    ŞAHİN kardeşim söylede olabilir şimdi o butonun ismini tum reklamları kapat yazar ve kullanıcılar reklamı sevmedikleri için tum reklamı kapat butonuna elbet tıklarlar ama tıkladıkları zaman o buton kaybolması gerekmektedir ve o nasıl olacak onu bilmiyorum

  218. yakup dedi ki:

    muhtemelen ban yer ama sitelerde mesela reklam çıkıyo reklamın sağ üst köşesinde bi yuvarlak kutucuk ama gene seni reklama yönlendiriyo kapatmayı sol üst köşedeki çarpı kutusundan yapıyosun ben bunun istatistiğini çıkardım 1 hafta bu reklamlara 4 kere yanlışlıkla tıkladım çok şaşırtıcı böyle bi şey ban yemiyorsa eğer bence çok etkili çünkü oyununa göre değişir ama ortalama 4 sent getiriyo 1 haftada 1 kişiden 16 sent.iş telefona gelince çoğu insan sağ elini kullanıyo bence böyle bi şey android te de çok kazandırır çünkü o yuvarlak kutucuk sağ tarafta olduğundan oyunun heyecanıyla ilk ona tıklarlar peki böyle bişey ban yermi benim sorum bu.

  219. Sahin dedi ki:

    Hocam son güncelleme için teşekkürler. Bir sorum var, reklamda bulunan reklamı kapat butonunun önünü başka bir reklamla kapatırsak ve kullanıcı bu reklamı geçmek için reklamı tıklamak zorunda kalırsa ve böylece para kazanırsak admob hesabımız ban yermi?

  220. ekrem dedi ki:

    abi ben carpıya basıyordum yani reklamı kapatıyodum ondan mı para gelmiyordu herkese oyle demiştim

  221. ekrem dedi ki:

    abi bide su var şimdi reklamı kapatınca mı yani carpıya basınca mı para geliyor yoksa reklama girince mi para geliyor

  222. ekrem dedi ki:

    slm herkese abi ben Interstitial reklamı koydum reklamda cıkıyor dogru yaptım oyunu google playe koydum ama para gelmiyor sen demissin 5 10 dk sonra 1 kuruş geldigini ama bana hiç gelmedi yardım edermisin

    • yasirkula dedi ki:

      Admob anasayfasında reklamın istatistikleri (tıklanma sayısı ve tıklanma oranı gibi) gözükür, oradaki istatistikleri kontrol edin. O değerler sıfırdan farklıysa muhtemelen zamanla para gelmeye başlayacaktır.

  223. Ekrem dedi ki:

    Slm herkese abi ben gecis reklami koydum ama oyuna ama oyunu actigimda reklami goster butonu cikiyor tam ortada onu nasil kaybedecegim ben bir oyun acildiginda bide oyun kapandiginda ciksin istiyorum reklam

    • yasirkula dedi ki:

      OnGUI fonksiyonunu silerseniz o debug butonu ortadan kalkar. Oyunun başında reklam göstermek için Start fonksiyonunda reklam çıkarmanız yeterli. Oyun kapanınca reklam çıkarmanın yolu var mı bilmiyorum.

  224. ahmeta dedi ki:

    ben reklamın game over menüsüyle beraber gelmesini istiyorum bunu nasıl yapabilirim??

  225. Barış dedi ki:

    Belli bir ücret karşılığı reklamları kaldırma özelliğini nasıl ekleyebilirim?

  226. nebkarub dedi ki:

    Merhabalar. Benim oyunumda 3 sahne bulunmakta. Bunlarda 2. sahnede sadece üst tarafta bir banner düşünüyorum. 2. sahneden 3.sahneye geçerken de geçiş reklamı yapmak istiyorum. Fakat yukarıdaki banner kodlarını oyunuma koyunca tüm sahnelerde çıkıyor. Ben bunları sınırlayamıyorum. Ayrıca sahne geçişlerine nasıl geçiş reklamı koyabilir. Yardımcı olursanız çok sevinirim.

    • yasirkula dedi ki:

      Banner’ı kapatmak için Destroy() veya Hide() fonksiyonu kullanmalısınız. Application.LoadLevel fonksiyonundan önce interstitial reklamı çağırırsanız tam ekran reklam gelecektir.

  227. Enes dedi ki:

    Merhabalar. Öncelikle emeklerinizden dolayı çok müteşekkirim. Verdiğiniz kodlar ile reklamımı kurdum ancak, oyunum level geçmeye dayalı. yani Oyuncu 2- 5 – 10 snde bir level geçebiliyor.
    Sorum şu ki: Her levelde ayrı kameralar var. Her leveldeki kameralara kodu yazdım. Leveller yüklendiğinde reklamlar üst üste biniyor. Dolayısıyla dokunmalar level yükseldikçe kasıyor. Eğer Sadece ilk levele/sahneye reklam scrpiti yazıp diğerlerine yazmasam, kasma yok ancak reklam tazelemeside olmuyor. Aynı reklam dönüp duruyor.

    İlginiz ve alakanız için tekrar teşekkürler..

  228. umut dedi ki:

    merhabalar
    yaptığım oyunu yukarıda bahsettiğiniz link your app ile bağlayacam ama markette gözüken oyun burda gözükmüyor sebebi ne olabilir??

    • yasirkula dedi ki:

      Bir iki gün sonra tekrar deneyin, markette Publish edilen oyunlar illa ki listede gözükür. Onun dışında belki oyunun Age Rating gibi bazı bilgilerini Google Play Developer Console’da girmeyi unutmuşsunuzdur, ondan gözükmüyor da olabilir.

  229. Emre dedi ki:

    Merhaba arkadaslar,
    Yasir arkadasima emeginden dolayi tesekkur ediyor ve yabanci forumlqrda da bircok kisinin ayni konuda muzdarip oldugu soruyu yoneltiyorum.

    Reklamlarimiz android tablet ve telefonlarda gozukuyor ,
    Gozukmelerinden dolayi admob hesapta parada birikiyor fakat

    Reklamlara tiklayamiyorum.
    Yukaridaki adimlari teker teker yaptim
    Enson olarak googleadmob unity packege’in son surumunu yukleyip tekrar denedim fakat nafile.

    Kucuk bir ayrintiyida paylasmak idtiyorum
    Uygulama ilk yukleyip test ettigimde bir defa reklama tikladim. Ve reklamin web sitesi acildi. Ertesi gun admob hesabinda 1 kere reklaminiza clicklenmistir diye para bile yansidi.
    Birdaha da tiklayamadim

    • yasirkula dedi ki:

      Reklama tıklanmama sıkıntısı benim bilgi dağarcığım dışında kalıyor, böyle bir sorun yaşamadığım için sebebini bilemiyorum. Ancak çözümü bilen birisi varsa bizimle paylaşması eminim pek çok kişiye yardımcı olacaktır.

  230. umutt dedi ki:

    merhabalar bu hataları alıyor gender diye

    Assets/GoogleMobileAds/Platforms/Android/Utils.cs(95,17): error CS0266: Cannot implicitly convert type `Gender’ to `GoogleMobileAds.Api.Gender’. An explicit conversion exists (are you missing a cast?)

    Assets/GoogleMobileAds/Platforms/Android/Utils.cs(99,17): error CS0266: Cannot implicitly convert type `Gender’ to `GoogleMobileAds.Api.Gender’. An explicit conversion exists (are you missing a cast?)

    Assets/GoogleMobileAds/Platforms/Android/Utils.cs(103,17): error CS0266: Cannot implicitly convert type `Gender’ to `GoogleMobileAds.Api.Gender’. An explicit conversion exists (are you missing a cast?)

    • yasirkula dedi ki:

      Gender yazan herşeyi GoogleMobileAds.Api.Gender yapmayı deneyin.

      • osman dedi ki:

        Hocam merhabalar. Öncelikle belirtmeliyim ki sitenin yakından takip ediyorum.çok faydalı bir site.
        Benim sorum şu ben şimdi uygulaması goggle playa yukledim.reklam eklemen için uygulamaya unity içerisinde dediklerini uygulayıp ondan sonra build edip reklem ekleme basarili olmuşsa daha sonra google playdeki uygulamayı guncelleyecegiz. Öyle mi

      • yasirkula dedi ki:

        Evet, eğer telefonunuzda test ederken reklamlar sorunsuz gözüküyorsa Google Play’e oyunun son sürümünü yükleyebilirsiniz.

      • osman dedi ki: