Android Firebase Admob Geçiş (Tam Sayfa) Reklamı Eklemek

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.

firebase admob

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.

 

 

 

 

firebase admob

 

 

 

Açılan ekranda Admob ‘u bulup GET STARTED butonuna basıyoruz.

 

 

 

 

admob firebase

 

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.

 

admob anasayfa

 

YENI UYGULAMADAN PARA KAZANIN butonuna tıklayarak devam ediyoruz.

 

 

 

admob reklam ekleme1. bölümde Uygulamanızı Arayın tabında Google Play Store’da önceden eklenmiş olan uygulamanızı bulabilirsiniz. Ben Uygulamanızı Manuel Olarak Ekleyin tabını seçerek yeni uygulamamı ekliyorum ve Android Projemin Uygulama adını girerek devam ediyorum. Platform olarak Android’i seçiyorum.

 


2. bölümde Geçiş reklamı seçiyor ve Reklam birimine Ad verip KAYDET butonuna basıyoruz.

 

 

 

 

firebase admob entegrasyon

3. bölümde oluşturduğumuz reklamı Firebase hesabımıza bağlıyoruz. FIREBASE’E BAĞLANIN tıklayarak devam ediyoruz.

 

 

 

firebase admob

Paket adı alanına uygulamamızın paket adını doğru bir şekilde giriyoruz. DEVAM ET butonuna tıklayarak devam ediyoruz.

 

 

admob firebase

 

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.

 

 

admob firebase

 

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 project

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:

Not: Kendi google-services.json dosyanızı dahil etmezseniz çalışmayacaktır.

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

Taha Kırca

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı

