请任何一个帮助现在我的应用由于错误的插页式广告代码而被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();
}
}
}
答案 0 :(得分:2)
来自admobs拥有guidelines
&#34;一个常见问题是即使您打算在页面内容之间加载广告,广告本身也会在由于运营商延迟而加载新内容页后不久出现。&#34; < / p>
您的代码会在加载完成后显示插页式广告 - 这不会给用户任何警告,因此他们会在查看网页视图时突然显示插页式广告。预加载它并在自然休息时显示它。
您的代码在onAdLoaded()中调用showInterstitial() - 它需要在需要广告之前调用mInterstitialAd.loadAd(),并设置一个标志以表明它存在。然后,它可以在加载webview之前调用showInterstitial(),并在插页式广告被取消时显示Web视图
答案 1 :(得分:0)
在收到几次警告后,即使我遵循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();
}