Ana sayfa MOBİL DÜNYA Android – Ödüllü Reklam Ekleme(Admob-Kotlin)

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

0

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([email protected], "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([email protected], "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([email protected], "onUserEarnedReward", Toast.LENGTH_SHORT).show()
            credit++
            textCredit.text = "Credit: $credit"
        }

        override fun onRewardedAdOpened() { //Reklam açıldı
            Toast.makeText([email protected], "onRewardedAdOpened", Toast.LENGTH_SHORT).show()
        }

        override fun onRewardedAdClosed() { //Reklam kapandı
            Toast.makeText([email protected], "onRewardedAdClosed", Toast.LENGTH_SHORT).show()
        }

        override fun onRewardedAdFailedToShow(errorCode: Int) { //Reklam açılırken hata aldı
            Toast.makeText([email protected], "onRewardedAdFailedToShow", Toast.LENGTH_SHORT).show()
        }
    }
    rewardedAd.show([email protected], 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([email protected], "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([email protected], "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([email protected], "onUserEarnedReward", Toast.LENGTH_SHORT).show()
                credit++
                textCredit.text = "Credit: $credit"
            }

            override fun onRewardedAdOpened() { //Reklam açıldı
                Toast.makeText([email protected], "onRewardedAdOpened", Toast.LENGTH_SHORT).show()
            }

            override fun onRewardedAdClosed() { //Reklam kapandı
                Toast.makeText([email protected], "onRewardedAdClosed", Toast.LENGTH_SHORT).show()
            }

            override fun onRewardedAdFailedToShow(errorCode: Int) { //Reklam açılırken hata aldı
                Toast.makeText([email protected], "onRewardedAdFailedToShow", Toast.LENGTH_SHORT).show()
            }
        }
        rewardedAd.show([email protected], 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.

BİR CEVAP BIRAK

Lütfen bir yorum yazın!
Lütfen Adınızı Girin!