【问题标题】:How to show interstitial ads?如何展示插页式广告?
【发布时间】:2014-07-23 10:42:39
【问题描述】:

如何展示插页式广告?

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //Log.v("SDL", "onCreate()");
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        interstitial = new InterstitialAd(this);
        interstitial.setAdUnitId("ca-app-pub-2188258702xxxxxxxxxxx");


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

        interstitial.loadAd(adRequest);

        // So we can call stuff from static callbacks
        mSingleton = this;

        // Set up the surface
        mEGLSurface = EGL10.EGL_NO_SURFACE;
        mSurface = new SDLSurface(getApplication());

        mLayout = new AbsoluteLayout(this);
        mLayout.addView(mSurface);

        setContentView(mLayout);

    }




public void displayInterstitial() {
    if (interstitial.isLoaded()) {
      interstitial.show();
    }
  }

我使用 sdl2 for android,并尝试在我的应用中显示插页式广告,但它没有显示。如果我评论这一行 setContentView(mLayout);并调用 displayinterstitial() 一切正常,除了所有 sdl 原生内容(屏幕为黑色):-)

问题是如何在 android 上使用 sdl 制作插页式广告?

完整的 SDLActivity 代码在这里: http://pastebin.com/DsRRtRS5

【问题讨论】:

标签: android admob sdl-2 interstitial


【解决方案1】:

你好像没有提到:displayInterstitial(),在onCreate()方法的任何地方,你确定代码执行到了displayInterstitial()方法?

此外,在广告完全加载并准备好展示后,代码会返回某个时间点。如:

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

【讨论】:

  • 这对我来说有点奇怪。如果我评论这一行 setContentView(mLayout);并调用 displayinterstitial() 一切正常,插页式显示在我调用的任何函数上都很好。但 sdl 内容不显示。但是如果我不评论这一行 SetContentView(mLayout);只有当我这样做时,SDL(native) 内容才能正确显示插页式显示: interstitial.setAdListener(new AdListener(){ public void onAdLoaded(){ displayInterstitial(); } });
  • 而且我知道需要加载插页式广告。我在 logcat 中看到它加载并调用它但它没有显示。
  • setContentView(mLayout);我没有得到完整的问题,插页式广告是弹出式的,对吗?不需要设置布局...我们正在尝试 setContentView(mLayout);
  • mLayout 用于显示 SDL(native c++ content),如果 SDL 内容显示,则插页式广告不显示,但如果我评论它SetContentView(mLayout); (即我不显示 SDL 内容)插页式广告效果很好。
  • 我的 SDL 应用需要 setContentView(mLayout);展示它自己:-)
【解决方案2】:
public class MainActivity extends Activity {
    private InterstitialAd interstitial;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Get the view from activity_main.xml
        setContentView(R.layout.activity_main);

        // Prepare the Interstitial Ad
        interstitial = new InterstitialAd(MainActivity.this);
        // Insert the Ad Unit ID
        interstitial.setAdUnitId("ca-app-pub-6641284216335957/7211421024");

        //Locate the Banner Ad in activity_main.xml
        AdView adView = (AdView) this.findViewById(R.id.adView);

        // Request for Ads
        AdRequest adRequest = new AdRequest.Builder()

        // Add a test device to show Test Ads
         .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
         .addTestDevice("")
                .build();

        // Load ads into Banner Ads
        adView.loadAd(adRequest);

        // Load ads into Interstitial Ads
        interstitial.loadAd(adRequest);

        // Prepare an Interstitial Ad Listener
        interstitial.setAdListener(new AdListener() {
            public void onAdLoaded() {
                // Call displayInterstitial() function
                displayInterstitial();
            }
        });
    }
    public void displayInterstitial() {
        // If Ads are loaded, show Interstitial else show nothing.
        if (interstitial.isLoaded()) {
            interstitial.show();
        }
    }
}

【讨论】:

  • 在你的代码中添加一些解释通常是个好主意,而不仅仅是发布一段代码作为你的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多