AdMob加载多个奖励视频

时间:2016-10-11 00:13:30

标签: android admob

我在Admob中设置了多个广告单元,每个广告单元都是一个奖励视频。我的问题是我根据观看的视频奖励不同的项目,我只能加载一个视频onCreate(),例如这只加载AD_UNIT_3的视频:

mAd.loadAd("AD_UNIT_1", new AdRequest.Builder().build());
mAd.loadAd("AD_UNIT_2", new AdRequest.Builder().build());
mAd.loadAd("AD_UNIT_3", new AdRequest.Builder().build());

如果我无法控制要显示哪个视频(AD UNIT)并因此拥有多个单元的监听器,我应该如何让一个监听器在调用onRewarded()时奖励该项目? / p>

我现在有一个解决方案设置,通过仅在我知道将要显示的视频时加载来加载来自正确广告单元的正确视频。例如,当他们打开“硬币”页面时,我知道他们需要“硬币”视频,因此使用“硬币”的听众来奖励正确的项目。

这个解决方案的一个大问题是,广告加载当然可能需要10秒钟,许多用户会点击“硬币”页面并尝试在几秒钟内加载广告 - 我已经添加了我当前的代码,而不是工作

我知道我正在考虑这个错误,因为没有其他人遇到这个问题:)我已经在这方面工作了很长时间,并希望有任何见解。谢谢!

的onCreate()

    mAd = MobileAds.getRewardedVideoAdInstance(this);

    mAd.setRewardedVideoAdListener(new RewardedVideoAdListener() {
        @Override
        public void onRewarded(RewardItem rewardItem) {
            switch(Constants.currentAd) {
                case("BUST"):
                    Log.d("AD","BUST: onRewarded()");
                    reverseBust();
                    Constants.currentAd = "";
                    break;

                case("SKIPTRAVEL"):
                    Log.d("AD","SKIPTRAVEL: onRewarded()");
                    skipTravel();
                    Constants.currentAd = "";
                    break;

                case("REMOVEHEAT"):
                    Log.d("AD","REMOVEHEAT: onRewarded()");
                    removeHeat();
                    Constants.currentAd = "";
                    break;

                case("SKIPUPGRADEDEALER"):
                    Log.d("AD","SKIPUPGRADEDEALER: onRewarded()");
                    skipUpgradeDealer();
                    Constants.currentAd = "";
                    break;

                case("SKIPDEALER"):
                    Log.d("AD","SKIPDEALER: onRewarded()");
                    //skipDealer();
                    Constants.currentAd = "";
                    break;
            }

        }
        }`

加载视频

public void loadRewardedVideos(String name) {
    switch(name) {
        case("BUST"):
            Constants.currentAd="BUST";
            mAd.loadAd("AD_UNIT_ID_1", new AdRequest.Builder().build());
            break;
        case("SKIPTRAVEL"):
            Constants.currentAd="SKIPTRAVEL";
            mAd.loadAd("AD_UNIT_ID_2", new AdRequest.Builder().build());
            break;
        case("REMOVEHEAT"):
            Constants.currentAd="REMOVEHEAT";
            mAd.loadAd("AD_UNIT_ID_3", new AdRequest.Builder().build());
            break;
        case("SKIPUPGRADEDEALER"):
            Constants.currentAd="SKIPUPGRADEDEALER";
            mAd.loadAd("AD_UNIT_ID_4", new AdRequest.Builder().build());
            break;
        case("SKIPDEALER"):
            Constants.currentAd="SKIPDEALER";
            mAd.loadAd("AD_UNIT_ID_5", new AdRequest.Builder().build());
            break;
    }

}

谢谢!

1 个答案:

答案 0 :(得分:3)

你以错误的方式思考这个问题。 mAd是实例,只能有一个。您只需使用mAd ...

的一个实例来处理功能和奖励