我今天转到了AdMob。 我的问题:加载插页式广告的时间非常长(最多10秒)。
我的应用: 我有一个结果活动,用户停留约10秒钟。 在此Activty是一个完成按钮,您可以使用它返回MainActivty(在我的情况下为“Home”),这是另一个关闭应用程序的完成按钮。
我的问题: 是否可以在用户进入结果活动时加载非页内广告,并在他点击完成按钮后立即弹出?
我的代码atm:
OnCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
this.interstitialAds = new InterstitialAd(this, "xxxMyCodeIDxxx");
this.interstitialAds.setAdListener(this);}
和onClick:
@Override
public void onClick(View v) {
Result.this.finish();
startActivity(new Intent(Result.this, Home.class));
AdRequest adr = new AdRequest();
adr.addTestDevice("xxxMyCodexxx");
interstitialAds.loadAd(adr);}
和(不重要)结束:
@Override
public void onDismissScreen(Ad arg0) {
}
@Override
public void onFailedToReceiveAd(Ad ad, ErrorCode error) {
Toast.makeText(Result.this, "No ad found!", Toast.LENGTH_LONG)
.show();
}
@Override
public void onLeaveApplication(Ad arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPresentScreen(Ad arg0) {
}
@Override
public void onReceiveAd(Ad arg0) {
if (interstitialAds.isReady()) {
interstitialAds.show();
} else {
Toast.makeText(Result.this, "Interstitial ad was not ready to be shown.", Toast.LENGTH_LONG)
.show();
}
}
如果我像这样使用它,如果点击完成按钮,非页内广告会加载并弹出,但这需要10秒钟。 在这段时间里,每个人都点击了MainActivity中的第二个退出按钮离开了应用程序。
谢谢!
答案 0 :(得分:1)
您应该在较早时间加载广告,然后在结果活动结束时显示广告。
我建议在Home#onCreate中加载广告,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
this.interstitialAds = new InterstitialAd(this, "xxxMyCodeIDxxx");
this.interstitialAds.setAdListener(this);
final AdRequest adr = new AdRequest();
adr.addTestDevice("xxxMyCodexxx");
interstitialAds.loadAd(adr);
}
当点击该按钮时,启动ResultActivity,以便在完成时通知您,并在完成后显示广告(如果可用)。
private static final int MY_REQUEST_CODE = 1;
@Override
public void onClick(View v) {
// Result.this.finish(); // I don't know why you are calling this - it looks wrong.
startActivityForResult(new Intent(Result.this, Home.class), MY_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode = MY_REQUEST_CODE) {
if (interstitialAds.isReady()) {
interstitialAds.show();
} else {
Toast.makeText(Result.this, "Interstitial ad was not ready to be shown.", Toast.LENGTH_LONG).show();
}
}
}
在ResultActivity中,您需要在某个时刻调用#setResult(someValue)。我会在onCreate期间这样做。
您可能遇到的唯一问题是,如果在显示ResultActivity时收集了Home Activity,在这种情况下,InterstitialAd也将丢失并需要重新加载,但这在大多数设备上都不太可能,并且您有限制放在自己身上我看不到另一种选择。