AdMob 加载多个奖励视频

AdMob loading multiple rewarded videos

我在 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());

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

我现在有一个解决方案设置,可以从正确的广告单元加载正确的视频,方法是仅在我知道将要显示的视频时加载它。例如,当他们打开 "Coins" 页面时,我知道他们需要 "Coins" 视频,因此使用 "Coins" 的监听​​器来奖励正确的项目。

此解决方案的最大问题是广告可能需要 10 秒才能加载,当然,许多用户会点击 "Coins" 页面并尝试在几秒钟内加载广告 - 我已经添加了我当前的代码低于此无效。

我知道我的想法是错误的,因为没有其他人遇到过这个问题:) 我已经为此工作了很长时间,如果有任何见解,我将不胜感激。谢谢!

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;
    }

}

谢谢!

你想错了。 mAd是实例化的,只能有一个。您只需要使用 mAd...

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