按钮按下后立即显示admob interstitial?

时间:2013-10-11 13:18:00

标签: java android admob interstitial

我今天转到了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中的第二个退出按钮离开了应用程序。

谢谢!

1 个答案:

答案 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也将丢失并需要重新加载,但这在大多数设备上都不太可能,并且您有限制放在自己身上我看不到另一种选择。