You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebView内站点生成按钮点击10-20次后展示Google插屏广告

实现WebView内按钮点击计数触发插屏广告的方案

1. 创建JS交互接口类

写一个专门的类接收网页端按钮点击事件,处理计数与广告展示逻辑:

public class WebAppInterface {
    private Context mContext;
    private int clickCount = 0;
    // 可自行调整触发广告的点击次数,比如设为随机10-20之间的值
    private final int TRIGGER_COUNT = 15;
    private InterstitialAd mInterstitialAd;

    public WebAppInterface(Context context, InterstitialAd interstitialAd) {
        mContext = context;
        mInterstitialAd = interstitialAd;
    }

    // 供JS调用的方法,必须添加@JavascriptInterface注解
    @JavascriptInterface
    public void onGenerateButtonClicked() {
        clickCount++;
        if (clickCount >= TRIGGER_COUNT) {
            if (mInterstitialAd != null && mInterstitialAd.isLoaded()) {
                mInterstitialAd.show((Activity) mContext);
                // 展示后重置计数,也可根据需求改为累计多次触发
                clickCount = 0;
                // 重新加载插屏广告,保证下次可正常展示
                reloadInterstitialAd();
            }
        }
    }

    // 重新加载插屏广告的方法,与你原有加载逻辑对齐
    private void reloadInterstitialAd() {
        AdRequest adRequest = new AdRequest.Builder().build();
        InterstitialAd.load(mContext, "你的插屏广告ID", adRequest,
            new InterstitialAdLoadCallback() {
                @Override
                public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
                    mInterstitialAd = interstitialAd;
                }

                @Override
                public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                    mInterstitialAd = null;
                }
            });
    }
}

2. 配置WebView并绑定接口

在你的Activity/Fragment中初始化WebView,启用JS并绑定上述接口:

private InterstitialAd mInterstitialAd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WebView webView = findViewById(R.id.webview);
    WebSettings webSettings = webView.getSettings();
    // 启用JavaScript支持
    webSettings.setJavaScriptEnabled(true);
    // 绑定JS交互接口,"AndroidInterface"是JS中调用的对象名
    webView.addJavascriptInterface(new WebAppInterface(this, mInterstitialAd), "AndroidInterface");

    // 预加载插屏广告(沿用你原有加载逻辑)
    loadInitialInterstitialAd();

    // 加载你的图片生成站点
    webView.loadUrl("你的站点URL");
}

// 初始化加载插屏广告
private void loadInitialInterstitialAd() {
    AdRequest adRequest = new AdRequest.Builder().build();
    InterstitialAd.load(this, "你的插屏广告ID", adRequest,
        new InterstitialAdLoadCallback() {
            @Override
            public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
                mInterstitialAd = interstitialAd;
                // 设置广告关闭后回调,重新加载广告
                interstitialAd.setFullScreenContentCallback(new FullScreenContentCallback(){
                    @Override
                    public void onAdDismissedFullScreenContent() {
                        mInterstitialAd = null;
                        loadInitialInterstitialAd();
                    }
                });
            }

            @Override
            public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                mInterstitialAd = null;
            }
        });
}

3. 修改网页生成按钮的点击事件

找到站点中生成按钮的代码,添加调用Android接口的逻辑:

// 假设生成按钮的ID是"generateBtn"
document.getElementById("generateBtn").addEventListener("click", function() {
    // 调用Android端的计数方法
    AndroidInterface.onGenerateButtonClicked();
    // 保留按钮原有生成图片的逻辑
    yourOriginalGenerateLogic();
});

额外注意事项

  • 若需要计数在APP重启后保留,可将clickCount存入SharedPreferences,初始化时读取、更新后保存。
  • 插屏广告必须提前预加载,避免触发时机广告未加载完成。
  • 确保AndroidManifest.xml已添加AdMob所需权限(如INTERNET)。

内容的提问来源于stack exchange,提问作者Nikolay Goroshko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:15:18