25

我曾经在我未来的应用程序中显示 AdMob 横幅,我想尝试一下插页式广告。

我检查了 AdMob SDK 的实施情况,并复制了他们的示例源代码,因为它正是我想要的(即活动启动时显示的插页式广告)。

我在模拟器和我的 Galaxy 上尝试过,没有显示任何广告。

这是源代码:

public class Asscreed extends Activity {
    private InterstitialAd interstitial;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_asscreed);

        // Create the interstitial.
        interstitial = new InterstitialAd(this);
        interstitial.setAdUnitId("ca-app-pub-6046034785851961/xxxxxx");

        // Create ad request.
        AdRequest adRequest = new AdRequest.Builder().build();

        // Begin loading your interstitial.
        interstitial.loadAd(adRequest);
    }

    // Invoke displayInterstitial() when you are ready to display an interstitial.
    public void displayInterstitial() {
        if (interstitial.isLoaded()) {
            interstitial.show();
        }
    }
}

导入没问题,当然也导入了 Google Play 服务库。

我使用这个例子: AdMob Android Guides - Interstitial Ad

有人可以告诉我我的代码有什么问题吗?

4

7 回答 7

50

您应该等待广告加载。只有这样,您才能调用displayInterstial()方法,该方法将显示广告。

您可以注册一个监听器,它会在加载完成时通知您。

interstitial.setAdListener(new AdListener(){
          公共无效 onAdLoaded(){
               显示插页式();
          }
});
于 2013-12-31T09:19:46.517 回答
10

这为我做了。

// Begin listening to interstitial & show ads.
interstitial.setAdListener(new AdListener(){
     public void onAdLoaded(){
          interstitial.show();
     }
});

我仍然想知道为什么谷歌的所有家伙都上传代码实现方向,但在一个人跟随他们到点之后就不起作用了。

于 2014-07-30T10:42:46.533 回答
6

我有同样的问题。问题是清单中没有定义 admob 活动。请确保您的清单文件中有以下活动标签

<activity
        android:name="com.google.android.gms.ads.AdActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
        android:theme="@android:style/Theme.Translucent" />
于 2016-04-09T09:59:12.567 回答
3
mInterstitialAd = new InterstitialAd(this);
                mInterstitialAd.setAdUnitId("Your Interstitial Id ca-app-pub-46563563567356235/3452455");
                AdRequest adRequest1 = new AdRequest.Builder()
                        .build();
                mInterstitialAd.loadAd(adRequest1);
                mInterstitialAd.setAdListener(new com.google.android.gms.ads.AdListener() {
                    @Override
                    public void onAdLoaded() {
                        mInterstitialAd.show();
                        super.onAdLoaded();

                    }
                });
于 2017-04-04T05:51:47.110 回答
1

尝试在 onCreate 中对其进行初始化,但仅从事件中调用 show() 方法,例如按钮单击。

您可以使用此代码,测试 ID 工作:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    ...

        MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713"); //test id

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); //test ad

        mInterstitialAd.loadAd(new AdRequest.Builder().build());


        btn_test.setOnClickListener(view -> {
            showInterstitial();
        });
...
    }    
    private void showInterstitial()
    {
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            Log.d("TAG", "The interstitial wasn't loaded yet.");
        }
    }
于 2018-07-03T16:56:03.087 回答
0

在你的 AndroidManifest 你必须把标签

    <activity
        android:name="com.google.android.gms.ads.AdActivity"
        android:theme="@android:style/Theme.Translucent"
        tools:replace="android:theme" />
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="APP_ID" />
    <meta-data
        android:name="com.google.android.gms.ads.AD_MANAGER_APP"
        android:value="true" />
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

广告管理器

广告暴民

于 2020-10-15T21:56:38.877 回答
-1

您没有调用 displayInsterstitial()。

但是您应该做的是调用 interstitial 的侦听器:

interstitial.setAdListener(this);

然后它将为您的 Activity 实现侦听器,然后将其显示在 AdLoaded (或其他东西)上。

于 2013-12-31T09:15:44.827 回答