2017-12-09 2 views
0

Dies ist meine Belohnung Video-Code. Was ich tun möchte, ist ein Knopf mit jedem Klick lädt ein Belohnungsvideo. Die Probleme, die mir gegenüberstanden, sind erstens das Belohnen des Video-Ladevorgangs viel Zeit zum Laden und zweitens das Belohnen-Video, das manchmal nur einmal angefordert wird. Was ist der richtige Weg, um ein Belohnungsvideo bei jedem Klick ohne Verzögerung zu starten?Admob Reward Video Ad

rewardedVideoAd = MobileAds.getRewardedVideoAdInstance(MainActivity.this); 
rewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build()); 
     rewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener() { 
      @Override 
      public void onRewarded(RewardItem reward) { 

      } 

      @Override 
      public void onRewardedVideoAdLeftApplication() {} 

      @Override 
      public void onRewardedVideoAdClosed() {} 

      @Override 
      public void onRewardedVideoAdFailedToLoad(int errorCode) { 
       rewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917",new AdRequest.Builder().build()); 
      } 

      @Override 
      public void onRewardedVideoAdLoaded() {} 

    @Override 
    public void onRewardedVideoAdOpened() {} 

    @Override 
    public void onRewardedVideoStarted() { 
     rewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917",new AdRequest.Builder().build()); 
    } 
}); 

und dies ist meine Schaltfläche auf Klick-Code

if (rewardedVideoAd.isLoaded()){ 
    rewardedVideoAd.show(); 
} 
+1

Wo rufen Sie 'MobileAds.initialize (...)'? – MatPag

Antwort

0

ich kann Video Belohnung Anzeigen (nur Testanzeigen) mit folgendem Code zeigt.

public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener { 
private RewardedVideoAd mRewardedVideoAd; 

private InterstitialAd mInterstitialAd; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    MobileAds.initialize(this, getResources().getString(R.string.app_id)); 

    // Use an activity context to get the rewarded video instance. 
    mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); 
    mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", 
      new AdRequest.Builder().build()); 
    //getResources().getString(R.string.Video_reward_ad_unit_id) 
    mRewardedVideoAd.setRewardedVideoAdListener(this); 

    findViewById(R.id.btVideo).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (mRewardedVideoAd.isLoaded()) { 
       mRewardedVideoAd.show(); 
      } 
     } 
    }); 

    mInterstitialAd = new InterstitialAd(MainActivity.this); 
    mInterstitialAd.setAdUnitId(getResources().getString(R.string.banner_ad_unit_id)); 

    mInterstitialAd.loadAd(new AdRequest.Builder().build()); 


    mInterstitialAd.setAdListener(new AdListener() { 
     @Override 
     public void onAdClosed() { 
      // Load the next interstitial. 
      mInterstitialAd.loadAd(new AdRequest.Builder().build()); 
      mInterstitialAd.show(); 
     } 

    }); 

    findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 


      if (mInterstitialAd.isLoaded()) { 
       mInterstitialAd.show(); 
      } else { 

       Log.d("TAG", "The interstitial wasn't loaded yet."); 
      } 
      mInterstitialAd.loadAd(new AdRequest.Builder().build()); 
     } 
    }); 

} 

@Override 
protected void onStart() { 
    loadTestRewardedVideoAd(); 
    MobileAds.setAppMuted(true); 
    super.onStart(); 
} 


private void loadTestRewardedVideoAd() { 
    mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", 
      new AdRequest.Builder().build()); 
} 

@Override 
public void onRewardedVideoAdLoaded() { 
    Log.i("onRewardedVideoAdLoaded", "Ad Loaded"); 
} 

@Override 
public void onRewardedVideoAdOpened() { 
    Toast.makeText(this, "Ad OPEPED Now ", Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onRewardedVideoStarted() { 

} 

@Override 
public void onRewardedVideoAdClosed() { 

} 

@Override 
public void onRewarded(RewardItem reward) { 

} 

@Override 
public void onRewardedVideoAdLeftApplication() { 
    Log.i("onRewardedVideoAdLeft", "END"); 

} 

@Override 
public void onRewardedVideoAdFailedToLoad(int i) { 
    Log.i("onRewardedVideoAdLeft", "END"); 
} 

aber dies funktioniert nur mit Testgerät nicht auf reales Gerät.