带有 setContentView 的插页式广告

Interstitial Ad with setContentView

我正在尝试向使用 setContentView 的应用添加插页式广告。我已经实现了 "listener",可以在需要广告时正确调用。您可以通过调用此函数 "Listener"{...} 来简化您的答案,并假设只要应用发出广告信号,括号内的所有内容都会发生。下面的回答有Banner广告的好方法。

Implementing Admob banner when setContentView() is used for the Surfaceview

我的问题是,在这种情况下,我应该如何实施插页式广告?

我的代码基本上是link的答案,加上这个:

...    
        setContentView(layout);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        listener= new PropertyChangeListener() {
            @Override
            public void propertyChange(PropertyChangeEvent event) {
                if (event.getPropertyName()=="sharing1") {
                    caring();
                    game.dead=false;
                    game.sharing1=false;
                }
                if(event.getPropertyName()=="dead")
                {
                //Make an interstitial ad here
                }
            }
        };

不确定您要问什么,但与横幅广告不同,插页式广告是一种弹出式广告,它独立于底层 activity 的内容视图显示。

您可以在调用#setContentView() 之后调用您的函数。也许您应该 post 一些代码,以便我们知道您面临的具体问题

更新: 您可以预加载并仅在需要时显示它,在本例中为播放器 "dies"。这将减少延迟。每次显示广告后,您必须重新加载广告,以便在后续调用时显示它们。此外,如果您的侦听器将在非 UI 线程中调用,请使用处理程序。这是一个解决方案:

...   



  InterstitialAd interstitial; 
        setContentView(layout);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        InterstitialAd interstitial = new InterstitialAd(this);
        interstitial.setAdUnitId("your-ad-unit");
        AdRequest adRequest = new AdRequest.Builder().build();
        // Preload your interstitial to avoid load time delays 
        interstitial.loadAd(adRequest);
        listener= new PropertyChangeListener() {
            @Override
            public void propertyChange(PropertyChangeEvent event) {
                if (event.getPropertyName()=="sharing1") {
                    caring();
                    game.dead=false;
                    game.sharing1=false;
                }
                if(event.getPropertyName()=="dead")
                {
                //Make an interstitial ad here
        runOnUiThread(new Runnable() {
        @Override
        public void run() {
        if (interstitial != null && interstitial.isLoaded()){
             interstitial.show();
             //reload ad 
             interstitial.loadAd(new AdRequest.Builder().build());             
             }  
        }
    });
                }
            }
        };