Dari A ke Z: Iklan Interstitial Panduan kode dengan aplikasi demo
Dari A ke Z: Iklan Interstitial 
Panduan kode dengan aplikasi demo
Perkenalan
Dokumentasi berikut adalah walkthrough iklan Interstitial AdMob.
Step implementasi dapat berubah karena update. Silahkan cek info terbaru di halaman berikut: 
Prerequisites
Versi terbaru  Android Studio  dan  Google Play Services.
Download aplikasi demo
Untuk kebutuhan pembelajaran, silahkan download aplikasi demo disini.
Aplikasi demo berikut memiliki tiga  views , TITLE, GAME dan RESULT. Kamu akan mengimplementasi AdMob di aplikasi demo berikut.
#1: Cara yang sering digunakan developer
Instruksi: 
- Iklan interstitial sudah diimplementasikan di project demo. Cek implementasi createAndLoadInterstitialAd() di  ResultActivity .
 - Panggil  createAndLoadInterstitialAd()  method di  onCreate  method di  ResultActivity .
 
Setelah cek kode, silahkan bangun project dan jalankan aplikasi.
Bagaimana implementasi diatas dapat menyebabkan pelanggaran kebijakan? 
- Ad request berjalan secara  asynchronous , sehingga iklan bisa load dan dimunculkan secara tiba-tiba.
 - Hal ini menyebabkan  Accidental Click
 
#2: Cara mencegah pelanggaran
Cara fix implementasi untuk mencegah  accidental click :
- Jangan memunculkan interstitial secara otomatis ketika iklan sudah load.
 - Setelah user klik tombol RETRY, cek jika iklan interstitial sudah load atau belum.
 - IF : iklan interstitial sudah load: tampilkan iklan interstitial.
 - ELSE : tampilkan GAME  view .
 - Tampilkan GAME  view ketika iklan interstitial ditutup user.
 
Silahkan modifikasi kode interstitial sebagai berikut: 
- Hapus  ad listener di  createAndLoadInterstitialAd() method.
 - Di  onRetryButtonClick()  method, cek jika iklan interstitial sudah di load atau belum.
 - IF : iklan interstitial sudah load: tampilkan iklan interstitial.
 - ELSE : panggil  startGameActivity() method.
 - Di  ad listener  onAdClosed() , panggil  startGameActivity() method supaya game berikutnya dapat dimulai ketika user menutup iklan.
 
Mengubah createAndLoadInterstitialAd() method
Silahkan  hapus line kuning berikut di createAndLoadInterstitialAd() method di ResultActivity.
/**
     * Create InterstitialAd object and load ad.
     */
    private void createAndLoadInterstitialAd() {
        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                .addTestDevice("YOUR_DEVICE_HASH")
                .build();
        mInterstitialAd.setAdListener(new AdListener() {
            @Override 
            public void onAdLoaded() {
                super.onAdLoaded();
                mInterstitialAd.show();
            }
        });
        mInterstitialAd.loadAd(adRequest);
    }
Mengubah onRetryButtonClick() method
Ubah onRetryButtonClick() method di the ResultActivity sebagai berikut:
    /**
     * Called when "RETRY" button is clicked.
     * Show Interstitial Ad when ad has been loaded. Otherwise start Game Activity.
     */
    public void onRetryButtonClick(View view) {
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.setAdListener(new AdListener() {
                @Override
                public void onAdClosed() {
                    // When ad is closed, start Game Activity.
                    super.onAdClosed();
                    startGameActivity();
                }
            });
            mInterstitialAd.show();
        } else {
            startGameActivity();
        }
    }
Implementasi diatas masih belum optimal, mengapa?
- Jika user klik tombol RETRY terlalu cepat, iklan tidak dimunculkan karena belum sempat loading.
 - Pendapatan tidak optimal.
 
#3: Cara yang paling optimal (pre-caching) 
Silahkan modifikasi iklan interstitial sebagai berikut: 
- Buat sebuah  subclass dari Application class untuk sharing  object iklan interstitial yang sama diantara  class yang berbeda.
 - Load iklan di metode  onCreate() di  GameActivity .
 - Hapus line yang tidak dibutuhkan dari  ResultActivity dan modifikasi kode untuk menggunakan ad object Interstitial yang di share bersama.
 
