30秒后显示interstitialAd Audience Network Facebook

问题描述

我想将Facebook Audience Network用于我的Android应用程序,我已经集成了interstitialAd应用程序内的应用程序,并且运行正常,但显示为Activity启动。我想在30秒后显示广告。这是我的代码

 interstitialAd = new InterstitialAd(this,"1555910157949688_1556058954601475");

    interstitialAd.setAdListener(new InterstitialAdListener() {
      

        @Override
        public void onAdLoaded(Ad ad) {
            // Interstitial ad is loaded and ready to be displayed
            Log.d(TAG,"Interstitial ad is loaded and ready to be displayed!");
            // Show the ad
            interstitialAd.show();
        }

       
    });

    interstitialAd.loadAd();

并且我已经尝试过以此来安排我的广告,但是它没有用。

private void showAdWithDelay() {
   Handler handler = new Handler();
   handler.postDelayed(new Runnable() {
       public void run() {
            // Check if interstitialAd has been loaded successfully
           if(interstitialAd == null || !interstitialAd.isAdLoaded()) {
               return;
           }
            // Check if the ad is already expired or invalidated,and do not show ad if that is the case. You will not get paid to show an invalidated ad.
           if(interstitialAd.isAdInvalidated()) {
               return;
           }
           // Show the ad
            interstitialAd.show(); 
       }
   },3000); 
}

解决方法

我更喜欢这样做:

      Handler handler = new Handler();
      interstitialAd = new InterstitialAd(this,"XXX");
      interstitialAd.setAdListener(new InterstitialAdListener() {
        @Override
        public void onAdLoaded(Ad ad) {
          handler.postDelayed(new Runnable() {
            @Override
            public void run() {
              interstitialAd.show();
            }
          },YOUR_TIME);
        }
      });

      interstitialAd.loadAd();

如果您想更加精确,请执行以下操作:

      final long lastTime = System.currentTimeMillis();
      Handler handler = new Handler();
      interstitialAd = new InterstitialAd(this,"XXX");
      interstitialAd.setAdListener(new InterstitialAdListener() {
        @Override
        public void onAdLoaded(Ad ad) {
          long now = System.currentTimeMillis();
          long timeWait;
          if (now - lastTime >= YOUR_TIME){
            timeWait = 0;
          }else {
            timeWait = YOUR_TIME-(now-lastTime);
          }
          handler.postDelayed(new Runnable() {
            @Override
            public void run() {
              interstitialAd.show();
            }
          },timeWait);
        }
      });

      interstitialAd.loadAd();
,

我认为您的实施违反了AdMob政策,可能会给您带来一些麻烦。

请检查此页面以获取有关正确/错误插页式广告实施的帮助(特别是“意外启动的插页式广告”指向):https://support.google.com/admob/answer/6201362?hl=en&ref_topic=2936214

要遵守AdMob政策,建议您仅在活动/应用自然转换中显示插页式广告,不同的实现方式可能会导致您被Admob禁止使用。

为此,您可以更改代码以首先仅加载广告并跟踪其加载状态,如下所示:

boolean isAdLoaded = false;

interstitialAd = new InterstitialAd(this,"1555910157949688_1556058954601475");

interstitialAd.setAdListener(new InterstitialAdListener() 
{ 
    @Override
    public void onAdLoaded(Ad ad) 
    {
        // Interstitial ad is loaded and ready to be displayed
        Log.d(TAG,"Interstitial ad is loaded and ready to be displayed!");
        // The ad has been loaded
        isAdLoaded = true;
    }
});

interstitialAd.loadAd();

然后在应用的自然转换中显示它,例如,当用户点击按钮以转到其他活动时:

shareButton.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        //Show interstitial if it is loaded
        if(isAdLoaded)
            interstitialAd.show();
        
        //Open Activity
        startActivity(new Intent(this,OtherActivity.class));
    }
});