带有 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());
}
}
});
}
}
};
我正在尝试向使用 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());
}
}
});
}
}
};