Android – Ödüllü Reklam Ekleme (Admob-Kotlin)

Merhaba sevgili android geliştiricileri. Önceki yazımda uygulamamıza banner ve geçiş reklamı eklemeyi  anlatmıştım. Bu yazımda geçiş reklamına benzer ama izlemesi zorunlu bir reklam olan ödüllü reklamı anlatacağım. Reklamın amacı reklamın sonuna kadar izlenmesi ve karşılığın da kullanıcıya kredi verilmesi.

Admob Uygulama ve Reklam Oluşturma

Önce Admob sitesine giderek google hesabımızla giriş yapalım.

1 – Uygulamalar > Uygulama Ekle‘ye tıklayarak uygulama oluşturalım.

2 – Uygulamamız henüz Play Store’da olmadığı için Hayır’ı seçelim.

3 – Uygulama adı ve Platfom seçerek devam edelim.

4 – Artık reklam uygulamamız hazır. Reklam Birimi Oluştur seçeneğine tıklayarak devam edelim.

5 – Açılan reklam seçeneklerinden konumuz ile alakalı olan Ödüllü reklamı seçelim.

 

Admob ödüllü reklam oluşturma

6 – Son olarak oluşturacağımız Ödüllü reklamımız için bir isim girelim ve ‘Reklam Birimi Oluştur’ tuşu ile kurulumu tamamlayalım.

 

Admob ödüllü reklam kaydetme

7 – Açılan ekranda bize Uygulama Kimliği ve Reklam Kimliği verecektir. Bu kimlik verilerini kopyalayarak android projemize geçelim.

Admob ödüllü reklam ve reklam id’si alma

 

Android Admob Kurulumu

Kurulumu Google Developers dökümanlarından yardım alarak yapacağız.

1 – Öncelikle <project>/app/build.gradle içerisine:

implementation 'com.google.android.gms:play-services-ads:18.2.0'

Kütüphanesini ekliyoruz. Ardından ‘Sync Now‘ tuşu ile senkronizasyonu başlatıyoruz.

2 – AndroidManifest.xml dosyamıza aşağıdaki kodu kendi uygulama kimliğimiz ile birlikte ekliyoruz.

<manifest>

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
    <application>
      <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="UYGULAMA_KIMLIGI"/>
    </application>
</manifest>

3 – MainActivity.kt içerisinde onCreate() metodu altına aşağıdaki init kodunu ekliyoruz.

MobileAds.initialize(this)

4 – Kredi sayımızı takip etmek için tasarım kısmını halledelim.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:layout_gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textCredit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Credit: 0"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Rewarded Ad"
        android:onClick="rewardAd"/>

</LinearLayout>

5 – Button onClick fonksiyonuna reklam yüklemeyi ekleyelim.

fun rewardAd(view: View){
    var rewardedAd: RewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917") //Reklamı oluşturuyoruz
    val adLoadCallback = object : RewardedAdLoadCallback() {
        override fun onRewardedAdLoaded() { //Reklam yüklenince çalışıyor
            Toast.makeText(this@MainActivity, "onRewardedAdLoaded", Toast.LENGTH_SHORT).show()
            showAd(rewardedAd) //Reklamı başlatıyoruz
        }

        override fun onRewardedAdFailedToLoad(errorCode: Int) {
            //Reklam yükleme sırasında hata alınca çalışıyor
            Toast.makeText(this@MainActivity, "onRewardedAdFailedToLoad", Toast.LENGTH_SHORT).show()
        }
    }
    val adRequest: AdRequest
    if (BuildConfig.DEBUG) {//Eğer proje debug modunda ise reklamları test olarak başlatacağız.
        adRequest = AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build()
    } else {//Eğer release modunda ise normal başlatıyoruz.
        adRequest = AdRequest.Builder().build()
    }
    rewardedAd.loadAd(adRequest, adLoadCallback) //Reklam yüklemeyi başlatıyoruz
}

6 – Son olarak eğer reklam yüklemesi başarılı ise reklamı göstereceğimiz fonksiyonu yazalım.

