如何在 WebView App 中的 URL 点击设置插页式广告?
Posted
技术标签:
【中文标题】如何在 WebView App 中的 URL 点击设置插页式广告?【英文标题】:How can I set interstitial ads on URL clicks in WebView App? 【发布时间】:2021-09-30 05:07:48 【问题描述】:我为插页式广告实现了以下代码。我面临的问题是插页式广告仅在第一次 URL 点击时显示。我想在 WebView 应用程序中的每个 URL 点击或每 5 个 URL 点击上调整广告。在这方面的帮助将不胜感激。以下是我要修改的代码。
private WebView webview;
private AdView mAdView;
private InterstitialAd mInterstitialAd;
SwipeRefreshLayout mySwipeRefreshLayout;
@SuppressLint("SetjavascriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, new OnInitializationCompleteListener()
@Override
public void onInitializationComplete(InitializationStatus initializationStatus)
);
AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(this,"ca-app-pub-3940256099942544/1033173712", adRequest,
new InterstitialAdLoadCallback()
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd)
// The mInterstitialAd reference will be null until
// an ad is loaded.
mInterstitialAd = interstitialAd;
Log.i("TAG", "onAdLoaded");
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError)
// Handle the error
Log.i("TAG", loadAdError.getMessage());
mInterstitialAd = null;
);
private class WebViewClientDemo extends WebViewClient
@Override
//Keep webview in app when clicking links
public boolean shouldOverrideUrlLoading(WebView view, String url)
if (mInterstitialAd != null)
mInterstitialAd.show(MainActivity.this);
else
Log.d("TAG", "The interstitial ad wasn't ready yet.");
return super.shouldOverrideUrlLoading(view, url);
【问题讨论】:
显示插页式后。您需要重新加载广告。所以再次调用 InterstitialAd.load。 是的,我尝试了很多代码来重新加载,但每次都出错。这就是我寻求帮助的原因。 你能试试下面的代码吗? 【参考方案1】:您需要在每次演出后加载广告。创建一个静态计数器变量以在每 n 次点击时加载它。
static int instanceCounter = 0;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LoadInterstitial();
private void LoadInterstitial()
AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(this,"ca-app-pub-3940256099942544/1033173712", adRequest,
new InterstitialAdLoadCallback()
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd)
// The mInterstitialAd reference will be null until
// an ad is loaded.
mInterstitialAd = interstitialAd;
Log.i("TAG", "onAdLoaded");
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError)
// Handle the error
Log.i("TAG", loadAdError.getMessage());
mInterstitialAd = null;
);
private class WebViewClientDemo extends WebViewClient
@Override
//Keep webview in app when clicking links
public boolean shouldOverrideUrlLoading(WebView view, String url)
if (mInterstitialAd != null && isDisplayAdvert())
mInterstitialAd.show(MainActivity.this);
LoadInterstitial();
else
Log.d("TAG", "The interstitial ad wasn't ready yet.");
return super.shouldOverrideUrlLoading(view, url);
private bool isDisplayAdvert()
instanceCounter++;
if(instanceCounter==5)
instanceCounter = 0;
return true;
return false;
【讨论】:
谢谢哥们,现在每次用户点击应用程序时它都会显示广告,这可能很烦人。你能写代码来管理它的频率吗?我的意思是,如何在应用内每 5 次或 10 次点击时展示广告?我是编码新手,非常感谢您在这方面的帮助。【参考方案2】:感谢 Amod Gokhale 先生。我尝试了以下代码,它也可以正常工作。 你能推荐我两个代码之间更好的那个吗?
private class WebViewClientDemo extends WebViewClient
int n = 1;
@Override
//Keep webview in app when clicking links
public boolean shouldOverrideUrlLoading(WebView view, String url)
if (mInterstitialAd != null)
if( n%6 == 0 )
mInterstitialAd.show(MainActivity.this);
n++;
LoadInterstitial();
return super.shouldOverrideUrlLoading(view, url);
【讨论】:
以上是关于如何在 WebView App 中的 URL 点击设置插页式广告?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Final Android App 中的 WebView 上添加 Imageview
android webview 怎样监听HTML中的按钮并得到按钮的url
跨平台应用开发进阶(五十七):uni-app 通过 overrideUrlLoading 实现拦截 webview 窗口的 URL 跳转请求