Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How To preload AdMob interstitial ad and send to another android activity using intent

I need some help regarding AdMob interstitial ad.

I want to preload the interstitial ad in one activity. this is straight forward.

// Create an ad.
        interstitialAd = new InterstitialAd(this);
        interstitialAd.setAdUnitId(AD_UNIT_ID);

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

        // Load the interstitial ad.
        interstitialAd.loadAd(adRequest);

Now I want to send the interstitial Ad to another activity using intent. I don't know how to send it using

intent.putExtra("myAd", interstitialAd);

Thanks in advance.

like image 764
ali abbas Avatar asked Nov 10 '14 20:11

ali abbas


People also ask

How do you show interstitial ad before launching new activity after click a button?

Show the ad Interstitial ads should be displayed during natural pauses in the flow of an app. Between levels of a game is a good example, or after the user completes a task. To show an interstitial, use the show() method.

How do I close an interstitial ad programmatically?

dispatchKeyEvent(new KeyEvent(KeyEvent. ACTION_DOWN, KeyEvent. KEYCODE_BACK)); As whenever you press on back button the interstitial ad is closed so firing the back button event will eventually close the interstitial ad.

How much do interstitial ads pay AdMob?

With the correct implementation, interstitial ads can be a great way to monetize your app. By using playable and video interstitials, developers can expect an average eCPMs ranging from $10 to $20 in most tier 1 markets. The average interstitial ad eCPM can range from $4 to $6.


1 Answers

Interstitial ads are not meant or built to be passed around like that using intents' extras.

It's better to

  • recreate & reload an ad in the next activity
  • make an extra public class that holds the interstitial ad, put it there in activity A and retrieve it from there in activity B

Example for 2nd case (semi pseudo code):

public class AdManager {
    // Static fields are shared between all instances.
    static InterstitialAd ad;
    private Context ctx;

    public AdManager(Context ctx) {
        this.ctx = ctx;
        createAd();
    }

    public void createAd() {
        // Create an ad.
        ad = new InterstitialAd(ctx);
        ad.setAdUnitId(AD_UNIT_ID);

        final AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                .addTestDevice(TEST_DEVICE_ID).build();

        // Load the interstitial ad.
        ad.loadAd(adRequest);
    }

    public InterstitialAd getAd() {
        return ad;
    }
}

Using

Activity A

AdManager adManager = new AdManager();
adManager.createAd();

Activity B

AdManager adManager = new AdManager();
InterstitialAd ad = adManager.getAd();
if (ad.isLoaded()) {
    ad.show();
}
like image 166
Tim Avatar answered Oct 17 '22 10:10

Tim