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
相关产品推荐
相关产品推荐

