0

我正在尝试向使用 setContentView 的应用添加插页式广告。我已经实现了一个“监听器”,可以在需要广告时正确调用。您可以通过调用此函数“Listener”{...} 来缩写您的答案,并假设只要应用程序发出广告信号,括号内的所有内容都会发生。以下答案有一个很好的横幅广告方法。

当 setContentView() 用于 Surfaceview 时实现 Admob 横幅

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

我的代码基本上是来自链接的答案,加上这个:

...    
        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
                }
            }
        };
4

1 回答 1

0

不确定您在问什么,但与横幅广告不同,插页式广告是一个弹出窗口,它独立于基础活动的内容视图显示。

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

更新: 您可以仅在需要时预加载并显示它,在这种情况下,当玩家“死亡”时。这将减少延迟。每次显示广告后,您必须重新加载广告,以便在后续调用时显示。此外,如果您的侦听器将在非 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());             
             }  
        }
    });
                }
            }
        };
于 2015-09-28T00:01:24.990 回答