2012-06-19 3 views
10

Ich habe viele Blogs versucht, aber niemand gibt die Schritt für Schritt Lösung. Sollte ich etwas auf der AdMob-Seite bearbeiten? Ich habe die Seite "Ad Sit/App" unter Sites & Tab Apps erstellt.Wie erstellt man Android Ad Interstitial?

habe ich diesen Code:

interstitial = new InterstitialAd(this, "MyAdMobID"); 
// Set Ad Listener to use the callbacks below 
interstitial.setAdListener(this); 
// Create ad request 
AdRequest adRequest = new AdRequest(); 
adRequest.addTestDevice(AdRequest.TEST_EMULATOR); 
// Begin loading your interstitial  
interstitial.loadAd(adRequest); 
adRequest.setTesting(true); 
+0

Wenn angenommen wird, dass "MyAdMobId" durch Ihre tatsächliche ID ersetzt wird und Sie in einem Emulator testen, sollte dies funktionieren. Was siehst du in den Protokollen? (Beachten Sie, dass AdMob erfordert, dass Sie auf die weiße Liste gesetzt werden, damit Interstitials im Netzwerk geschaltet werden.) –

+0

Keine Einträge im Protokoll, aber wie kann ich wissen, ob ich auf die weiße Liste gesetzt wurde, um Netzwerk-Interstitials zu liefern? –

+0

Sie sind wahrscheinlich nicht auf der weißen Liste. AdMob bietet nur einigen wenigen Netzwerk-Interstitials (siehe [hier] (https://developers.google.com/mobile-ads-sdk/docs/android/advanced#overview)). Sofern Sie nicht auf die Whitelist gesetzt sind, können Sie nur Interstitial-Test-Interstitials oder Interstitial-Interstitial-Anzeigen erhalten, wenn Sie eine Interstitial-Hausanzeigenkampagne einrichten. –

Antwort

7

den letzten Android Framework, habe ich herausgefunden, dass ich die Anzeige geschlossen wird, um die Last() Funktion jedes Mal aufzurufen.

import com.google.android.gms.ads.*; 
import android.os.Handler; 
import android.os.Looper; 
import android.app.Activity; 

class MyActivity extends Activity implements AdListener { 
    private InterstitialAd adView; // The ad 
    private Handler mHandler;  // Handler to display the ad on the UI thread 
    private Runnable displayAd;  // Code to execute to perform this operation 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    adView = new InterstitialAd(mContext); 
    adView.setAdUnitId("ca-app-pub-XXXXXXXXXX"); 
    adView.setAdListener(this); 
    mHandler = new Handler(Looper.getMainLooper()); 
    displayAd = new Runnable() { 
     public void run() { 
     runOnUiThread(new Runnable() { 
      public void run() { 
      if (adView.isLoaded()) { 
       adView.show(); 
      } 
      } 
     }); 
     } 
    }; 
    loadAd(); 
    } 

    @Override 
    public void onAdClosed() { 
    loadAd(); // Need to reload the Ad when it is closed. 
    } 

    void loadAd() { 
    AdRequest adRequest = new AdRequest.Builder() 
    //.addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
    .build(); 

    // Load the adView object witht he request 
    adView.loadAd(adRequest); 
    } 

    //Call displayInterstitial() once you are ready to display the ad. 
    public void displayInterstitial() { 
    mHandler.postDelayed(displayAd, 1); 
    } 
} 
+0

Danke für das 'loadAd' im' onAdClosed'. Damit können Sie eine weitere Anzeige schalten. –

11

Im Gegensatz zu Bannern, interstitielle Anzeigen automatisch, sobald ihre loaded nicht zeigen. Sie müssen auf den Rückruf von AdMob onReceiveAd() warten und innerhalb dieses Rückrufs interstital.show() anrufen, um Ihr Interstitial anzuzeigen.

public YourActivity extends Activity implements AdListener { 
    ... 

    @Override 
    public void onReceiveAd(Ad ad) { 
    Log.d("OK", "Received ad"); 
    if (ad == interstitial) { 
     interstitial.show(); 
    } 
    } 
} 

prüfen ein Codebeispiel here aus. In diesem Beispiel wird das Interstitial angezeigt, sobald es empfangen wurde. Alternativ können Sie warten, bis der Interstitial-Zeitraum angezeigt wird, z. B. am Ende einer Spielstufe, und Sie können interstitial.isReady() überprüfen, um zu sehen, ob Sie das Interstitial anzeigen können.

3

Ich denke, dieser Beispielcode wird Ihnen helfen.

How to Add AdMob Interstitial Ads in Your Android Apps

In diesem Beispiel zeigt es Ihnen den gesamten Quellcode. Und es bietet auch einige Lösungen für häufige Fehler. Zum Beispiel onFailedToReceiveAd error solution und no ad return solution. Sie können den Quellcode auch von dort herunterladen.

1

FYI, die interstitial.isReady() Methode wird nicht mehr unterstützt. Dies ist die richtige Methode:

if (interstitial.isLoaded()) { 
    interstitial.show(); 
} 
6

Sie AdListener implementieren kann nicht mehr, habe ich es auf diese Weise:

final mInterstitialAd = new InterstitialAd(this); 
mInterstitialAd.setAdUnitId(getResources().getString(R.string.interstitial_ad_unit_id)); 
AdRequest adRequestInter = new AdRequest.Builder().build(); 
mInterstitialAd.setAdListener(new AdListener() { 
    @Override 
    public void onAdLoaded() { 
     mInterstitialAd.show(); 
    } 
}); 
mInterstitialAd.loadAd(adRequestInter); 

Legen Sie Ihre eigene ID in strings.xml namens interstitial_ad_unit_id oder

getResources().getString(R.string.interstitial_ad_unit_id) 

mit Ihrer ID ersetzen.

-1

Rufen Sie diese Funktion auf App-Öffnung:

InterstitialAd interstitial; 

public void AdMob() { 
    AdRequest adRequest = new AdRequest.Builder().addTestDevice("YOUR_TEST_DEVICE_ID").build(); 
    interstitial = new InterstitialAd(this); 
    interstitial.setAdUnitId("YOUR_AD_ID"); 
    interstitial.setAdListener(new AdListener() { 
     @Override 
     public void onAdLoaded() { 
      super.onAdLoaded(); 
      //Ads loaded 
     } 

     @Override 
     public void onAdClosed() { 
      super.onAdClosed(); 
      //Ads closed 
     } 

     @Override 
     public void onAdFailedToLoad(int errorCode) { 
      super.onAdFailedToLoad(errorCode); 
      //Ads couldn't loaded 
     } 
    }); 
    interstitial.loadAd(adRequest); 
} 

Dann können Sie Anzeigen schalten:

if (interstitial.isLoaded()){ 
interstitial.show(); 
} 

Sie sollten Anzeigen vorbereiten, bevor es zeigt. Diese dauerte 3-5 Sekunden abhängig von der Internetgeschwindigkeit des Geräts.