2016-10-11 113 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的一個實例來處理功能和獎勵...