尝试使用android webview在一定时间后显示广告

问题描述 投票:0回答:1

正如我在问题标题中提到的,我试图在一定时间后(例如每 30 秒后)显示广告。我这样做是因为我使用的是WebView,所以在WebView中我不知道是否有办法通过正在Android Webview中加载的网站来控制admob广告。下面是我的代码

MainActivity.java
现在广告正在显示,但仅在应用程序启动时以及没有广告后显示,所以我只是每隔 30 秒显示一次

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });


        //AdView mAdView;
        //mAdView = findViewById(R.id.adView);
        //AdRequest bannerRequest = new AdRequest.Builder().build();
        //mAdView.loadAd(bannerRequest);

        AdRequest adRequest = new AdRequest.Builder().build();

        InterstitialAd.load(this,"ca-app-pub-123256789123456/1234567890", adRequest,
                new InterstitialAdLoadCallback() {
                    @Override
                    public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
                        interstitialAd.show(MainActivity.this);
                        interstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
                            @Override
                            public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                                super.onAdFailedToShowFullScreenContent(adError);
                            }

                            @Override
                            public void onAdShowedFullScreenContent() {
                                super.onAdShowedFullScreenContent();
                            }

                            @Override
                            public void onAdDismissedFullScreenContent() {
                                super.onAdDismissedFullScreenContent();
                            }

                            @Override
                            public void onAdImpression() {
                                super.onAdImpression();
                            }

                            @Override
                            public void onAdClicked() {
                                super.onAdClicked();
                            }
                        });
                    }

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

我通过互联网找到了这段代码作为解决方案,但我不知道相同的代码是否适用于我的情况,或者代码中是否需要进行任何更改,最后我应该将该代码放在哪里:

interstitialAd.setAdListener(new AdListener() {
    public void onAdLoaded() {
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            public void run() {
                MainActivity.this.interstitialAd.show();
            }
        }, 5000);
    }
});
java android timer admob
1个回答
0
投票

要在一定时间间隔后展示广告,您可以使用 Handler 来安排广告展示。根据您的情况,您可以按如下方式修改代码:

// Declare these variables at the beginning of your activity
  private InterstitialAd interstitialAd;
  private Handler adHandler;
  private static final long AD_DELAY = 30000; // 30 seconds in milliseconds

  // Initialize your ad in onCreate or wherever is appropriate
  MobileAds.initialize(this, new OnInitializationCompleteListener() {
  @Override
  public void onInitializationComplete(InitializationStatus) {
   }
  });

  AdRequest adRequest = new AdRequest.Builder().build();

  InterstitialAd.load(this, "ca-app-pub- 
   123256789123456/1234567890",adRequest, new InterstitialAdLoadCallback() 
   {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
    MainActivity.this.interstitialAd = interstitialAd;

    // Schedule ad display after a delay
    adHandler = new Handler();
    adHandler.postDelayed(new Runnable() {
        public void run() {
            if (MainActivity.this.interstitialAd != null) {
                MainActivity.this.interstitialAd.show(MainActivity.this);
            }
        }
    }, AD_DELAY);

    interstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
        // Your callback methods here
    });
}

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

此代码安排广告在 30 秒延迟后显示。您应该将此代码放置在 onCreate 方法中或任何适合应用程序流程的位置。一旦 InterstitialAd 加载并且处理程序在指定的延迟后触发,它将显示广告。

请记住在 Activity 的生命周期中正确管理 adHandler 和 interstitialAd 变量,以避免在 Activity 或 Fragment 之间导航时出现内存泄漏或问题。

© www.soinside.com 2019 - 2024. All rights reserved.