【问题标题】:AdMob interstitial not being shown when switching activity (Android)切换活动时不显示 AdMob 插页式广告 (Android)
【发布时间】:2015-03-03 10:45:56
【问题描述】:

我目前正在将 AdMob 添加到我的一些应用中,但遇到了一个问题。 我尝试在更改 Activity 时显示插页式广告,因为这不会惹恼用户。

我最初的理解是,显示广告会使活动进入暂停模式,并在广告关闭后恢复。

这个假设似乎是错误的,就像下面的代码一样,活动直接切换,吐司显示应该显示广告,但只要我不评论 startActivity(intent),我从来没有看广告。

我正在 onCreate 中加载广告,然后尝试将其显示在另一个空白处,该空白处会在单击按钮时触发(当然,如果它在该时间点完成加载)。

源码:

@Override
public void onCreate(Bundle SafedInstanceState)
{
    [...]
    LoadAd();
    [...]
}

public void ShowAd(){
    if (interstitial.isLoaded()) {
    interstitial.show();
    }
}

public void LoadAd(){
    String MY_AD_UNIT_ID=getResources().getString(R.string.AdID);
    // Create the interstitial.
    interstitial = new InterstitialAd(this);
    interstitial.setAdUnitId(MY_AD_UNIT_ID);

    // Create ad request.
    AdRequest adRequest = new AdRequest.Builder().build();

    // Begin loading your interstitial.
    interstitial.loadAd(adRequest);
}

public void SWITCHACTIVITY (View view) {
    ShowAd();
    Intent intent = new Intent (this, ANOTHERACTIVITY.class);
    startActivity(intent);
    finish();
}

非常感谢任何关于我在这里做错了什么或如何实现广告显示和活动在广告关闭后切换/关闭的意见。

提前致谢!

【问题讨论】:

  • 插页式广告不会在您加载后立即显示。您可以使用它的侦听器方法来检查广告是否已加载。但是在活动之间放置广告会改变其糟糕的用户体验。
  • 我知道它不会立即显示,这就是它在 onCreate 上加载但仅在需要时显示的原因。 (在另一个应用程序上运行良好)活动切换(在这种情况下)是应用程序中一个非常好的自然中断,因为在此之后,将为客户提供特殊服务。我对一组具有代表性的用户进行了一些调查,并查看了分析,确实,这是放置它的地方。广告不会打扰未在应用程序中使用此功能的用户,但使用它的用户会支持我并且也不介意在此处显示广告;)
  • 最佳做法是从 ANOTHERACTIVITY.class 加载您的广告并在加载时展示
  • 这将导致显示活动的结果,然后(取决于连接速度)已经可见的布局将被置于背景中并且广告接管焦点。我想避免这种情况,因为这确实会降低用户体验。首选的方法是在切换之前有广告。想我会把开关移出这个方法并在 onAdClosed() 中触发它,分别在 if (interstitial.isLoaded()) 的 else 中触发它

标签: android android-intent admob interstitial


【解决方案1】:

好的,所以我解决了这个问题。有点丑陋,但它正在做我想要它做的事情。 在调用 ShowAd() 之前,我设置了我的意图,然后在广告关闭后触发它:

public void ShowAd(){
        if (interstitial.isLoaded()) {
            interstitial.show();
            interstitial.setAdListener(new AdListener() {
            public void onAdClosed() {
                if (PostAdIntent != null)
                {
                    startActivity(PostAdIntent);
                    PostAdIntent = null;
                    finish();
                };
            }
            });

        } else
        {
            if (PostAdIntent != null)
                {
                startActivity(PostAdIntent);
                PostAdIntent = null;
                finish();
                };
        }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多