我正在尝试为使用setContentView的应用添加插页式广告。我已经实现了一个“监听器”,可以在需要广告时正确调用。您可以通过调用此函数“Listener”{...}来缩写您的答案,并假设每当应用为广告发出信号时,括号内的所有内容都会出现。以下答案对横幅广告有一个很好的方法。
Implementing Admob banner when setContentView() is used for the Surfaceview
我的问题是,在这种情况下,我应该如何实现插页式广告?
我的代码基本上是链接的答案,加上:
...
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
}
}
};
答案 0 :(得分: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());
}
}
});
}
}
};