【问题标题】:Unable to display Interstitial ads on button click单击按钮时无法显示插页式广告
【发布时间】:2017-11-06 09:27:00
【问题描述】:

有 10 个按钮,活动中的每个按钮都导航到一个新活动。我编写了一个代码来在每次单击按钮时显示一个插页式广告。 但它并不总是在点击时显示广告。

我可以知道我的代码哪里出错了吗?

代码-

public class home_activity extends AppCompatActivity implements ConnectivityReceiver.ConnectivityReceiverListener {


    private InterstitialAd mInterstitialAd;    
    private static final String TAG = "home_activity";
    private AdView mAdView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-4189677300263650/4868306863");
        mInterstitialAd.loadAd(new AdRequest.Builder().build());
        mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                mInterstitialAd.loadAd(new AdRequest.Builder().build());
            }
        });

        mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }
        public void motorcycle_btn(View view) {
        //If loaded show ad
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            //Even if Ad is not loaded show the Second Activity
            startActivity(new Intent(home_activity.this, CC_motorcycle.class));
        }
    }

    public void privatecar_btn(View view) {
        //If loaded show ad
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            //Even if Ad is not loaded show the Second Activity
            startActivity(new Intent(home_activity.this, CC_car.class));
        }
    }

    public void taxi_upto6_btn(View view) {
        //If loaded show ad
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            //Even if Ad is not loaded show the Second Activity
            startActivity(new Intent(home_activity.this, CC_motorcycle.class));
        }
    }

    public void bus_btn(View view) {
        //If loaded show ad
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            //Even if Ad is not loaded show the Second Activity
            startActivity(new Intent(home_activity.this, CC_bus.class));
        }
    }

    public void passauto_btn(View view) {
        //If loaded show ad
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            //Even if Ad is not loaded show the Second Activity
            startActivity(new Intent(home_activity.this, CC_passauto.class));
        }
    }

    public void goodsauto_public_btn(View view) {
        //If loaded show ad
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            //Even if Ad is not loaded show the Second Activity
            startActivity(new Intent(home_activity.this, pt_goodsauto_public.class));
        }
    }

    public void goodsauto_private_btn(View view) {
        //If loaded show ad
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            //Even if Ad is not loaded show the Second Activity
            startActivity(new Intent(home_activity.this, pt_goodsauto_private.class));
        }
    }

    public void commercialvehiclepublic_btn(View view) {
        //If loaded show ad
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            //Even if Ad is not loaded show the Second Activity
            startActivity(new Intent(home_activity.this, CC_commercialvehiclepublic.class));
        }
    }

    public void commercialvehicleprivate_btn(View view) {
        //If loaded show ad
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            //Even if Ad is not loaded show the Second Activity
            startActivity(new Intent(home_activity.this, CC_commercialvehicleprivate.class));
        }
    }

    public void agri_btn(View view) {
        //If loaded show ad
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            //Even if Ad is not loaded show the Second Activity
            startActivity(new Intent(home_activity.this, pt_agri.class));
        }
    }
}

P.S - 我正在尝试在项目中实施横幅广告和插页式广告。 横幅广告工作正常,但加载 Activity 后需要一些时间才能显示。

【问题讨论】:

  • 你检查的是模拟器还是真机?
  • 真实设备@Munir
  • 这可能是因为插页式广告尚未准备好显示。所以 isLoaded() if 语句遵循 else 路径。
  • 当我点击按钮导航到第二个活动并返回主活动@RabRoss时,它有时会显示广告
  • 尝试在adreuest中添加TestDevice("DEVICE_ID")

标签: android admob ads


【解决方案1】:

您用于显示插页式广告的代码就可以了。检查以下内容:

  1. 您是否已初始化 MobileAd。这样做的代码是

MobileAds.initialize(this, "YOUR_ADMOB_APP_ID");

  1. 监听 AdLoadFailure。

  2. 如果您刚刚创建广告单元,可能需要一段时间才能显示实际广告,因此请尝试使用测试广告或注册测试设备。

【讨论】:

  • 我使用了 TestDevice 现在广告在按钮点击时显示并且保持在同一个活动中。但我希望它能够导航。上面的代码没有做任何改动
  • 为此你必须在回调onAdClosed中编写startActivity代码
  • 但是我有 10 个活动。如何分别初始化它们?
【解决方案2】:

要加载插页式广告,您需要有效的互联网连接。确保互联网已打开。此外,您应该使用测试 APP PUBLISHER ID 进行开发。不要使用您的生产 APP PUBLISHER ID。

对于单独初始化,您将当前按钮 ID 存储在按钮单击时的变量中。并在 OnAdClosed() 中切换大小写以匹配要打开的特定活动。

【讨论】:

  • 互联网正常工作,我可以获得横幅广告,但我在使用插页式广告时遇到了困难!
  • 使用测试发布者 ID 进行开发
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多