如何在 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 点击设置插页式广告?的主要内容,如果未能解决你的问题,请参考以下文章

如何基于按钮单击在新屏幕上打开webview中的URL

安卓使用webview如何去除url中的广告

如何在 Final Android App 中的 WebView 上添加 Imageview

android webview 怎样监听HTML中的按钮并得到按钮的url

跨平台应用开发进阶(五十七):uni-app 通过 overrideUrlLoading 实现拦截 webview 窗口的 URL 跳转请求

用hbuilder开发app怎么从webview中跳出新页面