Tambahkan "MyApplication" Class 
Tambahkan sebuah  subclass  Application (MyApplication) dan buat method helper yang memuat (load)/ membalikkan iklan interstitial. 
package com.example.tapin10s;
import android.app.Application;
import android.util.Log;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
/**
 * This is a subclass of Application used to provide shared objects for this app.
 */
public class MyApplication extends Application {
    private InterstitialAd mInterstitialAd;
    @Override
    public void onCreate() {
        super.onCreate();
    }
    /**
     * Load InterstitialAd when InterstitialAd hasn't been loaded yet.
     */
    synchronized public void loadInterstitialAd() {
        if (mInterstitialAd == null || !mInterstitialAd.isLoaded()) {
            mInterstitialAd = new InterstitialAd(this);
            mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
            AdRequest adRequest = new AdRequest.Builder()
                    .addTestDevice("YOUR_DEVICE_HASH")
                    .build();
            mInterstitialAd.setAdListener(new AdListener() {
                @Override
                public void onAdFailedToLoad(int errorCode) {
                    super.onAdFailedToLoad(errorCode);
                    Log.d("InterstitialAd", "onAdFailedToLoad with error: " +
errorCode);
                }
                @Override
                public void onAdLoaded() {
                    super.onAdLoaded();
                    Log.d("InterstitialAd", "onAdLoaded");
                }
            });
            mInterstitialAd.loadAd(adRequest);
        } else {
            Log.d("InterstitialAd", "InterstitialAd has been loaded");
        }
    }
    /**
     * Get the InterstitialAd for this Application.
     */
    synchronized public InterstitialAd getInterstitialAd() {
        if (mInterstitialAd == null) { 
            loadInterstitialAd();
        }
        return mInterstitialAd;
    }
}
Ubah AndroidManifest.xml 
Untuk menggunakan  class MyApplication, silahkan tambahkan line hijau  berikut di element aplikasi:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tapin10s" >
    <application
         android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".TitleActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".GameActivity" >
        </activity>
        <activity android:name=".ResultActivity" >
        </activity>
    </application>
</manifest>
Load InterstitialAd lebih awal 
Untuk load InterstitialAd, tambahkan line hijau  berikut di onCreate method di GameActivity.
// Get the MyApplication object.
MyApplication application = (MyApplication) getApplication();
// Load InterstitialAd.
application.loadInterstitialAd();   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);
        setTitle(screenName);
        resetGame();
        startCountDown();
       // Get the MyApplication object.
        MyApplication application = (MyApplication) getApplication();
        // Load InterstitialAd.
        application.loadInterstitialAd();
    }
Ubah ResultActivity 
Karena sekarang kita menggunakan object yang di share di class MyApplication, silahkan hapus  line kuning  di ResultActivity.
public class ResultActivity extends AppCompatActivity {
    private static final String screenName = "RESULT";
     private InterstitialAd mInterstitialAd;
    /**
     * Disable back button.
     */
    @Override
    public void onBackPressed() {
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        setTitle(screenName);
        showResult();
        loadBannerAd();
         createAndLoadInterstitialAd();
    }
    /**
     * Load Banner Ad.
     */
    private void loadBannerAd() {
        AdView mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                .addTestDevice("YOUR_DEVICE_HASH")
                .build();
        mAdView.loadAd(adRequest);
    }
    /**
     * Create InterstitialAd object and load ad.
     */
    private void createAndLoadInterstitialAd() {
        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                .addTestDevice("YOUR_DEVICE_HASH")
                .build();
        mInterstitialAd.loadAd(adRequest);
    }
Untuk memperoleh object InterstitialAd yang di share, silahkan tambahkan  line hijau  berikut di onRetryButtonClick() method.
    /** 
     * Called when "RETRY" button is clicked. 
    */
    public void onRetryButtonClick(View view) {
        // Get the MyApplication object.
        MyApplication application = (MyApplication) getApplication();
        // Obtain the shared InterstitialAd object.
        InterstitialAd mInterstitialAd = application.getInterstitialAd();
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.setAdListener(new AdListener() {
                @Override
                public void onAdClosed() {
                    // When ad is closed, start Game Activity.
                    super.onAdClosed();
                    startGameActivity();
                }
            });
            mInterstitialAd.show();
        } else {
            startGameActivity();
        }
    }
Sekian, terimakasih telah mengunjungi Blog Catatan Aan. Semoga bermanfaat dan selamat mencoba.




0 Response to "Dari A ke Z: Iklan Interstitial Panduan kode dengan aplikasi demo"
Posting Komentar