【问题标题】:AdMob loading multiple rewarded videosAdMob 加载多个奖励视频
【发布时间】:2016-10-11 00:13:30
【问题描述】:

我在 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() 时拥有一个奖励项目的侦听器?

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

此解决方案的最大问题是广告可能需要 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;
    }

}

谢谢!

【问题讨论】:

    标签: android admob


    【解决方案1】:

    你想错了。 mAd 是实例化的,只能有一个。您只需要使用mAd 的一个实例来处理功能和奖励...

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多