18 Yorum

  • Çok faydalı oldu teşekkürler… Aynı zamanda ödüllü reklam olayını da bekliyorum en kısa zamanda 😉

  • Çok harika keşke daha önce görseymişim gradledn sdk sını güncellerken uygulama hata veriyordu google-services.json eksik olması ve kodlardaki ufak değişiklik yüzünden olan hatalardan saatlerim gitmişti, yabancı forumlarda sitelerde bu kadar kapsamlı anlatım yok

    • requestNewInterstitial() methodu kodun içerisinde var mı?

      
      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 methoda ihtiyacın yoksa o kod yok dediği satırı silebilirsin. Ama kod yok diyorsa bir bildiği vardır 🙂

  • Bilgi paylaşımınız için teşekkürler makaleyi okuyarak kısa sürede reklam ekleyebildim.

  • Kesinlikle Android için Türkçe en iyi ve en yararlı kaynaksınız. Verdiğiniz emekler için teşekkürler.

    • private void requestNewInterstitial() { //Test cihazı ekliyoruz Admob dan ban yememek için
      AdRequest adRequest = new AdRequest.Builder().build();
      mInterstitialAd.loadAd(adRequest);
      }

      böyle mi olacak acaba ?

  • failed to resolve: com.android. hatası alıyorum sırf bu konuya özel değil yeni uygulama oluşturduğumda da aynı şekilde bu tarz failed to resolve hatası alıyorum compile kodunda yazılan herşey için hata veriyor çözümü nedir

  • Kodları uygulamaya ekleyip çalıştırınca Splash Screen’den sonra uygulama durduruldu hatası alıyorum :/

    Kod sayfam şu şekilde hocam;

    package com.fetva.meclisi;

    import android.content.Intent;
    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.view.View;
    import android.support.design.widget.NavigationView;
    import android.support.v4.view.GravityCompat;
    import android.support.v4.widget.DrawerLayout;
    import android.support.v7.app.ActionBarDrawerToggle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.Button;

    import com.google.android.gms.ads.AdListener;
    import com.google.android.gms.ads.AdRequest;
    import com.google.android.gms.ads.AdView;
    import com.google.android.gms.ads.InterstitialAd;
    import com.google.android.gms.analytics.HitBuilders;
    import com.google.android.gms.analytics.Tracker;
    import com.onesignal.OneSignal;

    public class selhatin extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {
    private WebView soz;
    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.selhatin);

    reklamGoster = (Button) findViewById(R.id.ayar); //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

    //banner reklam kodu
    AdView bir=(AdView)findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    bir.loadAd(adRequest);

    OneSignal.startInit(this).init();

    Tracker t = ((MyApp) getApplication()).getTracker(MyApp.TrackerName.APP_TRACKER);
    t.setScreenName(“MyApp”); //Hangi activityde olduğunu bildiriyor
    t.send(new HitBuilders.ScreenViewBuilder().build());

    soz = (WebView) findViewById(R.id.soz);
    WebSettings webSettings = soz.getSettings();
    webSettings.setJavaScriptEnabled(true);
    soz.loadUrl(“https://www.fetvameclisi.com/yazili-fetva/”);
    soz.setWebViewClient(new WebViewClient());

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    Intent Email = new Intent(Intent.ACTION_SEND);
    Email.setType(“text/email”);
    Email.putExtra(Intent.EXTRA_EMAIL,
    new String[]{“[email protected]”}); //kendi mail addresiniz
    Email.putExtra(Intent.EXTRA_SUBJECT,
    “Konuyu Ekleyin”); // Email’in konusu
    Email.putExtra(Intent.EXTRA_TEXT, “Sayın Editör,” + “”); //Email ‘e nasıl başlansın
    startActivity(Intent.createChooser(Email, “Mail Gönder:”));
    }
    });

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
    }

    private void requestNewInterstitial() {
    //Test cihazı ekliyoruz Admob dan ban yememek için
    AdRequest adRequest = new AdRequest.Builder()
    .addTestDevice(“B9C840C4E9AD8EC5D1497C9A62C56374”)
    .build();

    mInterstitialAd.loadAd(adRequest);
    }

    @Override
    public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
    drawer.closeDrawer(GravityCompat.START);
    } else {
    super.onBackPressed();
    }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.selhatin, menu);
    return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    super.onOptionsItemSelected(item);

    switch (item.getItemId()) {

    case R.id.hakkimda:
    Intent hakkimdaIntent = new Intent(getApplicationContext(), Hakkimda.class);
    startActivity(hakkimdaIntent);
    break;

    case R.id.ayar:

    Intent ayarIntenti = new Intent(getApplicationContext(), Ayar.class);
    startActivity(ayarIntenti);
    break;

    case R.id.cik:
    finish();
    break;

    }

    return super.onOptionsItemSelected(item);
    }

    @SuppressWarnings(“StatementWithEmptyBody”)
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_fetvalar) {
    soz.loadUrl(“http://siteadresi.com/yazili-fetva”);
    // Handle the camera action
    } else if (id == R.id.nav_anasayfa) {
    soz.loadUrl(“http://siteadresi.com/”);

    } else if (id == R.id.nav_fetvasor) {
    soz.loadUrl(“http://siteadresi.com/fetva-sor/”);

    } else if (id == R.id.nav_sorucevap) {
    soz.loadUrl(“http://siteadresi.com/soru-cevap/”);

    } else if (id == R.id.nav_kadin) {
    soz.loadUrl(“http://siteadresi.com/kadin/”);

    } else if (id == R.id.nav_fikih_dersleri) {
    soz.loadUrl(“http://siteadresi.com/fikih-dersleri/”);

    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
    }
    }

    • Merhaba hocam,
      Reklam kimlğini json web apiden nasıl çekebiliriz ?bunun ile ilgili bir çalışma yaparsanız çok güzel olur. Teşekkürler

    • hocam lütfen yardım edin günlerdir uğraşıyorum denemediğim kod kalmadı. sizin kodları denemedim şimdide reklam sayfasına gelince uygulama durduruldu diyip programdan çıkıyor ne yapacağımı şaşırdım

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?