2016-10-11 126 views
1

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

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)并因此拥有多个单元的侦听器,那么此项目?

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

该解决方案的一个主要问题是,广告可能需要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; 
    } 

} 

谢谢!

回答

3

你正在考虑错误的方式。 mAd已实例化,只能有一个。您只需使用mAd的一个实例来处理功能和奖励...

相关问题