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.
Konu Başlıkları
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.
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.
7 – Açılan ekranda bize Uygulama Kimliği ve Reklam Kimliği verecektir. Bu kimlik verilerini kopyalayarak android projemize geçelim.
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.
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.