Android Admob Banner, Interstitial Reklam Ekleme(Google Play Services)


merhaba değerli Android Evreni ziyaretçileri,

bu dersimde neler öğreneceksiniz kısa başlıklar halinde sıralarsam :

– Admob banner reklam ekleme
– Admob interstitial reklam ekleme
– Admob banner reklamı animasyonlu bir şekilde gösterme
– Admob interstitial reklamı animasyonlu bir şekilde gösterme
– ‘Reklamlara bir kez tıklayın bir daha görünmesin’ sistemini gerçekleştirme

Evet kısa başlıklar halinde sıralarsam bu dersin sonunda bunların tamamını uygulamalı bir örnek ile öğrenmiş  olacaksınız. Başlayalım!

Ön Koşullar(Gereklilikler)

– Android Studio 1.0 -> Bu ders Android Studio 1.2.2 sürümü kullanılarak hazırlanmıştır. Tavsiyem sizin de en son sürüm olmadı en azından Android Studio 1.0 sürümünü kullanarak bu dersi takip etmenizdir. Ancak illa böyle olmasında gerek benzer adımlarla Eclipse ile de aynı sonuçlara ve aynı amaca ulaşabilirsiniz.

– En azından Api Level 9 veya üstü için uygulama geliştiriyor olmak -> bu koşul admob un istediği bir koşuldur, admob sdk sı (yazılım geliştirme kiti/aracı) minimum api level 9 u desteklemektedir.

Yeni Bir Proje Oluşturma

1. Android Studio yu açtıktan sonra ‘Start a new Android Studio project’ seçeneğine tıklayın.
2. Karşınıza projenin adı, şirket domaini, projenin pcnizdeki yeri gibi değerleri girmeniz istenen bir pencere gelecek. Bu kısmı keyfinize göre doldurabilirsiniz ya da benim kullandığım değerleri aşağıdaki ekran görüntüsünden alıp kullanabilirsiniz.(proje yeri elbetteki farklı olacaktır ona dikkat edin)

3. ‘Next’ ile diğer ekrana geçin, burada uygulamanızın çalışacağı platform veya platformları, ve de gerekli minimum sdk yı seçmelisiniz. Genelde Telefon ve Tablet için uygulamalar geliştiriyorum bu seçeği işaretleyip, minimum sdk için api level 9 u seçip ileriyi tıklayın. Minimum api level için 9 u seçmemizin tek nedeni daha önce de bahsettiğim gibi Admob sdk sının minimum bu api yi desteklemesidir.

4. Sonraki ekranda karşınıza bazı hazır aktivite taslakları gelecektir, bunlar geliştiricilerin hızlıca hazır aktivite taslakları ile projelerine başlayabilmeleri için google tarafından hazırlanmıştır. Bunlardan ‘Blank Activity’ yi seçip ileriyi tıklayın. Şuan temel amacımız admob reklam, boş bir aktivite taslağı işimizi görmeye yeter.

5. Sonraki ekranda ana aktivitenizi ve ona ait bazı kaynakları adlandırabilirsiniz. Ancak varsayılan değerleri de kullanabilirsiniz. Yani sadece ‘Finish’ e tıklayıp Android Studio nun projeyi oluşturmasını bekleyin. Benim kullandığım değerleri aşağıdaki ekran görüntüsünden görebilirsiniz.

6. Bu adımda android studio projenizi oluşturmuş olmalı ve project explorer da android tabını seçerseniz şöyle bir görüntü olmalıdır :

Burada ilk yapmanız gerek şey MainActivity eğer ki ActionBarActivity adlı sınıfı extend ediyorsa bunu AppCompatActivity olarak değiştirmenizdir. Çünkü destek kütüphanelerinin yeni sürümlerinde artık ActionBarActivity değil AppCompatActivity kullanılmaktadır. Değişimi yaptıktan sonra AppCompatActivity için gerekli sınıfı import edin. Ve Ctrl+Shift+O kısayolu ile importlarınızı yeniden organize edin. Bu şekilde kullanılmayan-gereksiz importları android studio silecektir.

Projeyi bir kereliğine test amaçlı Run –> Run-app(Shift+F10 kısayolu ile de çalıştırabilirsiniz) ile çalıştırın ve test edin.

Admob SDK sını Uygulamaya Ekleme

Admob tan reklamları istemeniz ve göstermeniz için admob sdk sına ihtiyacınız var. Bunu uygulamanıza eklemek için uygulamaya(app) ait build.gradle dosyanıza gerekli dependency(bağımlılık,bağlılık) i eklemeniz gerek. Project Explorer da android tabı seçiliyken altlardaki Gradle Scripts bölümü altında build.gradle(Module:app) adlı dosyayı açın ve dependencies(bağımlılıklar) bölümünü bulup google play services ads kütüphanesini aşağıda eklediğim gibi ekleyin.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.androidevreni.admobreklam"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.google.android.gms:play-services-ads:7.5.0'

}

