RewardedVideoAd MobileAds.getRewardedVideoAdInstance(this) is deprecated. What is the new alternative?

3.7k Views Asked by At

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");
        }
        .....
        .....

    }
3

There are 3 best solutions below

1
On BEST ANSWER

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();
}
0
On

There is a new class RewardedAd that should be used instead now. See the Google API docs here.

0
On

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