private fun showAd(rewardedAd: RewardedAd){
    val adCallback = object : RewardedAdCallback() {
        override fun onUserEarnedReward(p0: com.google.android.gms.ads.rewarded.RewardItem) {
            //Kredi alındı
            Toast.makeText(this@MainActivity, "onUserEarnedReward", Toast.LENGTH_SHORT).show()
            credit++
            textCredit.text = "Credit: $credit"
        }

        override fun onRewardedAdOpened() { //Reklam açıldı
            Toast.makeText(this@MainActivity, "onRewardedAdOpened", Toast.LENGTH_SHORT).show()
        }

        override fun onRewardedAdClosed() { //Reklam kapandı
            Toast.makeText(this@MainActivity, "onRewardedAdClosed", Toast.LENGTH_SHORT).show()
        }

        override fun onRewardedAdFailedToShow(errorCode: Int) { //Reklam açılırken hata aldı
            Toast.makeText(this@MainActivity, "onRewardedAdFailedToShow", Toast.LENGTH_SHORT).show()
        }
    }
    rewardedAd.show(this@MainActivity, adCallback) //reklamı başlat
}

7 – Kodların son hali

MainActivity.kt

class MainActivity : AppCompatActivity() {

    private var credit: Int = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        MobileAds.initialize(this)
    }

    fun rewardAd(view: View){
        var rewardedAd: RewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917") //Reklamı oluşturuyoruz
        val adLoadCallback = object : RewardedAdLoadCallback() {
            override fun onRewardedAdLoaded() { //Reklam yüklenince çalışıyor
                Toast.makeText(this@MainActivity, "onRewardedAdLoaded", Toast.LENGTH_SHORT).show()
                showAd(rewardedAd) //Reklamı başlatıyoruz
            }

            override fun onRewardedAdFailedToLoad(errorCode: Int) {
                //Reklam yükleme sırasında hata alınca çalışıyor
                Toast.makeText(this@MainActivity, "onRewardedAdFailedToLoad", Toast.LENGTH_SHORT).show()
            }
        }
        val adRequest: AdRequest
        if (BuildConfig.DEBUG) {//Eğer proje debug modunda ise reklamları test olarak başlatacağız.
            adRequest = AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build()
        } else {//Eğer release modunda ise normal başlatıyoruz.
            adRequest = AdRequest.Builder().build()
        }
        rewardedAd.loadAd(adRequest, adLoadCallback) //Reklam yüklemeyi başlatıyoruz
    }

    private fun showAd(rewardedAd: RewardedAd){
        val adCallback = object : RewardedAdCallback() {
            override fun onUserEarnedReward(p0: com.google.android.gms.ads.rewarded.RewardItem) {
                //Kredi alındı
                Toast.makeText(this@MainActivity, "onUserEarnedReward", Toast.LENGTH_SHORT).show()
                credit++
                textCredit.text = "Credit: $credit"
            }

            override fun onRewardedAdOpened() { //Reklam açıldı
                Toast.makeText(this@MainActivity, "onRewardedAdOpened", Toast.LENGTH_SHORT).show()
            }

            override fun onRewardedAdClosed() { //Reklam kapandı
                Toast.makeText(this@MainActivity, "onRewardedAdClosed", Toast.LENGTH_SHORT).show()
            }

            override fun onRewardedAdFailedToShow(errorCode: Int) { //Reklam açılırken hata aldı
                Toast.makeText(this@MainActivity, "onRewardedAdFailedToShow", Toast.LENGTH_SHORT).show()
            }
        }
        rewardedAd.show(this@MainActivity, adCallback) //reklamı başlat
    }
}

Şimdi test etmek için emulatorü çalıştıralım.

Admob ödüllü reklam sunumu

Testimiz başarı ile tamamlandı ve reklamımız görüntülendi ve reklamın ardından krediyi aldık. Bu yazıda android rewarded ad konusuna yer verdik. Proje kodlarına buradan ulaşabilirsiniz. Soru, görüş ve önerileriniz için lütfen yorum yapmayı unutmayın.

Photo of author

Mehmet Kurtgöz

Android Developer.

Yorum yapın