Bu eklemeyi yaptıktan sonra üstte gradle dosyaları değişti projeyi senkronize etmeniz gerek gibi bir uyarı gelebilir, sağdaki “Sync now” a tıklayın ve android studio nun projenizi senkronize etmesini bekleyin. Burada gradle in yaptığı şey eklediğiniz kütüphaneyi daha önce indirilmemiş ise indirip compile edip projenize eklemesidir, tüm bunlar yapıldıktan sonra varsa hata veya hatalar “Messages”(mesajlar) bölümünde gösterilir. Ayrıca google play services ads kütüphanesini gradle google depolarından alır yani eğer ki eklediğiniz sürüm daha önce indirilmemiş ise bu genelde eklediğiniz sürümü içeren google deposu veya  google destek deposu indirilmemiş demektir, gradle size bu uyarıyı da mesajlar bölümünde yapar. Şunun gibi bir uyarı ile “istediğiniz google play services sürümü bulunamadı google destek deposunu kurup/güncelleyip projeyi senkronize edin..” Bu ibareye tıkladığınızda kendisi gerekli google destek deposunu indirir veya varsa günceller daha sonra da projeyi senkronize eder. Proje senkronizasyonu bittikten sonra başka hata olmaması gerekir. Ve yine uygulamayı çalıştırarak test ettikten sonra dersin geri kalanına devam edin.

Manifest Dosyasının Düzenlenmesi

– Özellikle admob interstitial (tam ekran) reklamların gösterilmesi için bazı aktiviteler ihtiyaç vardır. Manifest dosyasını bu yüzden düzenlemek gerekir.

– Reklamların netten çekilebilmesi için elbetteki bazı izinlere ihtiyaç vardır.

– Ayrıca yine admob sdk sının minimum api level 9 u gerektirdiğini hatırlatayım bunun da daha önce düzenlemediyse düzenlenmesi gerekir.

Admob resmi dökümanı manifest dosyasında şu eklemeleri-değişiklikleri yapmamızı istemektedir. Kodun içine gerekli yerlere açıklamalar bıraktım incelersiniz.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidevreni.admonreklam">

    <!-- google reklamlarının çalışması için gerekli izinler -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

        <!-- bu meta data tagı google play services in kullanılması için gerekdir -->
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name="com.androidevreni.admobreklam.MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- özellikle tam ekran reklamların gösterimi için gerekli AdActivity isimli reklamlar aktivitesi -->
        <activity
            android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
            android:theme="@android:style/Theme.Translucent" />

    </application>

</manifest>

Bütün hazırlıklar tamamlandı artık banner reklam ekleme ile reklam gösterimine başlayabiliriz.

Banner Reklam Ekleme

1. Ad Unit ID (reklam birimi kimliği)

Banner reklamlarınız uygulamanızda bulunduğu aktiviteye,yere göre farklı reklam birimi kimliğine sahip olacaklardır. Bunları admob yönetim panelinden uygulamanıza banner reklam eklerken alabilirsiniz. Bu kimlik numaralarını ister direk java kodunua eklersiniz ister strings.xml dosyanıza string olarak ekler oradan çekersiniz. Ben bu derste strings.xml dosyasına ekleyip oradan çekeceğim.

res/values klasörleri altındaki strings.xml dosyasını açın ve şu string i ekleyin :


<string name="banner_ad_unit_id">ca-app-pub-3940256099942544/6300978111</string>

Burada verdiğim reklam birimi id sini admob kendisi vermektedir bu tamamen test içindir reklamlar test reklamları olacaktır.
Normalde projelerinizde kendi reklam birimi id lerinizi kullanacaksınız ancak dikkatli olmanız gereken bir nokta var. Uygulamanızı geliştirirken testler yaparken canlı admob üretim reklamlarını kullanmanız admob politikasına aykırıdır, bu yüzden uygulamanızı geliştirirken her zaman admob sdk sından addTestDevice metodu ile test cihazları eklemeli ve test reklamları istemelisiniz. Benim kendi projelerimde kullandığım şekliyle örnek vermiş olayım :

   AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR).addTestDevice("18CB0811B5B045392CCF7D1A8B5680C9").addTestDevice("B3731EE4F27B3090B8EEDA5BF343B9AF")
                .addTestDevice("E6EA80327521FC62B3EC34DC14D8449C").addTestDevice("7B7C7ADD6892432814410DC40FF34EAA").addTestDevice("AA17F939D7E958535BD4F590A68964D7")
                .addTestDevice("312B20426C8A51D609E7D2DA07CD5DBF").addTestDevice("myDevice").build();

