微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 WebView App 中的 URL 点击中设置插页式广告?

如何解决如何在 WebView App 中的 URL 点击中设置插页式广告?

我已经为插页式广告实施了以下代码。我面临的问题是插页式广告仅在第一次点击 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);
    }

解决方法

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

    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。