在这种情况下如何正确显示插页式广告?

时间:2017-03-31 13:15:05

标签: android popup admob advertising interstitial

我使用gridview适配器创建了一个音板(因此无法在声音按钮上设置插页式广告) 我还有一个带有三个标签的导航栏,所以我决定在第二个片段上设置插页式广告,如下所示:

public class SecondFragment extends Fragment {
    private InterstitialAd mInterstitialAd;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView=inflater.inflate(R.layout.second_layout,container,false);

        final AdRequest adRequest = new AdRequest.Builder().build();
        mInterstitialAd = new InterstitialAd(getActivity());
        mInterstitialAd.setAdUnitId("MYID");
        mInterstitialAd.loadAd(adRequest);
        mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                super.onAdLoaded();
                if(mInterstitialAd.isLoaded()){
                    mInterstitialAd.show();
                }

            }

            @Override
            public void onAdClosed() {
            }
        });


        return rootView;
    }

但问题是,广告突然出现3秒延迟,这就是为什么我收到AdMob的邮件,我必须正确设置插页式广告,而不是像以前那样。

所以我的问题是,在这种情况下你会做什么?你会在哪里设置InterstitialAd?

这是我的应用程序,带有声音按钮的3个片段:https://gyazo.com/1ecd359b38fcfe0606bb3e74b684f16e

1 个答案:

答案 0 :(得分:0)

从您的代码中,您要求加载广告,然后在加载广告时展示该广告。

加载广告总是有延迟,因此我的建议是先加载您的广告背景而不是展示该广告。每当您想要展示广告,只有支票是您的插页式广告已准备好展示,如果是则显示。

在后台立即致电createInterstitial(),之后每当您想要展示插页式广告时,请致电showInterstitial()

public void crateInterstitial(){

    interstitialAd = new InterstitialAd(this.activity);
    interstitialAd.setAdUnitId(AD_UNIT_ID_INTERSTITIAL);
    interstitialAd.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            // not call show interstitial ad from here            
        }

        @Override
        public void onAdClosed() {
              loadInterstitial(); 
         }
      });
    loadInterstitial();
}

public void loadInterstitial(){

     AdRequest interstitialRequest = new AdRequest.Builder().build();
     interstitialAd.loadAd(interstitialRequest);
}

public void showInterstitial(){
     if (interstitialAd.isLoaded()) 
          interstitialAd.show();                          
     else 
         loadInterstitial();                                                      
}