正确停用AdMob广告

Mar*_*ark 39 android admob

我正在将AdMob集成到我的应用中,我想知道如何正确禁用广告.我想让用户能够禁用它们.我不希望AdMob因为错误的展示而遇到任何问题.这种方式是正确的还是我应该考虑一下?

AdView ads = (AdView) findViewById(R.id.ad);
ads.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)

Qua*_*one 35

在您的布局文件中(例如,main.xml):

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/adsContainer">

    <com.admob.android.ads.AdView 
        android:id="@+id/admobAds" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        app:backgroundColor="#000000" 
        app:primaryTextColor="#FFFFFF" 
        app:secondaryTextColor="#CCCCCC">

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

然后在你的代码中(例如,在"if"块内)

(LinearLayout) adscontainer = (LinearLayout) findViewById(R.id.adsContainer);

View admobAds = (View) findViewById(R.id.admobAds);

adscontainer.removeView(admobAds);
Run Code Online (Sandbox Code Playgroud)

这将"永久"(对于应用程序的生命周期)从layou中删除广告,这意味着不会有任何广告请求.


小智 27

我还想让用户能够禁用广告 - 为什么强迫人们在不想要的时候看到它们?你为什么要指望人们为这个选择买单呢?

无论如何,我在本文中概述了我是如何做到这一点的.这篇文章更详细,但这里有相关部分:

我用来关闭广告的代码:

private void hideAd() {
    final AdView adLayout = (AdView) findViewById(R.id.adView1);
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            adLayout.setEnabled(false);
            adLayout.setVisibility(View.GONE);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

并重新打开它们(如果有人感到慷慨)

private void showAd() {
    final AdView adLayout = (AdView) findViewById(R.id.adView1);
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            adLayout.setEnabled(true);
            adLayout.setVisibility(View.VISIBLE);
            adLayout.loadAd(new AdRequest());
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

  • 能见度变化是否足够?设置可见性GONE仍会保持视图对象的活动状态.可以免费进行广告请求,刷新等.删除视图是更好的方法. (2认同)