Home > OS >  Interstitial advertising (admob) only works once
Interstitial advertising (admob) only works once

Time:06-16

These days I am doing a test, the objective is to click on a button to go to activity2 and show the interstitial advertising. For now this is the result thanks to information from: link

The problem: Upon returning to the main page (MainActivity), I pressed the button to re-enter activity2 and it is no longer displayed. Only if I close the application and open the application and press the activity button 2 the advertising is displayed.

MainActivity code

public class MainActivity extends Activity {


    private InterstitialAd mInterstitialAd;
    private static final String TAG = "InfoApp";
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);


     //***** Initialize the Mobile Ads SDK.*********** -//
        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });
        //**********************************************************//

      adrequest_interstitial = new AdRequest.Builder().build();

      InterstitialAd.load(this,ConfigPubli.Ads_interstitial, adrequest_interstitial,
                new InterstitialAdLoadCallback()
                {
                    @Override
                    public void onAdLoaded(@NonNull InterstitialAd interstitialAd)
                    {
                        mInterstitialAd = interstitialAd;
                        Log.i(TAG, "onAdLoaded");

                    }

                    @Override
                    public void onAdFailedToLoad(@NonNull LoadAdError loadAdError)
                    {
                        // Handle the error
                        Log.i(TAG, loadAdError.getMessage());
                        mInterstitialAd = null;
                    }

                });
     }


      public void adstot(Intent i){


        mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
            @Override
            public void onAdDismissedFullScreenContent() {
                mInterstitialAd = null;
                startActivity(i);
                
            }

            @Override
            public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                mInterstitialAd = null;
                startActivity(i);

            }

        });
    }



    public void page2(View view){ //button

        Intent i = new Intent (this, Activity2.class);
        i.putExtra("valor","page2");

        int randomAd = (int)(Math.random()*10);
        if (mInterstitialAd != null && randomAd<=1) {   
            adstot(i);
            mInterstitialAd.show(this);   
        }
        else{
            startActivity(i);
        }   
     }
}

Thanks for the answers

CodePudding user response:

Whenever InterstitialAd has been shown, the variable mInterstitialAd was set to null. So, how mInterstitialAd can be shown twice?

You should make a new request to get an interstitial just after mInterstitialAd = null;

Try like below:

public class MainActivity extends Activity {


    private InterstitialAd mInterstitialAd;
    private static final String TAG = "InfoApp";
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);


     //***** Initialize the Mobile Ads SDK.*********** -//
        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
                
                // Initialization complete
                // You are now free to make an ad request
                loadAnInterstitial();
            }
        });
        //**********************************************************//

     }

    private void loadAnInterstitial(){
      adrequest_interstitial = new AdRequest.Builder().build();

      InterstitialAd.load(this,ConfigPubli.Ads_interstitial, adrequest_interstitial,
                new InterstitialAdLoadCallback()
                {
                    @Override
                    public void onAdLoaded(@NonNull InterstitialAd interstitialAd)
                    {
                        mInterstitialAd = interstitialAd;
                        Log.i(TAG, "onAdLoaded");

                    }

                    @Override
                    public void onAdFailedToLoad(@NonNull LoadAdError loadAdError)
                    {
                        // Handle the error
                        Log.i(TAG, loadAdError.getMessage());
                        mInterstitialAd = null;
                    }

                });
      }

      public void adstot(Intent i){


        mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
            @Override
            public void onAdDismissedFullScreenContent() {
                mInterstitialAd = null;
                startActivity(i);
                
                // make a new ad request here
                loadAnInterstitial();
                
            }

            @Override
            public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                mInterstitialAd = null;
                startActivity(i);
                
                // make a new ad request here
                loadAnInterstitial();
                
            }

        });
    }



    public void page2(View view){ //button

        Intent i = new Intent (this, Activity2.class);
        i.putExtra("valor","page2");

        int randomAd = (int)(Math.random()*10);
        if (mInterstitialAd != null && randomAd<=1) {   
            adstot(i);
            mInterstitialAd.show(this);   
        }
        else{
                  
            startActivity(i);

            // make a new ad request here
            loadAnInterstitial();
        }   
     }
}

That's all. Hope it will help.

CodePudding user response:

Updated code (another version): I have added an (if), after 6 clicks of the button it will load a new ad.

  public void page2(View view){ //button
    
            Intent i = new Intent (this, Activity2.class);
            i.putExtra("valor","page2");
    
            int randomAd = (int)(Math.random()*10);
            if (mInterstitialAd != null && randomAd<=1) {   
                adstot(i);
                mInterstitialAd.show(this);   
            }
            else{
                      
                startActivity(i);
    
                if(countclick==6)
                {
                 loadAnInterstitial(); 
                }else{ 
                  countclick=countclick 1;
                 }
            }   
         }

It works!, I hope that google admob does not consider that it is poorly implemented.

  • Related