2012-06-19 114 views
10

我嘗試了很多博客,但沒有人給出一步一步的解決方案。我應該在adMob網站上編輯某些內容嗎?我從網站&應用程序選項卡下的廣告坐席/應用程序選項創建了網站。如何創建android廣告插頁式廣告?

我用這個代碼:

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

假設「MyAdMobId」被替換爲您的實際ID,並且您正在模擬器中進行測試,這應該起作用。你在日誌中看到什麼? (請注意,AdMob要求您列入白名單以提供網絡插頁式廣告) –

+0

日誌中沒有任何內容,但是如何知道我是否被列入白名單以提供網絡插頁式廣告? –

+0

您可能未被列入白名單。 AdMob只提供少數網絡interstiit(請參閱[這裏](https://developers.google.com/mobile-ads-sdk/docs/android/advanced#overview))。除非您列入白名單,否則只能設置插頁式廣告測試或插頁式廣告,如果您設置了插頁式廣告系列廣告系列。 –

回答

7

使用最後一個Android框架,我發現每次關閉廣告時都需要調用load()函數。

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

感謝'onAdClosed'中的'loadAd'。這可以準備好展示另一個廣告。 –

11

不像橫幅,insterstitial廣告不會自動顯示,一旦他們的加載。您必須聆聽AdMob的onReceiveAd()回撥,並在該回撥中撥打interstital.show()以顯示您的插頁式廣告。

public YourActivity extends Activity implements AdListener { 
    ... 

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

查看一個代碼示例here。此示例會在收到後立即顯示插頁式廣告。或者,您可能需要等到顯示插頁式廣告的適當時間(例如遊戲關卡結束時),並且您可以檢查interstitial.isReady()以查看是否可以顯示插頁式廣告。

3

我覺得這個例子代碼會幫助你。

How to Add AdMob Interstitial Ads in Your Android Apps

在這個例子中,它顯示了你的整個源代碼。它還爲常見錯誤提供了一些解決方案。例如,onFailedToReceiveAd錯誤解決方案並且沒有廣告返回解決方案。您也可以從那裏下載源代碼。

1

僅供參考,不再支持interstitial.isReady()方法。這是正確的方法:

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

你不能再實現AdListener的,我用這種方式:

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

將在strings.xml中自己的ID命名interstitial_ad_unit_id,或與您的ID替換

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

-1

呼叫應用程序的開放此功能:

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

然後你就可以顯示廣告:

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

你應該顯示它之前準備的廣告。這取決於設備的網速,需要3-5秒。