Gördüğünüz gibi birden fazla farklı cihazı test cihazı olarak eklemiş bulunmaktayım. Aralarında emülatör olan da var, gerçek cihaz olanlar da var. Bunların tamamında test reklamları görmekte ve test reklamları ile uygulamamı geliştirmekte ve test etmekteyim. addTestDevice metoduna cihazın id sini göndererek cihazı test cihazı olarak eklemiş oluyorsunuz.

Ek olarak özellikle cihazınızın id sini öğrenmenize gerek yok, bir kereliğine uygulamanızı aşağıda verdiğim test cihazı istek koduyla birikte çalıştırdığınızda admob sdk sı logcat e cihazınızın id sini yazdıracaktır. Oradan alıp yukarıda eklediğim gibi ekleyebilirsiniz.

   AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR).addTestDevice("myDevice").build();

Banner reklamı xml den veya java dan ekleyebilirsiniz. İkisinin tek farkı xml ile eklediğinizde arayüz ile kodu birbirinden ayırmış oluyorsunuz ki bu tüm geliştiricilerin tavsiye ettiği şekliyledir.

MainActivity.java ya ait xml dosyası olan activity_main.xml dosyasını açın. Bu dosya res/layout klasörü altındadır. Aktivitelere ait sınıfların başlangıcında solda bir xml sayfa simgesi göreceksiniz buna tıkladığınızda android studio size bulunduğunuz aktivite ile ilişkili xml dosyalarını gösterecektir. Buradan activity_main.xml e tılayarak hızlıca ulaşabilirsiniz. Ekran görüntüsüne göz atın ve kısayolu uygulayın :

activity_main.xml dosyasına öncelikle reklamlar için kullanılan ek namespace(ads) için gerekli satırı ekleyin. Daha sonra  banner reklamın gösterileceği adview i eklemelisiniz. activity_main.xml in son hali aşağıdaki gibi olmalıdır.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true">
    </com.google.android.gms.ads.AdView>

</RelativeLayout>

Burada neler yaptığımızda dikkat edin, banner i en alta ve ortaya gelecek şekilde yerleştiriyoruz.
Ve de reklam birimi kimliği olarak daha önce strings.xml e eklediğimiz banner_ad_unit_id string i olarak belirliyoruz.

Bu iki adımdan sonra banner için xml deki işiniz bitmiş demektir. MainActivity.java dosyasını açıp aşağıdaki kodları setContentView(R.layout.activity_main) satırından hemen sonra ekleyin.

AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);

MainActivity.java nın son hali aşağıdaki gibi olacaktır:

package com.androidevreni.admobreklam;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;

import com.androidevreni.admonreklam.R;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AdView mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, 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.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

Uygulamayı çalıştırdığınızda en altta ortalanmış şekilde bir test banner reklamı görmelisiniz. Admob ta birden fazla banner reklam tipi vardır, bunlarla alakali bilgiye ve kullanım yöntemlerine şuradan ulaşabilirsiniz. Uygulamayı çalıştırdığınızda ekran görüntüsü şöyle olmalıdır :

Evet dersin başında bahsettiğim 5 başlıktan 1 ini hallettik, diğerlerini de zaman ayırabildiğim vakit tek tek anlatacağım. Sizden ricam henüz facebook sayfamı beğenmediyseniz beğenmeniz, ve de Gazeteler uygulamamı facebook ve/veya google+ ve/veya twitter hesabınızdan paylaşarak bana destek olmanızdır. Desteğiniz beni dersler hazırlamaya inanılmaz derecede teşvik edecektir. Lütfen destek olun Android Öğrenin! :) Unutmayın dersin başında dediğim gibi bu derste şu başlıkların tamamı ayrıntısına kadar anlatılacak:

– Admob banner reklam ekleme (bu başlık anlatıldı)
– Admob interstitial reklam ekleme
– Admob banner reklamı animasyonlu bir şekilde gösterme
– Admob interstitial reklamı animasyonlu bir şekilde gösterme
– ‘Reklamlara bir kez tıklayın bir daha görünmesin’ sistemini gerçekleştirme

Desteğiniz bu başlıkları ayrıntısına kadar ve örneğiyle anlatmamı hızlandıracaktır, herkese iyi çalışmalar! :)

Kaynaklar:
https://developers.google.com/admob/android/quick-start
https://developers.google.com/admob/android/banner

Şunlar da ilginizi çekebilir

LEAVE A COMMENT