奖励视频不会在第一次加载,但会在之后加载

时间:2017-07-25 21:26:33

标签: java android admob

我的应用程序有一个打开奖励视频的按钮>>当第一次按下此按钮时,它会“检查您的互联网连接”,当第二次或第三次点击时,它会显示没有问题的视频

    MobileAds.initialize(getActivity(), getString(R.string.VID_App_ID));
    mRewardVideoAd = MobileAds.getRewardedVideoAdInstance(getActivity());
    mRewardVideoAd.loadAd(getString(R.string.VID_App_Unit_ID), new AdRequest.Builder()
            .addTestDevice(getString(R.string.TestDeviceID))
            .build());
    mRewardVideoAd.setRewardedVideoAdListener(this);
    loadRewardedVideoAd();   

以下是使用的方法:

 private void loadRewardedVideoAd() {
        mRewardVideoAd.loadAd(getString(R.string.VID_App_Unit_ID), new AdRequest.Builder()
                .addTestDevice(getString(R.string.TestDeviceID))
                .build());
    }



   @OnClick(R.id.button_more_money)
    public void more_money() {
        if (mRewardVideoAd.isLoaded()) {
            mRewardVideoAd.show();
        } else
            { 
             Toast.makeText(getActivity(), "Check your internet connection", Toast.LENGTH_LONG).show();
            loadRewardedVideoAd();
               }

    }


    @Override
    public void onResume() {
        mRewardVideoAd.resume(getActivity());
        super.onResume();
        loadRewardedVideoAd();
    }

编辑:已解决 - 花了一些时间,解决方案是加载onCreate() 感谢Martin De Simone和Avi Levin

2 个答案:

答案 0 :(得分:1)

奖励视频需要一段时间才能加载,您的代码很好,第一次按下时,视频正在加载,然后当您按下时可能已加载视频。

尝试在onAdLoaded中烘烤一些东西来检查这个

答案 1 :(得分:1)

正如Martin所说,RV广告需要一段时间才能加载。基本上,它需要下载~30秒的视频,有时需要几秒钟。

我建议使用SDK提供的RewardedVideoAdListener界面,它可以帮助您了解广告何时可以展示。此外,它还可以帮助您了解AdMob奖励视频广告的生命周期。

为了使用它,您需要执行以下阶段:

  1. 在java类中实现RewardedVideoAdListener侦听器
  2. 覆盖以下方法(我使用Toast UI消息进行可视化,可以将其删除)
  3. 代码:

    @Override
    public void onRewarded(RewardItem reward) {
        Toast.makeText(this, "onRewarded! currency: " + reward.getType() + "  amount: " +
            reward.getAmount(), Toast.LENGTH_SHORT).show();
    }
    
    @Override
    public void onRewardedVideoAdLeftApplication() {
        Toast.makeText(this, "onRewardedVideoAdLeftApplication",
                Toast.LENGTH_SHORT).show();
    }
    
    @Override
    public void onRewardedVideoAdClosed() {
        Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show();
    }
    
    @Override
    public void onRewardedVideoAdFailedToLoad(int errorCode) {
        Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show();
    }
    
    @Override
    public void onRewardedVideoAdLoaded() {
        Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
    }
    
    @Override
    public void onRewardedVideoAdOpened() {
        Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show();
    }
    
    @Override
    public void onRewardedVideoStarted() {
        Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show();
    }
    

    BTW:在通话显示之前,我建议使用isLoaded()方法,以便AdMob准备好展示某些内容,例如:

    if (mAd.isLoaded()) {
        mAd.show();
    }
    

    可以在Google AdMob doc's

    中找到更多信息