2012-06-19 41 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秒。