У меня есть простое приложение для веб-просмотра для Android, и я хочу показывать межстраничную рекламу admob между страницами в веб-просмотре.
Я использую этот код:
public class MainActivity extends Activity {
String url = "http://somepage.com";
Boolean showProgressOnSplashScreen = true;
WebView mWebView;
ProgressBar prgs;
RelativeLayout splash, main_layout;
private InterstitialAd mInterstitialAd;
@SuppressWarnings("deprecation")
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-somenumbers38485838373");
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
mInterstitialAd.loadAd(adRequest);
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
// Call displayInterstitial() function
//displayInterstitial();
}
});
getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
Window.PROGRESS_VISIBILITY_ON);
mWebView = (WebView) findViewById(R.id.wv);
prgs = (ProgressBar) findViewById(R.id.progressBar);
main_layout = (RelativeLayout) findViewById(R.id.main_layout);
// splash screen View
if (!showProgressOnSplashScreen)
((ProgressBar) findViewById(R.id.progressBarSplash)).setVisibility(View.GONE);
splash = (RelativeLayout) findViewById(R.id.splash);
mWebView.loadUrl(url);
mWebView.setFocusable(true);
mWebView.setFocusableInTouchMode(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
mWebView.getSettings().setDatabaseEnabled(true);
mWebView.getSettings().setDatabasePath(
this.getFilesDir().getPath() + this.getPackageName()
+ "/databases/");
mWebView.getSettings().setSupportMultipleWindows(true);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
else {
view.loadUrl(url);
}
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
if (prgs.getVisibility() == View.GONE) {
prgs.setVisibility(View.VISIBLE);
}
displayInterstitial();
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (prgs.getVisibility() == View.VISIBLE)
prgs.setVisibility(View.GONE);
// check if splash is still there, get it away!
if (splash.getVisibility() == View.VISIBLE)
splash.setVisibility(View.GONE);
// slideToBottom(splash);
}
});
}
@Override
public boolean onKeyDown(final int keyCode, final KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
public void displayInterstitial() {
// If Ads are loaded, show Interstitial else show nothing.
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
}
Итак, прямо сейчас я загружаю функцию displayInterstitial()
внутри onPageStarted
. Он загружает объявление после загрузки первой страницы в приложении, но после этого оно больше не отображается на следующих страницах. Как мне это исправить, чтобы у меня было больше рекламы между другими страницами? Я установил ограничение на Admob, чтобы показывать только 1 рекламу в 3 минуты, но у меня время сеанса составляет более 20 минут, поэтому показывать только 1 рекламу - пустая трата времени.