如何在WebView应用程序的URL点击上设置插页广告?



我已经实现了插页广告以下代码。我面临的问题是,插页广告只显示在第一个URL点击。我想调整广告上的每一个URL点击或每5个URL点击在WebView应用程序。在这方面的帮助将非常感激。以下是我想修改的代码

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

您需要在每次演出后加载广告。创建一个静态计数器变量,在每次点击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;
}

感谢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);
    }

最新更新