【问题标题】:How to show Interstitial ad correctly in this case?在这种情况下如何正确展示插页式广告?
【发布时间】:2017-03-31 13:15:05
【问题描述】:

我使用 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

【问题讨论】:

    标签: android popup admob ads interstitial


    【解决方案1】:

    从您的代码中,您发出加载广告的请求,然后当您的广告被加载时,您就会显示该广告。

    加载广告总是有延迟,所以我的建议是加载您的广告之前是背景,而不是显示该广告。每当您只想展示广告时,请检查您的插页式广告是否已准备好展示,如果是则展示。

    在后台立即致电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();                                                      
    }
    

    【讨论】:

    • 请解释一下我必须在哪里说“createInterstitial()”、“loadInterstitial()”和“showInterstitial”,因为我不知道在哪里做。
    • 立即调用 crateInterstitial() 之后,只要您想展示插页式广告,只需调用 showInterstitial() 方法即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    相关资源
    最近更新 更多