Merhaba Arkadaşlar ,
Mobilhanem.com sitemizden anlattığımız/yayınladığımız derslerimize bu dersimizde, Firebase Admob Geçiş Reklam Ekleme dersi ile devam ediyoruz. Arkadaşlar bir önceki dersimde Firebase Admob Banner Reklam dersini anlatmıştım. Burada Firebase ve Admob ayarları neredeyse birebir aynı olduğu için bu dersimde ortak olan yerleri (sizlere kolaylık olması adına) bir önceki dersimden kopyalayıp bu dersime yapıştıracağım.
Ben bir önceki Android dersimde Firebase Cloud Messaging yani push servisini projemize entegresini ve kullanımını anlatmıştım. Bu dersimde ise Admob geçiş reklam kullanımını ve projemize nasıl dahil edeceğimizi anlatacağım.Öncelikle Firebase Console‘a giriyoruz.
Firebase ve Admob Ayarları
CREATE NEW PROJECT diyerek işlemlerimize başlıyoruz.
Burada Proje adımızı giriyor ve ülkemizi seçiyoruz. Sonrasında Create Project diyerek devam ediyoruz.
Not: Bir önceki dersim Banner reklam olduğu için Reklam adı Banner olarak kaldı. Dersimizde Geçiş reklam anlatılacaktır.
Açılan ekranda Admob ‘u bulup GET STARTED butonuna basıyoruz.
Açılan bu ekranda linking your apps in Admob diyerek Admob sayfamızı açıyoruz. Eğer Admob hesabınız yoksa gmail hesabınızla Account açabilirsiniz.
Açılan Admob sayfasında önceden oluşturmuş olduğunuz reklam birimi varsa bunu seçip Firebase hesabınızla ilişkilendirebilirsiniz. Ben dersime oluşturulmuş bir reklam biriminiz olmadığını varsayarak devam ediyorum. Açılan Admob sayfasına ANA SAYFA tıklayarak devam ediyoruz.
YENI UYGULAMADAN PARA KAZANIN butonuna tıklayarak devam ediyoruz.
2. bölümde Geçiş reklamı seçiyor ve Reklam birimine Ad verip KAYDET butonuna basıyoruz.
3. bölümde oluşturduğumuz reklamı Firebase hesabımıza bağlıyoruz. FIREBASE’E BAĞLANIN tıklayarak devam ediyoruz.
Paket adı alanına uygulamamızın paket adını doğru bir şekilde giriyoruz. DEVAM ET butonuna tıklayarak devam ediyoruz.
Karşımıza gelen bu ekranda Firebase consoleda oluşturduğumuz uygulamamızı(projemizi) seçiyoruz ve DEVAM ET butonu ile devam ediyoruz.
Not: Bir önceki dersim Banner reklam olduğu için Reklam adı Banner olarak kaldı. Dersimizde Geçiş reklam anlatılacaktır.
Bu ekranda burayı tıklayın kısmına tıklayarak google-services.json dosyası bilgisayarımıza indirmeye başlayabiliriz. Bu dosya gerekli olan id’leri barındırmaktadır. Android uygulamamızda kullanacağız.
Android Ayarları
İndirdiğimiz google-services.json dosyasını uygulamanın bulunduğu dizinde app klasörü içine koyuyoruz. Uygulamamızı sync ediyoruz. Eğer uygulamamızda google-services.json dosyasını göremiyorsanız:
Android Studio’nun Project Explorer kısmında Project olanı seçiyoruz.
Önce root’ta olan build.gradle(ana dizindeki) dependencies kısmına “classpath ‘com.google.gms:google-services:3.0.0‘” kodumuzu ekliyoruz.
build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.0' classpath 'com.google.gms:google-services:3.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
Sonra build.gradle(app klasörü içindeki) dosyamızı açıyoruz ve dependencies kısmına firebase admob sdk mızı ekliyoruz. Ayrıca gradle dosyamızın en altına apply plugin: ‘com.google.gms.google-services’ kodumuzu ekliyoruz ve projemizi Sync ediyoruz.
build.gradle :
apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "24.0.2" defaultConfig { applicationId "com.mobilhanem.firebaseadmob" minSdkVersion 15 targetSdkVersion 24 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:24.2.1' testCompile 'junit:junit:4.12' compile 'com.google.firebase:firebase-ads:9.6.1' } apply plugin: 'com.google.gms.google-services'
Buraya kadar olan kısım aslında Banner reklam oluşturma ile aynı. Sadece reklam oluştururken Banner Reklam değil Geçiş reklamı oluşturuyorsunuz. Bu yüzden bende, başta belirttiğim gibi buraya kadar olan kısmı bir önceki dersimden kopyaladım ve yapıştırdım. Bundan sonraki yapacağım Ödüllü reklam kısmında da aynısını yapacağım.
Gelelim geçiş reklam‘ın banner reklamından farklı olan Android kodlarına. Geçiş reklamında Xml kodlarıyla bir işimiz bulunmuyor. Yapacağımız işlemi direk Activity içinde yapıyoruz.
Reklam için Admob sayfamızdan reklam Id’mizi almamız gerekiyor. Admob sayfasından Para Kazanma menüsü -> sol tarafta Tüm Uygulamalar altında oluşturduğumuz uygulama-> Oluşturduğumuz reklam -> Reklam birimi kimliği karşısında reklamımızın id’sini bulabiliriz. Ben aşağıda ***** olarak verdim . Ancak siz direk Admob’dan aldığınız id’yi kullanacaksınız.
MainActivity.java
package com.mobilhanem.firebaseadmob; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import com.google.android.gms.ads.AdListener; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.InterstitialAd; public class MainActivity extends AppCompatActivity { InterstitialAd mInterstitialAd; // Reklamımız. InerstitialAd class firebase ile projemize dahil oldu Button reklamGoster; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); reklamGoster = (Button) findViewById(R.id.button2); //butonu referansa bağladık mInterstitialAd = new InterstitialAd(this); //buraya kendi app id'nizi giriniz. Admob'dan oluşturduğunuz reklamdan bu id yi bulabilirsiniz. //Ben aşağıda yıldızladım. Sizin reklam id'nizde yıldız olmayacak. mInterstitialAd.setAdUnitId("ca-app-pub-6311*******/******"); //reklam id mInterstitialAd.setAdListener(new AdListener() { //reklamımıza listener ekledik ve kapatıldığında haberimiz olacak @Override public void onAdClosed() { //reklam kapatıldığı zaman tekrardan reklamın yüklenmesi için requestNewInterstitial(); } }); reklamGoster.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mInterstitialAd.isLoaded()) { //reklam yüklenmişse mInterstitialAd.show(); //reklam gösteriliyor }else{ //Reklam yüklenmediyse yapılacak işlemler } } }); requestNewInterstitial(); //reklamı direk uygulama açıldığında yüklemek için onCreate içinde yapıyoruz reklam yükleme işini } private void requestNewInterstitial() { //Test cihazı ekliyoruz Admob dan ban yememek için AdRequest adRequest = new AdRequest.Builder() .addTestDevice("B9C840C4E9AD8EC5D1497C9A62C56374") .build(); mInterstitialAd.loadAd(adRequest); } }
Yukarıdaki kodları anlatmaya geçmeden önce , geçiş reklamının çalışma mantığını anlatayım. Geçiş reklamı gösterilmeden önce reklam sunucusundan yüklenmiş olması gerekmektedir. Aksi durumda reklamı göstermek istediğimiz an reklamı sunucudan çekip göstermeye kalkarsak bu biraz daha fazla zaman alacağından, Admob Geçiş Reklamları kullanıcıya gösterilmeden önce sunucudan çekilip hazır bir şekilde bekletilmektedir ve istenildiği an kullanıcıya gösterilmektedir.
Gelelim yukarıda ki kodumuzda ne yaptığımıza. Reklam gösterimimizi bir butona bağladık. Butona tıklayınca reklamı göstereceğiz. Ama yukarıda da anlattığım gibi önce reklamı çekip hazır bir şekilde beklememiz gerekir. Bunu requestNewInterstitial() methotu içinde yapıyoruz. Reklamımızı bu methot içinde yüklüyor ve gösterime hazır bir şekilde bekliyoruz. Yukarıda ki kodda gördüğünüz gibi bu methot iki yerde çağırılmış birincisi onCreate içinde ,diğeri onAdClosed metotu içinde. Uygulama yada activity açılır açılmaz reklam gösterime hazır hale gelmesi için onCreate içinde çağırdık. onAdClosed metotu ise göstermiş olduğumuz reklam kapatıldığında çağırılır. Böylelikle bir daha ki reklam gösterimi için reklam tekrardan yüklenir ve hazır beklenir.
Yüklü olan reklamı göstermek içinse aşağıdaki kodu kullandık
if (mInterstitialAd.isLoaded()) { //reklam yüklenmişse mInterstitialAd.show(); //reklam gösteriliyor }
Yukarıdaki kodda eğer reklam yüklenmiş ise show() metotu ile reklamı kullanıcıya gösteriyoruz. Kullanıcı çarpı(X) butonu ile reklamı kapattığında ise reklamın aşağıdaki koddaki listener’ı devreye girer ve onAdClosed metotu çağırılır. Bu metot içinde reklam tekrardan yüklenir.
mInterstitialAd.setAdListener(new AdListener() { //reklamımıza listener ekledik ve kapatıldığında haberimiz olacak @Override public void onAdClosed() { //reklam kapatıldığı zaman tekrardan reklamın yüklenmesi için requestNewInterstitial(); } });
Evet arkadaşlar burda dikkat etmemiz bir hususta test cihazı eklemek. Google/Admob bu konuda biz geliştiricileri uyarıyor. Test yaparken kullandığınız cihazı test cihazı olarak gösterin diye. Bunu şu şekilde yapıyoruz:
Öncelikle uygulamamızı çalıştıracağız. Reklam çıktıktan sonra Android Studio’dan logcat çıktısına bakacağız ve addTestDevice diye filtreleme yapacağız. Logcat çıktısında aşağıdaki şekilde bir log bulunmaktadır.
10-08 01:56:00.648 24522-24522/com.mobilhanem.firebaseadmob I/Ads: Use AdRequest.Builder.addTestDevice(“8335ED3FBCEB9261C1E47E4E7E53A0C9”) to get test ads on this device.
addTestDevice methotu içinde olan rakamlar bizim device id’mizdir. Bu rakamları alalım ve reklam yüklediğimiz kodumuzu aşağıdaki gibi değiştirelim.
AdRequest adRequest = new AdRequest.Builder() .addTestDevice("B9C840C4E9AD8EC5D1497C9A62C56374") //cihazı Id si .build();
Uygulamamızı tekrardan Run ettiğimizde artık gerçek reklamlar yerine test reklamları bize gösterilmekte ve tıklamamızda herhangi bir sorun bulunmamaktadır.
Kaynak Kod:
Firebase Admob Geçiş reklamı dersinde anlatmak istediklerim bu kadar. Mobilhanem.com üzerinden anlattığımız mobil uygulama geliştirme derslerine devam edeceğiz. Önümüzdeki derslerimde Ödüllü Geçiş Reklamı anlatacağım. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı sorucevap.mobilhanem.com sitemizden de sorabilirsiniz.
Firebase Admob Geçiş reklamı dersinde anlatmak istediklerim bu
3