2016-11-06 1 views
1

j'ai développé une application Android et j'ai intégré interstitiel AdMob de Google. Le problème est que sur l'émulateur, la publicité est affichée avec succès mais sur mon appareil elle n'apparaît pas. J'ai créé l'identifiant d'unité publicitaire que j'ai créé sur AdMob et j'ai lié l'application à adMob.Pourquoi les annonces interstitielles ne présentant pas sur l'appareil

Voici mon code:

InterstitialAd mInterstitialAd; 

mInterstitialAd = new InterstitialAd(this); 
     mInterstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen)); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     // Load ads into Interstitial Ads 
     mInterstitialAd.loadAd(adRequest); 
     mInterstitialAd.setAdListener(new AdListener() { 
      public void onAdLoaded() { 
       showInterstitial(); 
      } 
     }); 

maintenant la fonction showInterstitial():

private void showInterstitial() { 
    Random r = new Random(); 
    if (mInterstitialAd.isLoaded()) { 
     new android.os.Handler().postDelayed(
       new Runnable() { 
        public void run() { 

         mInterstitialAd.show(); 
         AdRequest adRequest = new AdRequest.Builder().build(); 
         mInterstitialAd.loadAd(adRequest); 
        } 
       }, 
       r.nextInt(7000 - 5000) + 5000); 

    } 
} 

J'ai ajouté un délai d'attente aléatoire et lorsque l'annonce est chargé, il sera affiché.

et dans mon dossier, je gradle ajouté ce qui suit:

compile 'com.google.android.gms:play-services-ads:9.8.0' 

NB. J'ai une autre bannière publicitaire dans l'application.

sur l'émulateur, il fonctionne très bien voici une capture d'écran:

enter image description here

Quelqu'un a une idée pourquoi l'annonce interstitiel ne montre pas sur les appareils? . Je vous remercie.

+0

Quel code d'erreur recevez-vous? Vérifiez la sortie de Logcat. – earthw0rmjim

Répondre

2

je résolu le problème, mais changer la façon dont je l'appelle ma fonction showInterstitial(). Le problème était lié au chargement de l'annonce. Voici ma solution:

@Override 
    public void onResume() { 
     // Start or resume the game. 
     super.onResume(); 
     showInterstitial(); 
    } 
    @Override 
    protected void onStart() { 
     super.onStart(); 
     showInterstitial(); 
    } 

Je montre l'annonce lorsque l'activité commence ou quand il est repris, nous avons besoin d'un événement pour afficher l'annonce.

Voilà comment je déclarais l'annonce interstitielle et ma showInterstitial() fonction:

//Interstitial 
      private InterstitialAd mInterstitialAd; 
      mInterstitialAd = new InterstitialAd(this); 
      mInterstitialAd.setAdUnitId(getString(R.string.banner_ad_unit_interstitial)); 
      AdRequest adRequestInterstitial = new AdRequest.Builder().addTestDevice("deviceid").build(); 
      mInterstitialAd.loadAd(adRequestInterstitial); 

      mInterstitialAd.setAdListener(new AdListener() { 
       @Override 
       public void onAdClosed() { 

       } 

       @Override 
       public void onAdLoaded() { 
        mAdIsLoading = false; 
        showInterstitial(); 
       } 

       @Override 
       public void onAdFailedToLoad(int errorCode) { 
        mAdIsLoading = false; 
       } 
      }); 

Ceci est mon résultat sur mon appareil Samsung:

enter image description here

Je pense que la question était.

+0

Vous économisez la vie .. !! : P Merci de m'avoir aidé à gagner. lol –

0

utilisation addTestDevice (« ») "méthode alors que votre création demande d'annonces.

AdRequest adRequest = new AdRequest.Builder().addTestDevice("deviceid").build(); 

Le deviceId peut être obtenu en affichant la sortie logcat après avoir créé une nouvelle annonce. Rechercher "ads" Tag dans le log il montrera addTestDevice ("une certaine valeur") tout en demandant des annonces.

1
AdRequest adRequest = new AdRequest.Builder().addTestDevice("deviceid").build(); 

Utilisez ceci pour le dispositif de test.