布局鼓励事故点击 - 插入广告:

时间:2017-03-28 06:28:37

标签: android layout admob interstitial

请任何一个帮助现在我的应用由于错误的插页式广告代码而被adob禁用

  

"在用户查看时意外加载的插页式广告   应用程序的内容"。

该怎么办?请有人纠正我......

    import android.os.Bundle;
    import android.view.Window;
    import android.view.WindowManager;
    import android.support.v7.app.AppCompatActivity;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;

    import com.google.android.gms.ads.AdListener;
    import com.google.android.gms.ads.AdRequest;
    import com.google.android.gms.ads.AdView;
    import com.google.android.gms.ads.InterstitialAd;

    public class a2 extends AppCompatActivity {

        AdView mAdView;
        InterstitialAd mInterstitialAd;
        WebView WebViewWithCSS;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setContentView(R.layout.activity_a2);

            WebViewWithCSS = (WebView)findViewById(R.id.webView);

            WebSettings webSetting = WebViewWithCSS.getSettings();
            webSetting.setJavaScriptEnabled(true);

            WebViewWithCSS.setWebViewClient(new WebViewClient());
            WebViewWithCSS.loadUrl("file:///android_asset/2.html");

            mAdView = (AdView) findViewById(R.id.adView);
            AdRequest adRequest = new AdRequest.Builder()
                    .build();
            mAdView.loadAd(adRequest);

            mInterstitialAd = new InterstitialAd(this);

            // set the ad unit ID
            mInterstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen));

            adRequest = new AdRequest.Builder()
                    .build();

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

            mInterstitialAd.setAdListener(new AdListener() {
                public void onAdLoaded() {
                    showInterstitial();
                }
            });
        }

        @Override
        public void onPause() {
            if (mAdView != null) {
                mAdView.pause();
            }
            super.onPause();
        }

        @Override
        public void onResume() {
            super.onResume();
            if (mAdView != null) {
                mAdView.resume();
            }
        }

        @Override
        public void onDestroy() {
            if (mAdView != null) {
                mAdView.destroy();
            }
            super.onDestroy();
        }


        private void showInterstitial() {
            if (mInterstitialAd.isLoaded()) {
                mInterstitialAd.show();
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

来自admobs拥有guidelines

&#34;一个常见问题是即使您打算在页面内容之间加载广告,广告本身也会在由于运营商延迟而加载新内容页后不久出现。&#34; < / p>

您的代码会在加载完成后显示插页式广告 - 这不会给用户任何警告,因此他们会在查看网页视图时突然显示插页式广告。预加载它并在自然休息时显示它。

您的代码在onAdLoaded()中调用showInterstitial() - 它需要在需要广告之前调用mInterstitialAd.loadAd(),并设置一个标志以表明它存在。然后,它可以在加载webview之前调用showInterstitial(),并在插页式广告被取消时显示Web视图

答案 1 :(得分:0)

在收到几次警告后,即使我遵循AdMob指南,广告仍在我的应用上被禁用。我在研究中发现了以下关键点:

  • 显示页面之间的非页内广告
  • 游戏关卡完成后显示插页式广告
  • 避免意外点击
  • 正确的时间
  • 上显示

我唯一的问题是正确的时间。什么时候才是加载插页式广告的合适时间?这完全取决于您,但就我而言,插页式广告正在加载并在几秒钟的活动后显示。发生这种情况是因为互联网连接缓慢。基本上发生的是活动显示并与用户开始互动,但尚未加载插页式广告。但插页式广告会在互动过程中加载并显示,这会导致意外点击-这违反了政策。

以下是我为我的应用采取的一些纠正措施:

  • 限制为某人展示广告
  • 检查广告是否已加载,然后在保持活动状态的同时显示广告

首先,我使用AdMob设置来限制频次上限,以限制为某人展示广告。我在五分钟内展示了一个广告。

  

频次上限:将广告展示的次数限制为相同   每分钟,每小时或每天每人。   Google AdMob

我还使用了活动中的计数器来在用户多次访问活动时显示广告。

第二点,当用户返回上一个屏幕时,我展示了一个广告。

在onCreate()方法中:

counter = sharedPreferences.getInt(AD_COUNT, 0);
editor = sharedPreferences.edit();

if(2 == counter) {
    interstitialAd = new InterstitialAd(this);
    interstitialAd.setAdUnitId(getString(R.string.interstitial_unitID));
    interstitialAd.loadAd(adRequest);
} else {
    editor.putInt(AD_COUNT, sharedPreferences.getInt(AD_COUNT, 0) + 1).apply();
}

和onBackPressed()方法:

@Override
public void onBackPressed() {
    if (2 == counter && interstitialAd.isLoaded()) {
        interstitialAd.show();

        //Reset the counter
        editor.putInt(AD_COUNT, sharedPreferences.getInt(AD_COUNT, 0)).apply();
    }
    super.onBackPressed();
}