2012-06-19 9 views
10

Próbowałem wielu blogów, ale nikt nie daje rozwiązania krok po kroku. Czy mogę edytować coś w witrynie AdMob? Stworzyłem witrynę z opcji wyświetlania reklam/aplikacji w zakładce Lokacje &.Jak utworzyć reklamę pełnoekranową na Androida?

Użyłem tego kodu:

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

Zakładając, że "MyAdMobId" zostanie zastąpiony rzeczywistym identyfikatorem, a testujesz w emulatorze, to powinno działać. Co widzisz w dziennikach? (Pamiętaj, że AdMob wymaga umieszczenia na białej liście, aby wyświetlać pełnoekranowe reklamy sieciowe). –

+0

Nic w dzienniku, ale skąd mogę wiedzieć, czy jestem na białej liście, by wyświetlać pełnoekranowe reklamy sieciowe? –

+0

Prawdopodobnie nie jesteś na białej liście. AdMob oferuje tylko kilka urządzeń sieciowych (zobacz [tutaj] (https://developers.google.com/mobile-ads-sdk/docs/android/advanced#overview)). Jeśli nie masz na białej liście, możesz uzyskać pełnoekranową reklamę testową lub pełnoekranową reklamę podczas konfigurowania kampanii reklamowej pełnoekranowej. –

Odpowiedz

7

Korzystanie ostatni ramy Android, pomyślałem, że muszę do wywołania funkcji load() za każdym razem reklama jest zamknięty.

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

Dzięki za 'loadAd' w' onAdClosed'. To, co możesz przygotować do wyświetlenia kolejnej reklamy. –

11

przeciwieństwie do banerów, insterstitial reklamy nie automatycznie wyświetlane po ich obciążeniu. Będziesz musiał posłuchać połączenia od AdMob onReceiveAd(), a wewnątrz tego połączenia zwrotnego zadzwoń pod numer interstital.show(), aby wyświetlić swoją reklamę pełnoekranową.

public YourActivity extends Activity implements AdListener { 
    ... 

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

Wyjazd przykład kodu here. Ten przykład wyświetli reklamę pełnoekranową zaraz po jej otrzymaniu. Możesz też poczekać, aż upłynie odpowiednia pora na wyświetlenie reklamy pełnoekranowej, na przykład na końcu poziomu gry. Możesz też sprawdzić, czy możesz wyświetlać reklamę pełnoekranową: interstitial.isReady().

3

Myślę, że ten przykładowy kod pomoże ci.

How to Add AdMob Interstitial Ads in Your Android Apps

W tym przykładzie pokazuje cały kod źródłowy. Zapewnia także rozwiązania typowych błędów. Na przykład rozwiązanie błędu onFailedToReceiveAd i brak rozwiązania zwracanego przez reklamę. Możesz również pobrać tam kod źródłowy.

1

Metoda FYI, interstitial.isReady() nie jest już obsługiwana. Jest to prawidłowa metoda:

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

mogę zaimplementować AdListener już, kiedyś to w ten sposób:

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); 

umieścić własne ID w strings.xml nazwie interstitial_ad_unit_id lub wymienić

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

z identyfikatorem.

-1

wywołać tę funkcję na otwarciu aplikacji:

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); 
} 

Następnie można wyświetlać reklamy:

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

Należy przygotować reklamy przed pokazaniem go. Trwały one 3-5 sekund w zależności od szybkości Internetu urządzenia.

Powiązane problemy