【问题标题】:LAYOUT ENCOURAGES ACCIDENTAL CLICKS - INTERSTITIAL ADS:布局鼓励意外点击 - 插页式广告:
【发布时间】:2017-03-28 06:28:37
【问题描述】:

请任何人帮助现在由于错误的插页式代码,我的应用已被 admob 禁用

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

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

    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();
            }
        }
    }

【问题讨论】:

  • 插页式广告应显示在应用屏幕之间。这样,用户期望某些变化并且打开广告不会让他意外点击它(根据 admob 规则他不应该这样做)。在这里您加载广告并在加载时显示它。实际上,您应该提前加载广告并在它准备好并且时间合适时显示它。我相信教程中是这样说的。如果这是您的第一个屏幕,您始终可以在广告加载之前让用户处于某种等待屏幕中。
  • 能分享一下代码吗?
  • 每个人都在谈论正确的时间。我真的很好奇他们所说的正确时间是什么意思?如果我加载数据,显示广告和 onAdClose / onAdFailed 显示页面数据,现在是正确的时间吗?

标签: android layout admob interstitial


【解决方案1】:

来自admobs自己的guidelines

“一个常见问题是,即使您可能打算在页面内容之间加载广告,但由于运营商延迟,广告本身会在新的内容页面加载后不久出现。”

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

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

【讨论】:

  • 能否请您更正并与我们分享
【解决方案2】:

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

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

我唯一遇到的问题是时间合适。何时是加载插页式广告的合适时间?这完全取决于您,但在我的情况下,插页式广告在几秒钟的活动后加载并显示。这是由于互联网连接速度慢而发生的。基本上发生的是活动显示和用户开始交互但尚未加载插页式广告。但是插页式广告会在交互过程中加载并显示,这会导致意外点击——这违反了政策。

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

  • 限制为某人展示广告
  • 检查广告是否已加载,然后在离开活动时显示它

对于第一点,我使用 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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多