2017-09-23 4 views
0

Je crée une application Android avec AdMob intégrée dans mon application. J'utilise AdMob pour diffuser des annonces après 20 secondes de chargement de WebView. le problème est lorsque l'utilisateur ferme l'application avant 20 secondes annonces interstitielles montrent toujours, ce qui est contre la politique google AdMob, comment puis-je faire que lorsque l'utilisateur quitte l'activité ou l'application, l'annonce interstitielle ne devrait pas être afficherAffichage d'une annonce interstitielle AdMob même après la fermeture de l'application

c'est mon Code:

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     interAd = new InterstitialAd(MainActivity.this); 
     interAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); 
     AdRequest adRequest = new AdRequest.Builder() 
       .addTestDevice("SEE_YOUR_LOGCAT_TO_GET_YOUR_DEVICE_ID") 
       .build(); 
     interAd.loadAd(adRequest); 
     interAd.setAdListener(new AdListener() { 
       @Override 
       public void onAdLoaded() { 
        interAd.show(); 
     } 
    }); 

    interAd.setAdListener(new AdListener() { 
     @Override 
     public void onAdClosed() { 
      // Code to be executed when the interstitial ad is closed. 
      Log.i("Ads", "onAdClosed"); 
      } 
     }); 
    } 
} , 20000); 

Répondre

0

Ajouter onBackpress et OnDestroy overides et retirez vos callbacks handlers et définissez la variable InterstitialAd à null dans chacun d'eux.

@Override 
protected void onBackpressed() { 
    handler.removeCallbacks(your handler name here); 
    interAd =null 
    super.onBackpressed(); 
} 

@Override 
protected void onDestroy() { 
    handler.removeCallbacks(your handler name here); 
    interAd =null 
    super.onDestroy(); 
} 

Si vous souhaitez également gérer cela si votre application passe en arrière-plan, ajoutez aussi OnPause.

@Override 
protected void onPause() { 
    handler.removeCallbacks(your handler name here); 
    interAd =null 
    super.onPause(); 
} 

Espérons que ça aide. Informez-moi si vous avez besoin d'aide supplémentaire.

0

Il suffit de passer votre gestionnaire quand OnDestroy appelé

Handler myHandler = new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 

      interAd = new InterstitialAd(MainActivity.this); 
      interAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); 
      AdRequest adRequest = new AdRequest.Builder() 
        .addTestDevice("SEE_YOUR_LOGCAT_TO_GET_YOUR_DEVICE_ID") 
        .build(); 
      interAd.loadAd(adRequest); 
      interAd.setAdListener(new AdListener() { 
       @Override 

       public void onAdLoaded() { 
        if(interAd.isLoaded() && interAd !=null) 
         interAd.show(); 
       } 
      }); 

      interAd.setAdListener(new AdListener() { 

      @Override 
      public void onAdClosed() { 
       // Code to be executed when the interstitial ad is closed. 
       Log.i("Ads", "onAdClosed"); 
      } 
    }); 

     } 
    } , 20000); 



@Override 
    protected void onDestroy() { 
     Log.d("MainActivty","onDestroy removing callbacks..."); 
     handler.removeCallbacks(myHandler); 
     interAd =null 
     super.onDestroy(); 

} 
+0

fonctionne pas erreur: types incompatibles. android.os.handler requis trouvé booléen et j'ai android.os.handler à l'importation aussi –