RewardedVideoAd MobileAds.getRewardedVideoAdInstance(this) is deprecated. What is the new alternative?
RewardedVideoAd is deprecated. What is the new alternative?
void loadAds(){ RewardedVideoAd mRewardedVideoAd; mRewardedVideoAd.loadAd(rewarded_id, new AdRequest.Builder().build()); mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); mRewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener() { @Override public void onRewardedVideoAdLoaded() { AppUtils.showLog("REWARDED", "onRewardedVideoAdLoaded"); } ..... ..... }
This is the new way to implement new RewardVideoAds. Found via this official website.
Load an ad
import com.google.android.gms.ads.rewarded.RewardedAd; public class MainActivity extends Activity { private RewardedAd rewardedAd; @Override protected void onCreate(Bundle savedInstanceState) { ... rewardedAd = new RewardedAd(this, "ca-app-pub-3940256099942544/5224354917"); RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() { @Override public void onRewardedAdLoaded() { // Ad successfully loaded. } @Override public void onRewardedAdFailedToLoad(LoadAdError adError) { // Ad failed to load. } }; rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback); } }Show the ad
myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (rewardedAd.isLoaded()) { Activity activityContext = MainActivity.this RewardedAdCallback adCallback = new RewardedAdCallback() { @Override public void onRewardedAdOpened() { // Ad opened. } @Override public void onRewardedAdClosed() { // Ad closed. } @Override public void onUserEarnedReward(@NonNull RewardItem reward) { // User earned reward. } @Override public void onRewardedAdFailedToShow(AdError adError) { // Ad failed to display. } }; rewardedAd.show(activityContext, adCallback); } else { Log.d("TAG", "The rewarded ad wasn't loaded yet."); } } });Using RewardedAdCallback to preload the next rewarded ad
public RewardedAd createAndLoadRewardedAd() { RewardedAd rewardedAd = new RewardedAd(this, "ca-app-pub-3940256099942544/5224354917"); RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() { @Override public void onRewardedAdLoaded() { // Ad successfully loaded. } @Override public void onRewardedAdFailedToLoad(LoadAdError adError) { // Ad failed to load. } }; rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback); return rewardedAd; } @Override public void onRewardedAdClosed() { this.rewardedAd = createAndLoadRewardedAd(); }This is now deprecated too. The answer should be updated.
Here is the latest way which I have implemented recently [May - 2023]
Declare a RewardedAd:
private RewardedAd rewardedAd;Inside the onCreate(), load a rewarded ad object:
AdRequest adRequest = new AdRequest.Builder().build(); RewardedAd.load(this, "ca-app-pub-3940256099942544/5224354917", adRequest, new RewardedAdLoadCallback() { @Override public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) { // Handle the error. Log.d(TAG, loadAdError.toString()); rewardedAd = null; } @Override public void onAdLoaded(@NonNull RewardedAd ad) { rewardedAd = ad; Log.d(TAG, "Ad was loaded."); } });Show the ad:
if (rewardedAd != null) { Activity activityContext = MainActivity.this; rewardedAd.show(activityContext, new OnUserEarnedRewardListener() { @Override public void onUserEarnedReward(@NonNull RewardItem rewardItem) { // Handle the reward. Log.d(TAG, "The user earned the reward."); int rewardAmount = rewardItem.getAmount(); String rewardType = rewardItem.getType(); } }); } else { Log.d(TAG, "The rewarded ad wasn't ready yet."); }For more information, you can react out the documentation.
Rewarded ads example: Java | Kotlin
There is a new class RewardedAd that should be used instead now. See the Google API docs here.